summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTorsten Jager <t.jager@gmx.de>2015-04-02 17:50:00 +0200
committerTorsten Jager <t.jager@gmx.de>2015-04-02 17:50:00 +0200
commitade430c70fc0e00443fcdb635722c85cc6691bfb (patch)
tree5ea2e7c3ff1bfb8ea65a60467ff8ade14dfcc244 /src
parent965c0ed960d6cf2acf4bdfed6eb9389be101eab3 (diff)
downloadxine-lib-ade430c70fc0e00443fcdb635722c85cc6691bfb.tar.gz
xine-lib-ade430c70fc0e00443fcdb635722c85cc6691bfb.tar.bz2
demux_ts: Another safety against freeze on heavy seeking.
VDPAU seems not to need this nasty workaround (and it seems not to be harmed by it either). Doing this inside ff_video_decoder would affect all demuxers, and only for MPEG-TS I am halfway sure that there will follow another sequence header after seek. Alternatively, demux_ts could seek to keyframes. This is not as simple as it sounds. Many DVB streams I have seen only show "Auxillary data" and "Sequence extended info" NAL units openly. All the rest hides behind escapes...
Diffstat (limited to 'src')
-rw-r--r--src/demuxers/demux_ts.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c
index 890b8e12e..a9883963c 100644
--- a/src/demuxers/demux_ts.c
+++ b/src/demuxers/demux_ts.c
@@ -2536,6 +2536,12 @@ static int demux_ts_seek (demux_plugin_t *this_gen,
this->buf_flag_seek = 1;
_x_demux_flush_engine(this->stream);
+ /* Append sequence end code to video stream. */
+ /* Keep ffmpeg h.264 video decoder from piling up too many DR1 frames, */
+ /* and thus freezing video out. */
+ if (this->videoPid != INVALID_PID && this->stream->video_fifo)
+ post_sequence_end (this->stream->video_fifo, this->media[this->videoMedia].type);
+
}
demux_ts_tbre_reset (this);