Перейти к содержанию
    

Энтропийный декодер

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

 

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

 

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

 

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

Насколько я понимаю, в любом случае выполняется движение по дереву в результате побитного сравнения.

Какие есть варианты обработки битов пачками? Какая наилучшая организация таблиц?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

 

ндя, а в стандарте процедура кодирования не описана ? рефернсный декодер и другие декодеры в сорцах тоже не доступны для скачивания?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ндя, а в стандарте процедура кодирования не описана ? рефернсный декодер и другие декодеры в сорцах тоже не доступны для скачивания?

Все конечно же описано, и идея декодирования весьма проста, но интересуют именно пути реализации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

Насколько я понимаю, в любом случае выполняется движение по дереву в результате побитного сравнения.

Какие есть варианты обработки битов пачками? Какая наилучшая организация таблиц?

 

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

 

Суть метода простая - вход в таблицу - т.е. индекс строки это кусок ваших бит - скажем штук 11.

Каждая строка имеет полей типа:

- сколько бит "используется"

- кодовые слова для этих бит - может быть 1 или даже 2

- флаг что вы декодировали кодовое слово или же что ваших 11 бит мало (типа что то длинное попалось) и тогда дается ссылка на таблицу второго уровня.

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Суть метода простая - вход в таблицу - т.е. индекс строки это кусок ваших бит - скажем штук 11.

Каждая строка имеет полей типа:

- сколько бит "используется"

- кодовые слова для этих бит - может быть 1 или даже 2

- флаг что вы декодировали кодовое слово или же что ваших 11 бит мало (типа что то длинное попалось) и тогда дается ссылка на таблицу второго уровня.

 

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

 

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

Спасибо! Идея понятна, вроде бы так действительно выглядит оптимально.

У меня стандарт MPEG4. Если найдете код, буду признателен!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо! Идея понятна, вроде бы так действительно выглядит оптимально.

У меня стандарт MPEG4. Если найдете код, буду признателен!

 

 

Значит обновили воспоминания :).

Это тестовая реализация mpeg4-2 от момусиса так сказать. Причем походу дела там был распил бабла класический - т.е. универы что "принимали" участие в написании стандарта слегка пользовали студентов для написания кода. В итоге я так сильно плевался глядя на декодер, что энкодер уже был написал самостоятельно и без пользования референсных, простите фекалий. Почему так грубо - потому что от референсного варианта ожидается если не качества реализации, то хотя бы понятность. Т.е. пусть люди не умеют программировать, но они знают что делает алгоритм или же пусть они хорошо программируют, но им не понятен алгоритм. Но когда оба пункта совмещаются своей худшей стороной и это называется референс реализация - это как бы никуда не годится.

 

Для вас самое интересное в документе. Причем его даже номер не понятен, а то что есть сейчас в интырнете на него очень похожее, уже не содержит так сказать содержательной части. Поэтому смотрите приложеный файл - найдете там про таблицы ближе к середине.

 

Про декодер - посмотрите и сможете оценить масштабы бедствия. И это еще вычещеная часть - уже отделенная для дальнейшего "обогощения". Вот это обогощение и достанется вам в нагрузку :). Все что будет со словами "LMP1000" - это аппартно-зависимые вставки для делавшегося чипа. В кристалле были аппаратные ускорители, которые заменяли целые вычислительные блоки (аля DCT/iDCT).

В принципе вы можете найти где то в природе и незамутненую реализацию от MoMuSys - тут уж как вам будет удобне.

 

вам будут интересны файлы

vm_get_blk.c

vm_vlc_dec.c

 

и все что "к ним" / "от них" ведет.

 

Будут вопросы - задавайте, попробую еще что то вспомнить.

wXXXX.zip

vm_dec.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...