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