GNOME Bugzilla – Bug 782217
qtdemux: GStreamer-CRITICAL **: _gst_util_uint64_scale: assertion 'denom != 0' failed
Last modified: 2017-10-10 15:05:12 UTC
This is happening in a lot of WebKit tests. The problem is in gst_qtdemux_configure_stream. Initially stream->n_samples is > 1, but I guess it's fragmented and n_samples_moof > 0 && duration_moof > 0 so n_samples is changed to n_samples_moof which is 1. With n_samples = 1 we end up calling gst_util_uint64_scale_round() with a 0 denom.
Can you provide a testcase for this? Should be reproducible with whatever input goes into qtdemux and gst-launch.
I have a test case: gst-launch-1.0 souphttpsrc location='https://github.com/w3c/web-platform-tests/blob/master/media-source/mp4/test.mp4?raw=true' ! qtdemux ! fakesink You can also download the file by yourself and use filesrc location='/tmp/test.mp4', of course.
Created attachment 361032 [details] [review] Patch
Uploaded patch should fix the issue. I implemented the patch for v1.10.5.
commit 5874bafa4f17592fdee41d49bfe6f75c1d44f7ec (HEAD -> master) Author: Nael Ouedraogo <nael.ouedraogo@crf.canon.fr> Date: Fri Sep 22 18:41:52 2017 +0200 qtdemux: fix assert when moof containing one sample Avoid computing frame rate when a stream contain moof with only one sample, to avoid an assert. The moof is considered as still picture. The same is already done for one sample given in the moov. https://bugzilla.gnome.org/show_bug.cgi?id=782217