После вдумчивого втыкания в тему кодирования/декодирования видео, активного гугления и прочтения литературы по этому вопросу, возникла
неоригинальная идея перевести основные вычисления на GPU с помощью фрагментных шейдеров. Как
известно (сам узнал неделю назад), кодирование видеокадра состоит из следующих этапов:
- Преобразование цветового пространства из RGB в YUV - на этом этапе все элементарно, соответствующие шейдеры есть в Phonon
- Преобразование из пространственного представления в частотное с помощью DCT или DWT и последующая квантизация
- Энтропийное кодирование, обычно RLE + Huffman. Как я понял из всего мною прочитанного, данный этап реализовывать на GPU нерентабельно в принципе, хотя какую-то подготовительную часть можно сделать и на нем
К сожалению, дело не ограничивается только такими преобразованиями (для скажем, MJPEG(веб-камеры) этого хватает), но для поддержки MPEG4 и H.264, нужна еще реализация т.н.
компенсации движения - вот с ней-то как раз и проблема.
В связи с чем вопросы:
- Занимается/лся ли кто-нибудь из здесь присутствующих данной тематикой?
- Как реализовать (эффективно) компенсацию движения на шейдерах (интересуют любые идеи, мысли, но лучше всего, конечно, ссылки на код ) ?
- Не ошибся ли я окошком?