Felix
Felix

Reputation: 21

Encoding RGB to H.264

What I am doing is trying to record the screen in windows XP and Win7. I got the bitmap by using DirectX's interface CreateOffscreenPlainSurface and GetFrontBufferData. I need to encode the bitmap into a H.264 format video. The problem is the bitmap captured is in format D3DFMT_A8R8G8B8, but the H.264 Video Encoder can only support MFVideoFormat_I420, MFVideoFormat_IYUV, MFVideoFormat_NV12, MFVideoFormat_YUY2 and MFVideoFormat_YV12 as input. My question is do I need to transfer the format myself(I do not want to)? Are there any other better solutions for this?

Upvotes: 1

Views: 1432

Answers (1)

Roman Ryltsov
Roman Ryltsov

Reputation: 69734

The input format corresponds to MFVideoFormat_ARGB32.

Stock OS component that handles the conversion is Video Processor MFT. I don't see availability information in the footer of MSDN article, however I am under impression that this MFT comes with Windows Vista, just like the whole Media Foundation API.

In Windows XP there has been a similar Color Converter DSP which offers really close services, and exposes a really close interface of DirectX Media Object (DMO). It is available in all more recent operating systems, however it is software only and never leverages GPU capability for the conversion.

These both can handle the requested format conversion for you.

Also for the reference, H.264 Video Encoder was introduced with Windows 7 only.

Upvotes: 4

Related Questions