Изменение эталонного кода HEVC HM

Я очень новичок в области кодека HEVC. Я использую эталонный код HM версии 10.1. Моя задача - ограничить размер CU до 16x16. Итак, что я пробовал, так это то, что в файле конфигурации я установил параметры MaxCUWidth, MaxCUHeight как 16 и 16 соответственно. Это гарантирует, что максимальный размер CU ограничен 16x16. Однако следующим параметром является QuadtreeTULog2MaxSize и QuadtreeTULog2MinSize. Чтобы убедиться, что CU не разделены, т.е. чтобы сделать MinCUSize равным 16x16, я должен установить QuadtreeTULog2MaxSize и QuadtreeTULog2MinSize как 4 и 4 соответственно (эти значения я определил с помощью руководства по программному обеспечению в части документов). Следовательно, когда я дал 4 и 4 в качестве их значений, код вылетает с ошибками:

Error: Minimum CU width must be greater than minimum transform size

Error: Minimum CU Height must be greater than minimum transform size

Итак, теперь мне нужно изменить исходный код ссылки HM в функции, где анализируется входной файл конфигурации. то есть функция TAppEncCfg::xCheckParameter(). Моя проблема в том, что я не могу понять, где и как нужно изменить код, чтобы он не влиял на другие параметры. Любая помощь относительно того же будет очень ценна для меня. Пожалуйста помоги. Заранее спасибо.


person Zax    schedule 11.06.2013    source источник


Ответы (2)


Чтобы изменить размер CU на что-либо, кроме значения по умолчанию 64x64, используйте эти параметры для кодировщика TAppEncoderStatic.

--MaxCUWidth=32 \
--MaxCUHeight=32 \
--MaxPartitionDepth=2 \

Напишите мне комментарий, если вам нужна дополнительная помощь

person Fredrik Pihl    schedule 12.06.2013
comment
Спасибо за ответ. Первое, что я попробовал, это вышеуказанные изменения в файле конфигурации, но это не соответствовало моему требованию, потому что, как указано, мне нужно, чтобы размер моего CU был исправлен на 16x16, но если вышеуказанные настройки выполнены, я бы получил CU размера 16, но они будут далее делиться, чтобы сформировать TU меньших размеров. чего я не хотел. Таким образом, решение для этого заключается в том, что мне пришлось прокомментировать строку кода, где мы проверяем стоимость для NxN и устанавливаем ее стоимость на MAX, в результате было использовано 2Nx2N, а размер CU был зафиксирован на 16x16. +1 за ответ. - person Zax; 19.06.2013

Логарифмическая база 2 из 16 равна 4. Таким образом, размер вашего преобразования будет равен 16. Размер CU, который вам нужен, — это 16-й блок. Ошибка сообщает вам, что минимальная ширина/высота CU должна быть (строго) больше минимального размера преобразования. 16 ‹ 16?

Вы могли бы изменить значения утверждений в источнике? Я бы порекомендовал выполнить поиск «QuadtreeTULog2MaxSize» в TAppEncCfg.cpp. Скорее всего, это приведет вас к используемой позже переменной, а также к xConfirmPara, которую вы хотите отредактировать.

Надеюсь, это полезно.

person user204841    schedule 14.06.2013