When I decode a video VOB using VirtualDub FilterMod (MPEG-2 plugin 4.5), I get the number of a certain frame - 6. When I decode a video using DGDecode in AviSynth, number of this frame is 8. It turns out that Avisynth adds 2 extra frames the beginning of the video? Or VirtualDub did not show these frames?
+ Reply to Thread
Results 1 to 6 of 6
Last edited by Megafox; 15th Sep 2018 at 08:21.
You probably have leading B frames that cannot be validly decoded. Different decoders handle this differently. Some just discard them. DGDecode replaces them with a copy of the first decodable frame. The DGDecode way keeps audio sync unaffected, while discarding the frames changes the sync.
Yes, as I mentioned, many decoders discard the leading orphaned B frames.
Note that you will have this issue only if your stream in fact has leading orphaned B frames. So do not apply your workaround unconditionally.
Also, not all Avisynth decoders will preserve the leading frames like DGDecode. So watch out if you decide to use a different source filter.
Finally, there can be more or less than 2 orphaned frames, so you can't use the number 2 unconditionally.
Note that the leading B frames are probably there because the video was cut from a source with open GOPs. With an open GOP the last B frames of a GOP can reference the I frame of the next GOP. So, in presentation order (the order they are to be viewed) you have a sequence that looks like:
When you cut such a sequence at the I frame you are left with:
So this isn't a matter of VirtualDub vs AviSynth. It's a matter of what MPEG2 decoder is being used.