Reputation: 19863
I'm developping a h264 directshow filter.
I have a valid hardware source which outputs NAL units properly. I have a DirectShow filter which advertises h264 and successfully connects to the default windows 7 decoder microsoft dtv-dvd video decoder.
When I connect a renderer to the decoder, the renderer doesn't get any packets, so I assume that the decoder fails to decode my packets properly.
[ h264 Source ] -> [ dtv-dvd decoder ] -> [ enhanced video renderer ]
Is there any way for me to check where the microsoft decoder fails?
Any other info could be helpful
Upvotes: 2
Views: 1776
Reputation: 103
The difficulty you have is that you do not have the code for the dtv-dvd decoder, making it somewhat of a black-box in the pipeline. The fact that your h264 Source can connect to the dtv-dvd decoder means you are off to a good start regarding media format negotiation. To get a better view of what is going wrong I suggest that you swap out the dtv-dvd decoder with one for which you have the source code and then debug your pipeline using GraphEdit or one of the similar tools. I have been doing the same sort of development and have found that once I got the h264 pipeline working properly with one decoder filter, it has generally worked properly with other h264 decoders.
Here are a few options which include source code:
Intel Media SDK 2012 includes a sample h264 decoder filter.
If you have an Nvidia GPU, you can try out this open source CUDA Decode Filter
Also, I have found the dtv-dvd filter to be a little finicky. It may be helpful to test using one of the following decoder filters available in binary form :
Nanocosmos has a very nice "AVC/h264 decoder Decoder SDK" based on directshow. (Free Eval)
"CoreCodec's CoreAVC" includes one of the fastest h264 decoders supporting CUDA and DXVA (Commercial - costs $12.95)
MainConcept's h264 decoder filter is available as part of their "MainConcept Showcase" (Free Eval)
Upvotes: 3