I was trying to create a multi input multi output (one audio , one video) transform filter. I used CTransformFilter as a base class.
I used CtransformInputPin class for one video input pin and CTransformOutputPin class for one output video pin. Also I used CBaseInputPin class for one audio input pin and CBaseOutputPin class for one audio output pin. If I play it with the normal rate, it plays fine, but once I do fast forward, audio gets muted and video display is not smooth, its very jerky. When I debug further in the code, I found that as soon as I press Fast forward mode, receive on the audio gets blocked and its not able to receive any sample from the splitter.
I am not sure, since I drived this filter from the CTransformFilter class causing the problem or should I have to drive it from CBaseFilter class?
Or if anyone is having any other idea of this issue please share your ideas.
Thanks in advance.
The problem may be not so much in what base classes you are using, but in what you are doing in your filter.
Did you try to couple the audio and video processing?
What processing do you do on your audio path? What do you do on the audio input pin Receive()? Do you prcess the sample directly and pass it to the output pin? Or did you implement a Transform() at the level of the filter? Do you pass all Flush/NewSegment/ etc information from input to output?
Michel Roujansky, http://www.roujansky.com
I am not using tranform(), I am sending some dummy PCM samples to the output (0x00 samples with correct PCM headers).
So basicaaly the flow is like this: I am getting the WMAudio9 encoded audio data from the parser filter, once I get the data, I set the output pin type as a PCM type and copying 0x00 to the output pin. So when I play this, obviously I'll not get the correct audio, but atleast its rendering it to the audio render. But once I do fast forward, it get muted, I am not getting sample from the parser after that.
What parser are you using? What rate?
Notice that the DirectSound audio renderer can only deal with rates in the range 0.5X-2.0X so a parser can decide to discard the audio if the rate is outside that range to avoid a failure.
Other parsers simply do not support rates other than 1X themselves.
MVP :: DirectShow / MediaFoundation <http://www.riseoftheants.com/mmx/faq.htm>