Fast conversion from YUY2 to RGB24
I'm writing a program, that will do some transformations with image from a webcam in real-time. As almost all other webcams, my noname gives data in YUY2 format (as written in bmiHeader.biCompression). I tried straight conversion on CPU side according to http://www.fourcc.org/yuv.php#YUY2, but it is VERY slow and wrong :).
When I connect source output pin to renderer, picture and framerate are well.
So I'm looking for a DirectShow filter, or, maybe, some codec, that will do fast conversion from YUY2 to RGB24 on video card and will give me result without rendering it on screen.
I'm using:
- 32 bit Windows XP SP3.
- VC++ 2005
- Recently downloaded Wi开发者_如何学运维ndows SDK.
- DirectX August'09.
I don't have the code available at the moment. but take a look at using the GDI to do the conversion its very fast.
Basically capture the source frame, create a memory dib in the correct format (rgb24) and blit to the bitmap. the conversion occurs during the blitting and in my experience is very fast.
I use this to grab frames from a webcam and then I can drop the frames to the hard drive at the required frame rate as either jpegs or bitmaps.
DC
You can use VirtualDub Kasumi library http://virtualdub.sourceforge.net/
精彩评论