Uri Levy


I'm trying to implement FRC (Frame Rate Conversion) through DirectShow Transform Filter. The first implementation I'm trying to do is to multiply frame rate by creating new frame to be set between two consecutive input frames.

I've managed to implement FRC through DMO by manipulations between the ProcessInput and the ProcessOutput Methods (by forcing the DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE flag to be called whenever I want to add other frames). This is very easy since I have two different processing methods - one for input and one for output. But since the Transform filter contains only one process method (Transform) I can't find a way to do it in the same way.

Therefore, I have 2 questions:

1. Can you advise me on a way to change the frame rate (by adding my own frame to the output pin) in Transform Filter (on video frames only - without causing any damage to the synchronization with the Audio renderer)

2. I believe that since DMO can act as transform filter by using the DMO wrapper when building the graph, there is away to implement ProcessInput and ProcessOutput (probably indirectly) through DirectShow Transform Filter. If so, can you please advise me how to do it Is there a way to split the processing functionality between the input pin and the output pin

IĄŻll really appreciate your help in that matterĄ­

Thank you very much,


Re: DirectShow Development Frame Rate Conversion through Transform Filter

Michel Roujansky


I personally prefer to start from a basefilter (to which you add input and output pins) to do this rather than tweaking a transform filter. You get more flexibility.

But if you want to stick with a transform filter, then you have to override either the input pin receive, or (easier) the filter receive, so that the overriden function prepares the sample(s) and calls the output pin deliver (instead of calling transform).