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 КБ. Осталось прикрутить звук и сделать управление посимпатичней.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

thedeemon: (Default)
Dmitry Popov

February 2026

S M T W T F S
12 34567
891011121314
15161718192021
22232425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 13th, 2026 09:10 am
Powered by Dreamwidth Studios