Menu

#262 Pin Out Incorrect FPS

open-invalid
nobody
None
5
2012-01-15
2011-07-22
No

This bug is present for as long as I can remember, and in the version I'm currently using, build #3947

Using features within ffdshow that can change the frame rate of the video, such as yadif de-interlacing with double framerate, or avisynth frame interpolation scripts, the fps change doesn't seem to get reflected anywhere within ffdshow.

Example 1: Next external filter doesn't see framerate change
When just using avisynth frame interpolation scripts, or just using yadif double frame rate de-interlacing, the pin out informatino doesn't change. Eg below of pin out not changing even though the output frame rate is 50fps

Pin In
Video: MPEG4 Video (H264) 854x480 24.99fps 1230kbps

Pin Out
Video: YV12 854x480 24.99fps

Example 2: Next internal ffdshow filter doesn't see framerate change
When using both yadif de-interlacing with double frame rate, and avisynth scripts after de-interlacing, the avisynth script doesn't receive the new frame rate information.

Eg
Input to ffdshow = 25fps interlaced
Input to yadif = 25fps interlaced
Output from yadif = 50fps progressive (but seems to be indicated to next filter as 25fps still)
Input to avisynth = 50fps progressive, actual (but avisynth if statements still think the frame rate is 25fps, eg

(Framerate == 25)? Eval(""" << Gets executed instead of
(Framerate == 50)? Eval(""" << Should be executed, but framerate information wasn't passed in from yadif it seems

So basically I think the fps information isn't passed on to both other internal filters, aswell as being output in the Pin Out to external filters.

It would be great to see this one fixed if anyone has any idea how it might be done. Thanks guys!

Regards,
Mark

Discussion

  • h.yamagata

    h.yamagata - 2012-01-15
    • status: open --> open-invalid
     
  • h.yamagata

    h.yamagata - 2012-01-15

    It's not easy.
    Yadif doubles the frame rate only if the stream is interlaced video (unless "Process frames flagged as progressive" is checked).
    There is no reliable information at the time of DirectShow filter connection if the stream is interlaced or not. And it is not worth reconnecting the output after the start of playback just to change frame rate. Video renderers already know the new frame rate from the timestamps.
    It is more difficult for AviSynth scripts.

    So this is not a bug.

     

Log in to post a comment.