GNOME Bugzilla – Bug 768901
qtdemux: Use upstream framerate if available
Last modified: 2018-11-03 15:10:33 UTC
In case of dash streaming, dashdemux provides framerate. So, let's use it rather than calculate it in order to prevent noisy caps event which results from slightly varying calculated framerate.
Created attachment 331646 [details] [review] qtdemux-Use-upstream-framerate-if-available.patch
Seungha, do you have examples of streams that would cause such erratic framerates ?
(In reply to Edward Hervey from comment #2) > Seungha, do you have examples of streams that would cause such erratic > framerates ? Sorry, I cannot find the url... But, noisy caps is still there with any dash streams. Example http://dash.akamaized.net/dash264/TestCases/5c/nomor/4_1a.mpd qtdemux tries to pushes caps whenever get new moov. https://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/gst/isomp4/qtdemux.c#n6444 At this moment, framerate cannot be set since demux has no moof. Then, when demux get a moof, new caps is set to TRUE https://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/gst/isomp4/qtdemux.c#n3902 And then new caps will be pushed since demux can calculate the framerate now. https://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/gst/isomp4/qtdemux.c#n6758 This makes noisy caps event.
I've seen the same behaviour. Really, any fragmented stream with short-ish fragment durations can cause flip-flopping framerates, because there's not really enough samples (or the timescales aren't accurate enough) to really pin down a framerate. I think it makes sense to use an upstream framerate where available. Where it's not, I was thinking of an approach for only changing framerate at fragment boundaries if the difference crosses a threshold.
Setting to NEW again until someone has time to start working on it.
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/287.