I just create simple graph to record video from a source Filter:
SourceFilter ---> Muxer ---> FileWriter
I can able to save video whi
Ralf's comment is probably right. The AVI file format doesn't have per-frame timestamps, just an average frame rate. So when a frame arrives, the mux has to decide whether to place this frame in the next "slot", or insert a "dropped frame" marker and put the frame in the slot after. If the source filter's timestamps don't match the media type's frame rate, then you will get this effect.
You can save your video elementary stream to a file, but use the Dump filter example, not the file writer. The file writer has a special protocol to allow multiplexors random access to the file (using the timestamps as file offsets). You want to just save the data as a stream, and the Dump example does that.
In my case I indeed had a Source filter that didn't set AvgTimePerFrame correctly. After I fixed that (it was my own source filter) the AVI also went along with whatever it received from upstream.