[Bug 774600] mpegtsdemux: Pipeline hang on lossy transport stream
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Wed Nov 16 23:56:59 UTC 2016
https://bugzilla.gnome.org/show_bug.cgi?id=774600
--- Comment #1 from minfrin at sharp.fm ---
0:01:35.201549213 14697 0x74301db0 DEBUG videodecoder
gstvideodecoder.c:2703:gst_video_decoder_prepare_finish_frame:<omxh264dec-omxh264dec0>
no valid PTS, using oldest DTS 0:07:14.952708481
Placing a breakpoint at this point and taking a look at the frame that
triggered this message, we find this:
0:01:40.252680427 351 0x74e021b0 DEBUG videodecoder
gstvideodecoder.c:2654:gst_video_decoder_prepare_finish_frame:<omxh264dec-omxh264dec0>
sync timestamp 0:07:15.792708481 diff -0:07:15.792708481
0:01:40.253014642 351 0x74e021b0 DEBUG videodecoder
gstvideodecoder.c:3174:gst_video_decoder_clip_and_push_buf:<omxh264dec-omxh264dec0>
pushing buffer 0x6c7bb3e0 of size 470016, PTS 0:07:15.792708481, dur
0:00:00.040000000
0:01:40.254921651 351 0x73144ec0 DEBUG videodecoder
gstvideodecoder.c:1728:gst_video_decoder_src_query:<omxh264dec-omxh264dec0>
received query 5123, duration
0:01:40.255264043 351 0x73144ec0 DEBUG tsdemux
tsdemux.c:516:gst_ts_demux_srcpad_query: query duration
0:01:40.255315657 351 0x73144ec0 DEBUG tsdemux
tsdemux.c:527:gst_ts_demux_srcpad_query:<tsdemux0> only query duration on TIME
is supported
[Switching to Thread 0x6dfff460 (LWP 366)]
Breakpoint 1, gst_video_decoder_prepare_finish_frame (decoder=0x74e28190,
frame=0x7314e950, dropping=1) at gstvideodecoder.c:2700
2700 frame->pts = min_ts + priv->pts_delta;
(gdb) print frame->pts
$1 = 18446744073709551615
(gdb) print priv->reordered_output
$2 = 0
(gdb) print *frame
$3 = {ref_count = 2, flags = 0, system_frame_number = 3456, decode_frame_number
= 3456, presentation_frame_number = 0, dts = 139992708481, pts =
18446744073709551615, duration = 40000000,
distance_from_sync = 3456, input_buffer = 0x6e1d38d0, output_buffer = 0x0,
deadline = 18446744073709551615, events = 0x0, user_data = 0x0,
user_data_destroy_notify = 0x0, abidata = {ABI = {
ts = 434912708481, ts2 = 18446744073709551615}, padding = {0x42d14781,
0x65, 0xffffffff, 0xffffffff, 0x0 <repeats 16 times>}}}
(gdb)
Specifically, the PTS on this frame is 18446744073709551615
(GST_CLOCK_TIME_NONE), as is the “deadline” and the “ts2”.
This triggers the code that replaces the bogus PTS with DTS, which is in the
future compared to the frames that follow, leading to this:
0:01:35.202174569 14697 0x74301db0 WARN videodecoder
gstvideodecoder.c:2767:gst_video_decoder_prepare_finish_frame:<omxh264dec-omxh264dec0>
decreasing timestamp (0:07:14.952708481 < 0:07:15.792708481)
0:01:35.202333421 14697 0x74301db0 DEBUG videodecoder
gstvideodecoder.c:2847:gst_video_decoder_drop_frame:<omxh264dec-omxh264dec0>
dropping frame 0:07:15.792708481
The videodecoder starts dropping all frames, and shortly afterwards the
pipeline freezes up completely.
--
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