this is my first post here after just discoveringthe Media SDK last week. For now I want to try and load and decode an AVC stream in my program. The Media SDK looks like what I need but I came across some difficulties which I hope to find some answer for now :)
First, I do not fully understand which platforms provide hardware acceleration with the Media SDK. I run on a desktop processor Core i7 870. When initializing a mfx sessionusing MFX_IMPL_HARDWARE the status is UNSUPPORTED. MFX_IMPL_SOFTWARE works. So, is the hardware acceleration only available on Intel GMA graphics chips but not on desktop computers featuring a dedicated graphics board such as Nvidia or ATI/AMD? Or do I need to install some fancy Intel drivers I have not yet discovered? Or is my i7 870 just too old to be hardware accelerated with the Media SDK?
Second, I've been able to write my own decoder based on the simple decoder sample in the SDK. During development I've only tested it based on return status values. When I got all the pieces together after wiping out the bugs I already discovered my decoder seemed to process and decode my input AVC stream without producing errors. I did not include rendering so far so I can't really tell.
But by simply counting the number of successful SyncOperation calls I found that the number of frames I get from my input AVC stream is much less than there should be. How could this happen if I fed all of the incoming stream to the mfx decoder NALU by NALU and did not get any error reports? I tried different AVC input files and calculated the number of frames to expect from their length and framerate. I also checked my calculation and the AVC validity by loading these files with After Effects. The files were produced using a Panasonic SD-66 and a Panasonic Z10000 camera with 1080i50 and 1080p50, respectively.
Next I tried the precompiled simple decoder which comes with the SDK installation in the samples/_bin/x64 path. I'm running on Windows 7 64 bit by the way.
I did not (yet) recompile the sample decoder and just used the original one. It can open my files and seems to decode the correct number of frames. So I guess there is still a bug in my own implementation which differs somewhat from the sample decoder. However, the rendering output of the sample decoder is broken. It just displays several chunks of various colors. But the text output looks ok. The format and resolution is recognized and the decoding does not produce any errors. The number of frames seems to fit so there is just the rendering broken.
Now what does this mean for me? Is the decoded data already broken? Or is the data still correct but just the rendering broken?
How should I proceed from here? I would like to verify somehow that the Media SDK can actually decode my AVC data and render the video correctly. After that I could dig through my version of a decoder and hunt the remaining bugs that make me loose frames.
Any helping hand is welcome :)