Russian Qt Forum

Qt => Мультимедиа => Тема начата: Sergeich от Февраль 18, 2009, 23:48



Название: Кодирование/декодирование видео средствами OpenGL
Отправлено: Sergeich от Февраль 18, 2009, 23:48
После вдумчивого втыкания в тему кодирования/декодирования видео, активного гугления и прочтения литературы по этому вопросу, возникла неоригинальная (http://my.opera.com/Vorlath/blog/2008/01/22/opengl-pixel-shaders-and-why-the-future-of-software-depends-on-it) идея перевести основные вычисления на GPU с помощью фрагментных шейдеров. Как известно (http://en.wikipedia.org/wiki/Mpeg_2#Video_coding_.28simplified.29) (сам узнал неделю назад), кодирование видеокадра состоит из следующих этапов:
  • Преобразование цветового пространства из RGB в YUV - на этом этапе все элементарно, соответствующие шейдеры есть в  Phonon
  • Преобразование из пространственного представления в частотное с помощью DCT (http://developer.download.nvidia.com/SDK/9.5/Samples/vidimaging_samples.html#gpgpu_dct) или DWT (http://www.cse.cuhk.edu.hk/~ttwong/software/dwtgpu/dwtgpu.html) и последующая квантизация (http://en.wikipedia.org/wiki/Quantization_(image_processing))
  • Энтропийное кодирование, обычно RLE (http://en.wikipedia.org/wiki/Run-length_encoding) + Huffman (http://en.wikipedia.org/wiki/Huffman_coding). Как я понял из всего мною прочитанного, данный этап реализовывать на GPU нерентабельно в принципе, хотя какую-то подготовительную часть можно сделать и на нем
К сожалению, дело не ограничивается только такими преобразованиями (для скажем, MJPEG(веб-камеры) этого хватает), но для поддержки MPEG4 и H.264, нужна еще реализация т.н. компенсации движения (http://en.wikipedia.org/wiki/Motion_compensation) - вот с ней-то как раз и проблема.
В связи с чем вопросы:
  • Занимается/лся ли кто-нибудь из здесь присутствующих данной тематикой?
  • Как реализовать (эффективно) компенсацию движения на шейдерах (интересуют любые идеи, мысли, но лучше всего, конечно, ссылки на код  :D) ?
  • Не ошибся ли я окошком?  ;)


Название: Re: Кодирование/декодирование видео средствами OpenGL
Отправлено: crackedmind от Март 13, 2009, 10:21
Основной ресурс по теме http://www.gpgpu.org/ А вообще, такое лучше на CUDA писать.


Название: Re: Кодирование/декодирование видео средствами OpenGL
Отправлено: Barmaglodd от Март 13, 2009, 11:05
Такое уже пытаются реализовать http://www.bitblit.org/gsoc/g3dvl/index.shtml