ronag
ronag

Reputation: 51283

GPU deinterlacing

I have an application that does video processing such as color transforms, scaling and translations using OpenGL. I'm mostly working with BGRA (1xGL_BGRA) or YUVA (4xGL_R) video, i.e. including alpha.

Now I would also like to do some high quality deinterlacing. I've noticed that Nvidia supports high quality hardware accelerated de-interlacing through their "PureVideo" functionality. Basically what i'd like to do is to send in a interlaced OpenGL texture with x number of color channels and get out two progressive textures.

My question is how do I access this functionality easiest, and most efficiently (possibly in interop with OpenGL)?

I've been looking at DXVA and OpenMax, but both seem rather focused on playback (not deinterlace processing, i.e. non-relevant options such as frame-rate needs to be set etc...) and no-alpha formats...

Upvotes: 21

Views: 4701

Answers (3)

Christopher Oezbek
Christopher Oezbek

Reputation: 26473

Point 1: You will have to go via DirectX if you want to have hardware accelerated deinterlacing with good quality.

Point 2: Apart from the options others have named (DXVA and OpenMAX) there is at least the Intel Media SDK for Quicksync accelerated deinterlace, which has not been named, and which offers a per frame deinterlacing via its VPP video preprocessing filters.

Point 3: To go from DirectX to OpenGL on NVidia: http://developer.download.nvidia.com/opengl/specs/WGL_NV_DX_interop.txt

Upvotes: 0

MrGomez
MrGomez

Reputation: 23896

Based on your clarified requirements, it looks like VDPAU is the closest match to what you desire. Complication: it's for Unix-based operating systems, not Windows.

If you're locked to Windows, DXVA is the way to go. If you're operating in a cross-platform environment, OpenMAX is the way to go. And if you're open to suggestions beyond those you've already given in your question, the rest of these are worth pursuing.

Upvotes: 3

Robinson
Robinson

Reputation: 10132

gStreamer libraries have good de-interlacing modules. You can use a directshow module to display the results in a window, or process the frames yourself by hooking into various events. We're using this at work at the moment for all of our video processing needs.

Upvotes: 5

Related Questions