Планарный и постоянный режим в эталонном программном обеспечении

Я просматриваю часть внутреннего прогнозирования эталонного программного обеспечения HEVC. Я вижу интерпрогнозирование и интрапрогнозирование в методе xCompressCU в файле TEncCu.cpp. Но я не могу найти место, где рассчитываются планарные и постоянные моды. Где эти режимы в эталонном ПО? Может кто-то помочь мне с этим?


person harsh    schedule 15.12.2017    source источник


Ответы (1)


Для DC и всех угловых режимов найдите функцию xPredIntraAng в файле TComPrediction.cpp. Там выполняются эти внутрирежимные режимы.

Для планара есть еще одна функция, вероятно, называемая xPredIntraPlanar. Хотя я не уверен в названии. У меня сейчас нет доступа к коду. Но если вы найдете первую функцию, эта должна быть рядом с ней в файле TComPrediction.cpp.

Удачи.

person Mosen    schedule 16.12.2017
comment
Большое спасибо за ответ. Да, вы правы в отношении имени планарного метода, это xPredIntraPlanar. :-) Но я не могу найти где расчет стоимости планарного режима. Я имею в виду стоимость RD для планарного режима. Извините, если я не ясно выразился в вопросе, я хочу рассчитать стоимость RD, чтобы я мог отключить все другие направленные режимы и получить стоимость только для этого. Можете ли вы прояснить это для меня, пожалуйста? Большое спасибо за помощь. - person harsh; 16.12.2017
comment
RDCost в основном рассчитывается где-то еще. Как вы могли видеть, функции, которые я упомянул, отвечают за шаг предсказания. Однако для полного расчета RDCost вам необходимо квантовать и преобразовать остаток. Затем рассчитайте скорость и искажение. Это делается за два или три уровня до функций предсказания. Опять же, поскольку у меня нет доступа к коду, все, что я говорю, не совсем точно. -› следующий комментарий - person Mosen; 16.12.2017
comment
Я предлагаю вам найти все вхождения функции xGetIntraBitsQtLuma (или что-то очень похожее) в коде. Эта функция дает вам количество битов для текущего CU и обычно находится в нескольких строках от расчета искажения, а затем полного расчета RDCost. Насколько я помню, функция расчета RDCost называется CalcRdCost. Обратите внимание, что я подчеркнул полную стоимость RDCost, чтобы вы не перепутали ее с приблизительной оценкой стоимости на основе Адамара. - person Mosen; 16.12.2017
comment
Большое спасибо @Mohsen. Грубая оценка стоимости на основе Адамара выполняется в цикле, который продолжается для всех внутренних режимов, верно? Я обнаружил, где рассчитывается стоимость RD, но это происходит после того, как все режимы выполнены для расчета CandNum. Разве я не могу делать только планарные или DC RD расчеты, не заходя в этот цикл? И что это за CandNum? Пожалуйста, дайте мне ответ на них. Большое спасибо. - person harsh; 16.12.2017
comment
@harsh, если вы имеете дело с CandNum, вы, вероятно, все еще находитесь в части оценки затрат на основе Адамара. Найдите цикл for после этих, где итератор зацикливается на NumFullRDModes. - person Mosen; 17.12.2017
comment
Хорошо, я посмотрю на это. Большое спасибо. - person harsh; 17.12.2017
comment
Это numModesForFullRD. Большое спасибо. - person harsh; 17.12.2017