[Bug 794858] qtdemux: edits with duration = 0 are broken
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Sat Mar 31 16:09:56 UTC 2018
https://bugzilla.gnome.org/show_bug.cgi?id=794858
Alicia Boya García <aboya at igalia.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #370381|none |reviewed
status| |
--- Comment #4 from Alicia Boya García <aboya at igalia.com> ---
Review of attachment 370381:
--> (https://bugzilla.gnome.org/review?bug=794858&attachment=370381)
The patch I just uploaded fixes the commented issues.
::: gst/isomp4/qtdemux.c
@@ -9087,3 @@
segment->time = stime;
/* add non scaled values so we don't cause roundoff errors */
- if (duration || media_start == GST_CLOCK_TIME_NONE) {
This condition handles a certain edge case in a particular way: an empty edit
with duration = 0.
Before, it was added as as an empty of duration = 0.
After this patch, it is treated as an empty edit that extends forever.
According to the spec, the new behavior is incorrect because duration=0 only
means "until the end of the track" for non-empty edits (it makes sense to have
that limitation because, even if you knew for sure the duration of the track,
you could not calculate the duration of the edit because you lack media_start).
The behavior before does not make much sense either, and the same could be said
for the edit itself.
In any case, I'd either keep the current behavior or make it ignore these edge
edits, but not change it to a different (questionable too) behavior.
@@ +9090,3 @@
+ /* zero duration does not imply media_start == media_stop
+ * but, only specify media_start */
+ segment->duration = stime = GST_CLOCK_TIME_NONE;
When such an edit is found, it should be the last edit. Otherwise the next edit
would start on GST_CLOCK_TIME_NONE.
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list