2008-10-27 6 views
3

после нескольких часов поиска в сети Я довольно отчаянно ищут решение для этого. У меня есть &, работающий с декодером OGG Theora в DirectShow, который выпускает цветные модели YV12 и YUY2.Автоматический YUV -> RGB в DirectShow для пользовательского декодера

Теперь я хочу создать фильтр обработки пикселов RGB для этого вывода и обработать его в рендерере видео. Согласно this и this, это должно быть действительно легко и прозрачно, но это не так.

Например, я осуществил в CheckInputType() эту проверку:

if(IsEqualGUID(*mtIn->Type(), MEDIATYPE_Video) 
     && IsEqualGUID(*mtIn->Subtype(), MEDIASUBTYPE_RGB565)) 
{ 
    return S_OK; 
} 

, и я бы ожидать, что она вставляет, что MSYUV между Theora и мой декодер и сделать работу для меня (то есть преобразовать его в RGB). Проблема в том, что я получаю ошибку каждый раз (в приложении GraphEdit). И я на 100% уверен, что это YV12 в качестве входных данных (проверено в отладчике). Единственное объяснение, о котором я мог думать, это упоминание об ускорителе AVI, но дополнительной информации об этом нет.

  • Означает ли это, что мне нужно использовать контейнер AVI, если я хочу получить эту автоматическую функциональность?
  • Странно, что это работает, например, для видео WMV (с YUV на их выходе), только этот декодер OGG имеет проблемы с ним. Так что, наверное, вопрос в том, что пропускает этот декодер OGG?

Жаль, что MSYUV фильтр не работает, как Color Space Converter, т.е. видимой и непосредственно используемой в GraphEdit ...

Я ценю любой намек на это, программирование собственного YV12 -> RGB преобразователь I принять в качестве последнего средства.

ответ

3

Нет никакого конвертера цветов YUV в RGG, встроенного в Directshow. Причина, по которой файлы WMV работают на вас, заключается в том, что фильтр WMV-декодера будет выдавать RGB или YUV-данные в зависимости от типа фильтра, с которым вы его подключаете.

Лучшее, что вы можете здесь сделать, это написать фильтр конверсии в цветовом пространстве самостоятельно или просто преобразовать данные YUV после его получения.

Fourcc.org имеет хорошую статью на converting from YUV to RGB. Также в книге Video Demystified by Keith Jack есть все сведения о преобразованиях цветов.

 Смежные вопросы

  • Нет связанных вопросов^_^