Я некоторое время работаю над справочным программным обеспечением HM, чтобы улучшить что-то в части внутреннего предсказания. Теперь к коду добавляется новый алгоритм внутреннего предсказания, и я позволяю кодеру выбирать между моим алгоритмом и алгоритмом по умолчанию HM (в соответствии с RDCost
, конечно).Как добавить новый синтаксический элемент в HM (тестовая модель HEVC)
Теперь мне нужно сигнализировать флаг для каждого PU, чтобы декодер мог выполнять тот же алгоритм, что и кодер, принимающий решение в цикле коррекции скорости.
Я хочу знать, что именно следует делать, чтобы правильно добавить этот бит в поток, не нарушая ничего в коде.
Предполагая, что я хочу использовать контекст CABAC модель, чтобы сохранить трек статистики моего флага, что еще я должен сделать:
- добавления нового контекста модели, как
ContextModel3DBuffer m_cCUIntraAlgorithmSCModel
в файлTEncSbac.h
. - правильная инициализация модели (как на стороне кодера, так и на стороне декодера), посмотрев, как HM инициализирует другие контекстные модели.
- , вызывающий функцию
m_pcBinIf->encodeBin(myFlag, cCUIntraAlgorithmSCModel)
иm_pcTDecBinIfdecodeBin(myFlag, cCUIntraAlgorithmSCModel)
со стороны датчика и декодера соответственно.
Я делаю эти три шага, но, видимо, это что-то ломает.
PS: Даже равновероятная сигнализация (т. Е. Без использования контекстов CABAC) будет полезна. Я просто хочу отправить этот флаг мирным путем!
Заранее спасибо.