реклама на сайте
подробности

 
 
> Энтропийный декодер
andrex
сообщение Nov 13 2009, 08:59
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 20-01-09
Пользователь №: 43 650



Здравствуйте!

Для кодека MPEG нужно написать энтропийный (или VLC) декодер. Реализован будет на сигнальном процессоре.

1. Подскажите, какая есть литература по этому вопросу.

2. Кто занимался - может быть кратко выскажете свои соображения, как лучше реализовывать с точки зрения максимального быстродействия и с точки зрения минимальной памяти.
Насколько я понимаю, в любом случае выполняется движение по дереву в результате побитного сравнения.
Какие есть варианты обработки битов пачками? Какая наилучшая организация таблиц?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ryhor
сообщение Nov 16 2009, 13:17
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 3-04-06
Пользователь №: 15 742



Цитата(andrex @ Nov 13 2009, 12:59) *
Здравствуйте!

Для кодека MPEG нужно написать энтропийный (или VLC) декодер. Реализован будет на сигнальном процессоре.

1. Подскажите, какая есть литература по этому вопросу.

2. Кто занимался - может быть кратко выскажете свои соображения, как лучше реализовывать с точки зрения максимального быстродействия и с точки зрения минимальной памяти.
Насколько я понимаю, в любом случае выполняется движение по дереву в результате побитного сравнения.
Какие есть варианты обработки битов пачками? Какая наилучшая организация таблиц?


VLC удобнее и быстрее всего декодировать через таблицу. Где то в интырнете есть double table decoding... что то в этом духе кажется для MPEG4-2. Я когда то делал по этой статье или там даже где то были исходники таблиц - надо поискать.

Суть метода простая - вход в таблицу - т.е. индекс строки это кусок ваших бит - скажем штук 11.
Каждая строка имеет полей типа:
- сколько бит "используется"
- кодовые слова для этих бит - может быть 1 или даже 2
- флаг что вы декодировали кодовое слово или же что ваших 11 бит мало (типа что то длинное попалось) и тогда дается ссылка на таблицу второго уровня.

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

для какого стандарта декодируете? потому что повторюсь для MPEG4-2 у меня оно должно быть где то в закромах.
Go to the top of the page
 
+Quote Post
andrex
сообщение Nov 17 2009, 10:47
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 20-01-09
Пользователь №: 43 650



Цитата(ryhor @ Nov 16 2009, 19:17) *
VLC удобнее и быстрее всего декодировать через таблицу. Где то в интырнете есть double table decoding... что то в этом духе кажется для MPEG4-2. Я когда то делал по этой статье или там даже где то были исходники таблиц - надо поискать.

Суть метода простая - вход в таблицу - т.е. индекс строки это кусок ваших бит - скажем штук 11.
Каждая строка имеет полей типа:
- сколько бит "используется"
- кодовые слова для этих бит - может быть 1 или даже 2
- флаг что вы декодировали кодовое слово или же что ваших 11 бит мало (типа что то длинное попалось) и тогда дается ссылка на таблицу второго уровня.

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

для какого стандарта декодируете? потому что повторюсь для MPEG4-2 у меня оно должно быть где то в закромах.

Спасибо! Идея понятна, вроде бы так действительно выглядит оптимально.
У меня стандарт MPEG4. Если найдете код, буду признателен!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 14:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01415 секунд с 7
ELECTRONIX ©2004-2016