I have a GeforceFX 7800 GTX. It’s specification says that these GPU’s can do MPEG-2 hardware decoding. So how does it work ? How to gain access to the Video processor like we do for vertex and pixel shaders ?
I am an OpenGL programmer. Say, I have an MPEG-2 file on my hard drive. How can input an MPEG-2 frame into the Video processor for decoding and get the decoded output frame as input in the texture memory of the GPU. I want to offload the CPU from decoding and make use of the hardware decoding available on the new Geforce 7800 series GPUs.
Any help would be greatly appreciated. Thanks!
I’m sorry to say, but you are most likely screwed. No, really.
Vendors say they “support” this and that, but when you ask them for specifications of even an API they basically give you the birdy. “**** off. You already parted with your money for the hardware. Why on earth should we tell you how to actually interface with it?!”.
Should the vendor in this case display something different I stand corrected, but looking at history I’d say there’s no chance in hell they ever published even an API. You are, basically, screwed.
I’ve never seen any specifications on how to use that, too, but then how do all those media players use the features?
And it makes no sense not to tell developers how to use it. It makes their hardware less valuable, if there are no applications benefiting from those features.
Well, the interface to it won’t be in OpenGL. In all likelihood, you have to be a real developer (ie, a company that makes movie players) in order for them to provide you the necessary entrypoints to access their functionality. It’s silly, yes. But that’s the way it is.
AFAIK, MPEG-2 hardware decoding is not exposed under OpenGL. But if you are willing to consider “that other API”, DirectX Video Acceleration (DirectX VA) is what you’re looking for.
DXVA is one of the most obscure and badly documented API I’ve seen in a long time, but at least it’s public, and you don’t have to be a registered developer to use it.
I totally agree with you.
Yes, I think DXVA is the only way to go. I think NVIDIA Video Codec registers itself as the MPEG-2 decoder when installed. So, DirectShow can see it as a filter and incorporates it into the filter graph. Together with DirectShow + DXVA + NVIDIA Video Codec, my hunch is it is possible but its gonna be a pain in the A to get it working.
Isn’t mpeg-2 decoding masked in a dll file usually??? If it is NVIDIA can ship new dll that’ll ask their HW to do the job. No API, no new stuff, and good ol’ aps will work too.
I might be wrong of course, as I have no experience with MPEGs…
hey, good news.
I found this: nvhwvid.dll
its part of the 80.40 drivers. look at the entry points of this DLL(e.g. with Dependency Walker from MSVC tools). i think it is, what you are looking for. I’ m looking forward that you find a way to run this