AVM2

Feb. 16th, 2011 11:56 pm
thedeemon: (Default)
[personal profile] thedeemon
Сейчас доделываем Flash-based проигрыватель для видео, сжатого лучшим в мире кодеком для экранного видео. Для него как раз делался парсер из предыдущего поста. Декодер был переведен с С++ на haXe. Тот компилирует в байткод AVM2 - виртуальной машины, используемой в 9 и 10-м флэше. Дальше ВМ его на клиенте уже JIT'ит и выполняет. Причем байткод имеет стековую ОО семантику (а-ля JVM) с минимумом типизации (например, для сложения есть отдельные команды для интов, а для сравнения уже нет, только общие, рассчитанные на определение типа в рантайме). JIT'у приходится типы выводить. Сегодня немного посравнивал скорость и впечатлился: декодер на haXe & Flash player отличается по скорости от C++ & Intel compiler всего процентов на 20. А вы говорите флэш тормозит.

Демку проигрывателя можно пощупать тут:
http://data.infognition.com/sp_demo/

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

Флэшка с декодером, парсером и логикой плеера сейчас занимает меньше 20 КБ. Осталось прикрутить звук и сделать управление посимпатичней.

Date: 2011-02-17 08:23 am (UTC)
From: [identity profile] sleepy-drago.livejournal.com
ну смотрите. если кто-то не видит возможность - это не значит что ее нет :) а инженерам которым умных алгоритмов не показывали тоже кушать хочецца ;)

я сам сейчас такое наблюдаю для 2d scanline, пока все четко уверены что не параллелится :)

Date: 2011-02-17 12:10 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Ключевое слово тут - range coder. Если есть мысли, как он может быть локально распараллелен, буду счастлив услышать!

Date: 2011-02-17 09:14 pm (UTC)
From: [identity profile] sleepy-drago.livejournal.com
тут как обычно вопрос баланса :) люди уровня C.Bloom'а существуют - значит это возможно и на странных девайсах типа cell. Поскольку я на такие бабки и не претендую то давайте сделаем микробенчмарк если оно надо ессно. С прошлым было весело. Нынешняя ситуация у меня такая что все равно надо будет переучиваться так как ни верификация сбис, ни плюсы, ни vtune в родных краях не востребованы практически - почему бы не попробовать мозги поразмять :)

Date: 2011-02-18 04:58 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Хм. Не понял связи между Блумом и Cell.
Про микробенчмарк подумаю, как его лучше сформулировать.

Date: 2011-04-25 08:09 am (UTC)
From: [identity profile] sleepy-drago.livejournal.com
мысли иногда можно найти случайно гуляя в интернете :)
http://encode.ru/threads/1200-Vectorized-rangecoder тема всплыла в связи с тем что какойто росийский stlab хочет запатентовать нечто подобное как часть декодирования видео :)

Date: 2011-04-25 09:01 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Спасибо за ссылки! Посмотрю на досуге. Поверхностный взгляд говорит, что выигрыш по скорости в 15% не стоит налагаемых ограничений.

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

Profile

thedeemon: (Default)
Dmitry Popov

December 2025

S M T W T F S
 12 3456
789101112 13
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 25th, 2026 05:14 pm
Powered by Dreamwidth Studios