andrex 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба Здравствуйте! Для кодека MPEG нужно написать энтропийный (или VLC) декодер. Реализован будет на сигнальном процессоре. 1. Подскажите, какая есть литература по этому вопросу. 2. Кто занимался - может быть кратко выскажете свои соображения, как лучше реализовывать с точки зрения максимального быстродействия и с точки зрения минимальной памяти. Насколько я понимаю, в любом случае выполняется движение по дереву в результате побитного сравнения. Какие есть варианты обработки битов пачками? Какая наилучшая организация таблиц? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба Здравствуйте! Для кодека MPEG нужно написать энтропийный (или VLC) декодер. Реализован будет на сигнальном процессоре. 1. Подскажите, какая есть литература по этому вопросу. 2. Кто занимался - может быть кратко выскажете свои соображения, как лучше реализовывать с точки зрения максимального быстродействия и с точки зрения минимальной памяти. ндя, а в стандарте процедура кодирования не описана ? рефернсный декодер и другие декодеры в сорцах тоже не доступны для скачивания? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrex 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба ндя, а в стандарте процедура кодирования не описана ? рефернсный декодер и другие декодеры в сорцах тоже не доступны для скачивания? Все конечно же описано, и идея декодирования весьма проста, но интересуют именно пути реализации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ryhor 0 16 ноября, 2009 Опубликовано 16 ноября, 2009 · Жалоба Здравствуйте! Для кодека MPEG нужно написать энтропийный (или VLC) декодер. Реализован будет на сигнальном процессоре. 1. Подскажите, какая есть литература по этому вопросу. 2. Кто занимался - может быть кратко выскажете свои соображения, как лучше реализовывать с точки зрения максимального быстродействия и с точки зрения минимальной памяти. Насколько я понимаю, в любом случае выполняется движение по дереву в результате побитного сравнения. Какие есть варианты обработки битов пачками? Какая наилучшая организация таблиц? VLC удобнее и быстрее всего декодировать через таблицу. Где то в интырнете есть double table decoding... что то в этом духе кажется для MPEG4-2. Я когда то делал по этой статье или там даже где то были исходники таблиц - надо поискать. Суть метода простая - вход в таблицу - т.е. индекс строки это кусок ваших бит - скажем штук 11. Каждая строка имеет полей типа: - сколько бит "используется" - кодовые слова для этих бит - может быть 1 или даже 2 - флаг что вы декодировали кодовое слово или же что ваших 11 бит мало (типа что то длинное попалось) и тогда дается ссылка на таблицу второго уровня. такой метод работает очень быстро - потому что вы вынимаете за обращение к памяти одно или два кодовых слова. И потребляет не так много памяти - потому что таблица двухуровневая и индексы не становятся магически огромными. Второй момент - то что редко (реже) встречается требует немного больше возни со вторым обращением к памяти, но на то оно и редко встречается. для какого стандарта декодируете? потому что повторюсь для MPEG4-2 у меня оно должно быть где то в закромах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrex 0 17 ноября, 2009 Опубликовано 17 ноября, 2009 · Жалоба VLC удобнее и быстрее всего декодировать через таблицу. Где то в интырнете есть double table decoding... что то в этом духе кажется для MPEG4-2. Я когда то делал по этой статье или там даже где то были исходники таблиц - надо поискать. Суть метода простая - вход в таблицу - т.е. индекс строки это кусок ваших бит - скажем штук 11. Каждая строка имеет полей типа: - сколько бит "используется" - кодовые слова для этих бит - может быть 1 или даже 2 - флаг что вы декодировали кодовое слово или же что ваших 11 бит мало (типа что то длинное попалось) и тогда дается ссылка на таблицу второго уровня. такой метод работает очень быстро - потому что вы вынимаете за обращение к памяти одно или два кодовых слова. И потребляет не так много памяти - потому что таблица двухуровневая и индексы не становятся магически огромными. Второй момент - то что редко (реже) встречается требует немного больше возни со вторым обращением к памяти, но на то оно и редко встречается. для какого стандарта декодируете? потому что повторюсь для MPEG4-2 у меня оно должно быть где то в закромах. Спасибо! Идея понятна, вроде бы так действительно выглядит оптимально. У меня стандарт MPEG4. Если найдете код, буду признателен! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ryhor 0 18 ноября, 2009 Опубликовано 18 ноября, 2009 · Жалоба Спасибо! Идея понятна, вроде бы так действительно выглядит оптимально. У меня стандарт MPEG4. Если найдете код, буду признателен! Значит обновили воспоминания :). Это тестовая реализация mpeg4-2 от момусиса так сказать. Причем походу дела там был распил бабла класический - т.е. универы что "принимали" участие в написании стандарта слегка пользовали студентов для написания кода. В итоге я так сильно плевался глядя на декодер, что энкодер уже был написал самостоятельно и без пользования референсных, простите фекалий. Почему так грубо - потому что от референсного варианта ожидается если не качества реализации, то хотя бы понятность. Т.е. пусть люди не умеют программировать, но они знают что делает алгоритм или же пусть они хорошо программируют, но им не понятен алгоритм. Но когда оба пункта совмещаются своей худшей стороной и это называется референс реализация - это как бы никуда не годится. Для вас самое интересное в документе. Причем его даже номер не понятен, а то что есть сейчас в интырнете на него очень похожее, уже не содержит так сказать содержательной части. Поэтому смотрите приложеный файл - найдете там про таблицы ближе к середине. Про декодер - посмотрите и сможете оценить масштабы бедствия. И это еще вычещеная часть - уже отделенная для дальнейшего "обогощения". Вот это обогощение и достанется вам в нагрузку :). Все что будет со словами "LMP1000" - это аппартно-зависимые вставки для делавшегося чипа. В кристалле были аппаратные ускорители, которые заменяли целые вычислительные блоки (аля DCT/iDCT). В принципе вы можете найти где то в природе и незамутненую реализацию от MoMuSys - тут уж как вам будет удобне. вам будут интересны файлы vm_get_blk.c vm_vlc_dec.c и все что "к ним" / "от них" ведет. Будут вопросы - задавайте, попробую еще что то вспомнить. wXXXX.zip vm_dec.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrex 0 18 ноября, 2009 Опубликовано 18 ноября, 2009 · Жалоба Спасибо! Скоро начну изучать :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться