I have an Stream of Raw H.264 (Constrained Baseline profile) NALs coming from a USB connected device that I try to push into a graph i created using a filter I've implemented. While the same code runs well on a PC running Windows 7, my screen does not get updated when running on an iMX53 using the Adeneo BSP for Windows Embedded Compact 7.
The Filter I've created is very straight forward. The Filter inherits from CBaseFilter and the Pin from CBaseOutputPin. Once a new NAL is received, I get a new media sample (by calling GetDeliveryBuffer), fill the data and pass it along to the next filter by calling Deliver. My Pin implements GetMediaType so that the type is MEDIATYPE_Video, the sub-type is MEDIASUBTYPE_H264. Initially I used FORMAT_VideoInfo as the format setting the video characteristics. Later on I've also tried using FORMAT_MPEG2Video as the format in order to try and set the Profile and Level of the H.264 stream. This change had no effect - working on Windows 7 PC and black screen on iMX53 WCE7.
In order to try and understand the problem, I've saved the H.264 stream into a file and since there is no filter for reading files or raw H.264, I've converted the file into an AVI file. Then I tried playing this file via a graph I've created using RenderFile. However, it did not work. Then, I've re-encoded the stream to "Main" profile. In this case the file played correctly. In addition to playing the AVI files via RenderFile, I've also tried playing them using a filter I created that basically reads from a file. What I've seen is that in the erroneous case the graph calls my pin's read function 3 times and then stops while in the working case, the calls to read just keep on coming.
So, I think the it might be that either the Constrained Baseline profile is not support, or that I don't correctly create the graph.
Has anyone experiences such an issue? Do you any input you can provide my with, so I can continue?