2016-08-17 16 views
1

Я работаю с кодеком OpenH264. OpenH264 использует кодирование Exp-Golomb для информации, относящейся к заголовку. Я изучил несколько веб-сайтов и собрал небольшую информацию об кодировании Exp-Golomb. OpenH264 использует 4 типа методов кодирования Exp-Golomb. К ним относятся:Методы Exp-Golomb CodeWord Построение и анализ

  • 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 - пау (2, M) = 226 + 1 - 128 = 99 = (1100011) в двоичном
Таким образом,
кодового слова = 0000000 1 1100011 [M-нули, 1 игнорируя бит, INFO]

Синтаксический: Пусть У нас есть CodeWord = 000000011100011
Code_Num = pow (2, M) + INF O - 1 = 128 + 99 - 1 = 226

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

ответ

1

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

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

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

Во всяком случае, вы можете найти информацию о чтении подписали коды Экспоненциальной-Голомбу на wiki page:

но реальные быстрых ТЛ, д-р является 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-Голомбы) Подпись Exp-Голомб использует co полностью различная система.

Edit:

Подключенный Exp-Голомбы точно так же, как беззнаковое Exp-Голомбы, плюс табличной.

Усеченного Exp-Голомб такого же, как стандартный РИСА аки одноместный кодирование, за исключением стоп-бит равен 0.

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