Внедрение новых режимов внутреннего прогнозирования в hevc x265

Я аспирант, в настоящее время работаю над расширением современных кодеков сжатия изображений и видео для достижения лучшей производительности. Я сейчас работаю над модификацией БПГ(Лучшая портативная графика) и x265 (реализация HEVC / H.265).

Мой текущий подход предусматривает добавление дополнительных режимов внутреннего прогнозирования, которые могут использовать большее количество информации, чем только 1 пиксельная строка от CTU (Единицы дерева кодирования) выше и 1 пиксельная колонка от CTU слева.

Я реализовал свой подход и назвал мой режим внутрикадрового прогнозирования как «35» (BPG и hevc используют режимы от 0 до 34). Мой текущий подход требует, чтобы я сохранял два дополнительных числа (12 бит) каждый раз, когда я использую свой режим внутреннего предсказания. Я сталкиваюсь с проблемами при встраивании этих двух чисел в поток битов (кодирование) и при извлечении их из потока битов (декодирование).

Я модифицировал функцию codeIntraDirLumaAng в entropy.cpp из пакета x265, который поставляется с BPG, так что он записывает два дополнительных числа, когда он сталкивается с моим новым режимом внутреннего предсказания 35.

Мой набор вопросов заключается в следующем.

1) Учитывая, что у меня есть большее количество режимов прогнозирования, и я ожидаю, что они увеличатся еще больше, я должен изменить следующую строку кода

encodeBinsEP(dir[j], 5);

быть

encodeBinsEP(dir[j], 6);

2) Когда я запускаю декодер, он впервые сталкивается с экземпляром, в котором он должен был сохранить режим 35. Он не может прочитать его, вместо этого он читает режим 26. Я полагаю, это из-за процедуры деривации Intra-Luma Pred-Dir в hevc? (Любые входные данные о том, как правильно встроить мой новый режим внутреннего предсказания в поток битов, чтобы его можно было правильно прочитать)?

3) Должен ли я что-то делать с состояниями CABAC для двух дополнительных чисел, которые я кодирую? Я создал дополнительный контекст для обработки этого нового вида информации. Я был бы признателен за указатели на то, как установить значение переменной NUM_STATES_CTX, которую я определил дополнительно, и как использовать CABAC для наилучшего кодирования этих двух чисел?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]