[Bug 764637] qtdemux: Ensure stream duration by using stts box

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Apr 5 12:54:38 UTC 2016


https://bugzilla.gnome.org/show_bug.cgi?id=764637

--- Comment #2 from Seungha Yang <sh.yang at lge.com> ---
I found a corrupted mp4 file. The only incorrect factor is stream duration in
mdhd. Although the file muxing is incorrect, we can support it by calculating
the actual stream duration.

- NG case
 57 0:00:00.084347775  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:8425:qtdemux_parse_segments:<qtdemux0> created dummy segment
0:04:33.052583333
 58 0:00:00.084356373  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:8429:qtdemux_parse_segments:<qtdemux0> using 1 segments
 59 0:00:00.084360621  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:10601:qtdemux_parse_trak:<qtdemux0> n_streams is now 2
 60 0:00:00.084365309  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:11842:qtdemux_parse_udta:<qtdemux0> No XMP_ node found
 61 0:00:00.084390758  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:10772:qtdemux_prepare_streams:<qtdemux0> prepare streams
 62 0:00:00.084395791  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:10779:qtdemux_prepare_streams:<qtdemux0> stream 0, id 1, fourcc avc1
 63 0:00:00.084401392  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:7875:qtdemux_parse_samples:<qtdemux0> parsing up to sample 0
 64 0:00:00.084406308  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:8082:qtdemux_parse_samples:<qtdemux0> sample 0: index 0, timestamp
0:00:00.000000000
 65 0:00:00.084411698  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:8137:qtdemux_parse_samples:<qtdemux0> samples at 0 is keyframe
 66 0:00:00.084415646  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:10779:qtdemux_prepare_streams:<qtdemux0> stream 1, id 2, fourcc mp4a
 67 0:00:00.084420335  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:7875:qtdemux_parse_samples:<qtdemux0> parsing up to sample 0
 68 0:00:00.084424276  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:8082:qtdemux_parse_samples:<qtdemux0> sample 0: index 0, timestamp
0:00:00.000000000
 69 0:00:00.084429254  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:8125:qtdemux_parse_samples:<qtdemux0> all samples are keyframes
 70 0:00:00.084432692  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:10831:qtdemux_expose_streams:<qtdemux0> exposing streams
 71 0:00:00.084436121  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:10839:qtdemux_expose_streams:<qtdemux0> stream 0, id 1, fourcc avc1
 72 0:00:00.084462814  5006 0x7f12780f9de0 DEBUG                qtdemux
qtdemux.c:7234:gst_qtdemux_configure_stream:<qtdemux0> Calculating framerate,
timescale 29970 gave fps_n 10000 fps_d 129

- With this patch
 57 0:00:00.031100131  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:8449:qtdemux_parse_segments:<qtdemux0> created dummy segment
0:04:33.052583333
 58 0:00:00.031108243  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:8453:qtdemux_parse_segments:<qtdemux0> using 1 segments
 59 0:00:00.031112396  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:10625:qtdemux_parse_trak:<qtdemux0> n_streams is now 2
 60 0:00:00.031117170  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:11866:qtdemux_parse_udta:<qtdemux0> No XMP_ node found
 61 0:00:00.031156892  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:10796:qtdemux_prepare_streams:<qtdemux0> prepare streams
 62 0:00:00.031161630  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:10803:qtdemux_prepare_streams:<qtdemux0> stream 0, id 1, fourcc avc1
 63 0:00:00.031167805  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:7899:qtdemux_parse_samples:<qtdemux0> parsing up to sample 0
 64 0:00:00.031172732  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:8106:qtdemux_parse_samples:<qtdemux0> sample 0: index 0, timestamp
0:00:00.000000000
 65 0:00:00.031188804  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:8161:qtdemux_parse_samples:<qtdemux0> samples at 0 is keyframe
 66 0:00:00.031192742  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:10803:qtdemux_prepare_streams:<qtdemux0> stream 1, id 2, fourcc mp4a
 67 0:00:00.031197304  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:7899:qtdemux_parse_samples:<qtdemux0> parsing up to sample 0
 68 0:00:00.031201216  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:8106:qtdemux_parse_samples:<qtdemux0> sample 0: index 0, timestamp
0:00:00.000000000
 69 0:00:00.031209135  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:8149:qtdemux_parse_samples:<qtdemux0> all samples are keyframes
 70 0:00:00.031212720  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:10855:qtdemux_expose_streams:<qtdemux0> exposing streams
 71 0:00:00.031216188  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:10863:qtdemux_expose_streams:<qtdemux0> stream 0, id 1, fourcc avc1
 72 0:00:00.031240344  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:2850:check_update_duration:<qtdemux0> Updating total duration to
0:11:42.602602602 was 0:11:42.549312500
 73 0:00:00.031249534  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:2855:check_update_duration:<qtdemux0> qtdemux->segment.duration:
0:11:42.549312500 .stop: 0:11:42.549312500
 74 0:00:00.031254995  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:2862:check_update_duration:<qtdemux0> Updated segment.duration and
segment.stop
 75 0:00:00.031258571  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:2874:check_update_duration:<qtdemux0> Updating stream #0 duration to
0:11:42.602602602
 76 0:00:00.031263416  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:2874:check_update_duration:<qtdemux0> Updating stream #1 duration to
0:11:42.602602602
 77 0:00:00.031271809  3575 0x7f95a81171e0 DEBUG                qtdemux
qtdemux.c:7240:gst_qtdemux_configure_stream:<qtdemux0> Calculating framerate,
timescale 29970 gave fps_n 30000 fps_d 1001

-- 
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