views:

1548

answers:

1

Hello everybody,

after hours of searching on the net I'm quite desperate to find solution for this. I've up & running OGG Theora decoder in DirectShow which ouputs YV12 and YUY2 color models. Now, I want to make a RGB pixel manipulation filter for this output and to process it into video renderer. According to http://msdn.microsoft.com/en-us/library/ms940088.aspx and http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3134367&SiteID=1 it should be really easy and transparent but -- it isn't.

For example, I implent in CheckInputType() this check:

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

and I would expect it inserts that MSYUV between Theora and my decoder and do the job for me (i.e. convert it into RGB). The problem is I got error everytime (in GraphEdit application). And I'm 100% sure it's YV12 as input (checked in debugger). Only explanation I could think of is that mention of AVI decompressor but there's no further info about it. Does it mean I have to use AVI container if I want to get this automatic functionality?

Strange thing is it works for example for WMV videos (with YUV on their ouput), only this OGG decoder has a problem with it. So it's probably a question what this OGG decoder miss?

Too bad that MSYUV filter doesn't work as the Color Space Converter, i.e. visible and directly usable in GraphEdit...

I appreciate any hint on this, programming own YV12 -> RGB converter I take as the last resort.

Thanks in advance!

+2  A: 

There is no YUV to RGG colorspace converter built into Directshow. The reason that WMV files are working for you is that the WMV decoder filter will spit out RGB or YUV data depending on the type of filter you connect it too.

The best you can do here is write a colorspace converter filter yourself, or just convert the YUV data after you get it.

Fourcc.org has nice article on converting from YUV to RGB. Also the book Video Demystified by Keith Jack has all the details on colorspace conversions.

Nick Haddad