Эталонное программное обеспечение HEVC: модификация для кодирования CTU построчно вместо сегментов срезов - PullRequest
0 голосов
/ 11 мая 2018

Заглянув в Void TEncSlice::encodeSlice официального программного обеспечения HM Test, я обнаружил, что в цикле кодер пытается кодировать каждый CTU внутри сегмента слайса, то есть 512 CTU в уникальном слайсе в моем примере сценария.

for( UInt ctuTsAddr = startCtuTsAddr; ctuTsAddr < boundingCtuTsAddr; ++ctuTsAddr )

Если я хотел бы кодировать кадр за строкой (т. Е. Реализовывать кодирование волнового фронта), следует ли изменить сегмент слайса, чтобы он был равен ширине кадра, или это неправильный подход?

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Во-первых, да, количество CTU в каждой строке равно ceil (picWidth / CTUsize).

Теперь, возвращаясь к вашему вопросу, вы хотите сжимать / кодировать строки CTU параллельно. Для этого вы предлагаете установить ширину среза равной ширине изображения и установить высоту среза на высоту CTU (размер). Затем вы хотите реализовать идею WPP и сжимать / кодировать срезы в конвейере с задержкой в ​​один CTU относительно вышеупомянутого среза. Эта идея должна работать, если вы правильно обрабатываете (т.е. удаляете) все зависимости контекстных моделей CABAC, если они есть.

0 голосов
/ 12 мая 2018

Пожалуйста, используйте знаки препинания.Было довольно сложно прочитать ваш вопрос.

Если я правильно понял, одно из возможных решений вашей проблемы - заставить HM кодировать каждый кадр ровно одним срезом.Затем CTU в вашем кадре будет сканироваться растром (т.е. построчно).

Насколько я помню, это настройка HM по умолчанию.Итак, я думаю, что вы должны сказать нам, какой у вас текущий скан?Насколько велика ваша рамка?Ваш текущий размер среза?

...