diff options
author | phintuka <phintuka> | 2010-08-06 11:07:47 +0000 |
---|---|---|
committer | phintuka <phintuka> | 2010-08-06 11:07:47 +0000 |
commit | dbff1ade9ba36f8dc9e4f044f2838924658e6f0e (patch) | |
tree | 5959c0a9681aed1bde0c9ed13cde550fd056e802 /xine/demux_xvdr.c | |
parent | c0809a144ca2ccd849d2d0bd875c65a414ea0f63 (diff) | |
download | xineliboutput-dbff1ade9ba36f8dc9e4f044f2838924658e6f0e.tar.gz xineliboutput-dbff1ade9ba36f8dc9e4f044f2838924658e6f0e.tar.bz2 |
Do not reset TS demuxer when (PES) padding packet is received.
Should fix demuxing problems with MPEG-TS over UDP/RTP.
(Bug #3034073, Thanks to Mikko Matilainen)
Diffstat (limited to 'xine/demux_xvdr.c')
-rw-r--r-- | xine/demux_xvdr.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/xine/demux_xvdr.c b/xine/demux_xvdr.c index 369fdee3..5e027045 100644 --- a/xine/demux_xvdr.c +++ b/xine/demux_xvdr.c @@ -146,7 +146,6 @@ static void demux_xvdr_parse_pes(demux_xvdr_t *this, buf_element_t *buf); static int32_t parse_video_stream(demux_xvdr_t *this, uint8_t *p, buf_element_t *buf); static int32_t parse_audio_stream(demux_xvdr_t *this, uint8_t *p, buf_element_t *buf); static int32_t parse_private_stream_1(demux_xvdr_t *this, uint8_t *p, buf_element_t *buf); -static int32_t parse_padding_stream(demux_xvdr_t *this, uint8_t *p, buf_element_t *buf); static void pts_wrap_workaround(demux_xvdr_t *this, buf_element_t *buf, int video) { @@ -456,6 +455,11 @@ static void demux_xvdr_parse_pes (demux_xvdr_t *this, buf_element_t *buf) uint8_t *p = buf->content; int32_t result; + if (IS_PADDING_PACKET(p)) { + buf->free_buffer (buf); + return; + } + this->stream_id = p[3]; if (this->ts_data) { @@ -467,8 +471,6 @@ static void demux_xvdr_parse_pes (demux_xvdr_t *this, buf_element_t *buf) result = parse_video_stream(this, p, buf); } else if (IS_MPEG_AUDIO_PACKET(p)) { result = parse_audio_stream(this, p, buf); - } else if (IS_PADDING_PACKET(p)) { - result = parse_padding_stream(this, p, buf); } else if (IS_PS1_PACKET(p)) { result = parse_private_stream_1(this, p, buf); } else { @@ -597,12 +599,6 @@ static void demux_xvdr_parse_ts (demux_xvdr_t *this, buf_element_t *buf) buf->free_buffer(buf); } -static int32_t parse_padding_stream(demux_xvdr_t *this, uint8_t *p, buf_element_t *buf) -{ - buf->free_buffer (buf); - return -1; -} - /* FIXME: Extension data is not parsed, and is also not skipped. */ static int32_t parse_pes_for_pts(demux_xvdr_t *this, uint8_t *p, buf_element_t *buf) |