Методы построения и разбора Exp-Golomb CodeWord

Я работаю с кодеком OpenH264. OpenH264 использует Exp-Golomb Coding для информации, связанной с заголовком. Я изучил несколько веб-сайтов и собрал немного информации о Exp-Golomb Coding. OpenH264 использует 4 типа методов кодирования Exp-Golomb. Они есть:

  • Ue [Когда значения являются только неотрицательными величинами]
  • Te [когда значения только 1 или 0]
  • Se [когда значения являются как отрицательными, так и положительными величинами]
  • Me [когда значения стандартная кодовая карта определяется для значений]

Я научился строить или анализировать методом Ue.

Формат синтаксиса для Exp-Golomb(Ue) = [M-Zeros][1][INFO].

Конструкция: Предположим, у нас есть Code_Num = 226.
Сейчас,
M = этаж (log2(Code_Num)) = этаж (log2 (226)) = 7
INFO = Code_Num + 1 - pow (2, M) = 226 + 1 - 128 = 99 = (1100011) в двоичном формате
Так,
CodeWord = 0000000 1 1100011 [M-нули, 1 игнорирующий бит, INFO]

Разбор: Предположим, у нас есть CodeWord = 000000011100011
Code_Num = pow (2, M) + INFO - 1 = 128 + 99 - 1 = 226

Теперь я могу вычислить Exp-Golomb(Ue). Но я хочу изучить все теории, связанные с Se, Te и Me. Но я не могу найти какие-либо ресурсы для других методов. Пожалуйста, помогите мне.

1 ответ

OpenH264 является реализацией видеокодека H.264/AVC.

AVC использует кодирование Exp-Golomb в различных заголовках, так же как и во всех совместимых кодировщиках.

Кроме того, te(v) расшифровывается как усеченное кодирование по экспоненциальному голомбу.

В любом случае, вы можете найти информацию о прочтении подписанных кодов Exponential-Golomb на вики-странице:

но очень быстро tl;dr это 0 = 1, 1 = 010, -1 = 011 и т. д.

что касается этого беспорядка:

M = floor(log2(Code_Num)) = floor(log2(226)) = 7 INFO = Code_Num + 1 - pow(2,M) = 226 + 1 - 128 = 99 = (1100011) in Binary So, CodeWord = 0000000 1 1100011 [M-zeros, 1 ignoring bit, INFO]

Это не совсем точно, вы должны добавить 1 во время кодирования и вычесть 1 во время декодирования (только для беззнакового Exp-Golomb), Signed Exp-Golomb использует совершенно другую систему.

Редактировать:

Сопоставленный Exp-Golomb точно такой же, как и Unsigned Exp-Golomb, плюс поиск в таблице.

Усеченный Exp-Golomb аналогичен стандартному кодированию RICE, известному как Unary, за исключением того, что стоповый бит равен 0.

Если вам не хочется создавать свои собственные декодеры / кодировщики, взгляните на мой проект BitIO, потому что я их уже написал, особенно функции ReadRICE/WriteRICE и ReadExpGolomb/WriteExpGolomb, BitIO на Github

Другие вопросы по тегам