Есть вот такая задачка: нужно создать видеофайл из серии серых 16 битных картинок.
Технически всё что у меня есть — это callback функция, где я получаю указатель на область памяти с картинкой. Функция вызывается тридцать раз в секунду. Картинка размером 1024x1024 точки, 16 бит. Ну то есть 60 MB в секунду видеопоток. Его-то и надо скидывать в видеофайл. При этом должно происходить сжатие (с потерей качества), степень сжатия должна регулироваться. Формат контейнера не очень важен, плейер всё равно будет проприетарный. Способ сжатия типа MPEG4 мне бы подошёл. Кодирование/декодирование должно осуществляться в реальном времени на доступном по мощности компе.
Из рассмотренных навскидку возможностей решения задачки:
— тупо жать картинки по одной JPEG2000. Пока не удаётся достичь приемлемой скорости. Уходит 60-80 мс на картинку, а надо 20-30.
— взять исходники xvid и расковырять — убрать цветовую компоненту, оставить только яркостную и добить её до 16 бит (сейчас там вроде 12 бит). Там всё довольно круто накручено, в исходники лезть как-то не хочется. 8 бит кодирование в xvid меня устраивает и по скорости и по качеству.
— воспользоваться интеловской IPP. Там все видео функции тоже на цвет завязаны. В первом приближении 16 ти битных функция я не увидел, да и сложно там как-то.
— воспользоваться коммерческим кодеком типа LEAD LGRY. Заставить его работать пока не удалось. Объяснения инженера LEAD были очень запутанные (соедините входной пин кодека с выходным пином источника... а меня всего-то только указатель есть).
— есть ещё вроде dirac кодек — пока не пробовал.
Может кто-нибудь уже решал подобную задачку? В каком направлении лучше всего двигаться?