From e32c4c57120a8f70e16a2a4e0ce03a320afb2bed Mon Sep 17 00:00:00 2001 From: nicodvb Date: Fri, 12 May 2006 21:34:06 +0000 Subject: don't allocate (and demux_push() immediately) demux_packet()s > MAX_PACK_SIZE; releasing immediately audio packets (before the pes is complete) doesn't make any sense and deteriorates interleaving git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@18462 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_ts.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'libmpdemux/demux_ts.c') diff --git a/libmpdemux/demux_ts.c b/libmpdemux/demux_ts.c index 3320926976..1f9e0a0378 100644 --- a/libmpdemux/demux_ts.c +++ b/libmpdemux/demux_ts.c @@ -2823,6 +2823,8 @@ static int ts_parse(demuxer_t *demuxer , ES_stream_t *es, unsigned char *packet, if(*dp == NULL) { + if(*buffer_size > MAX_PACK_BYTES) + *buffer_size = MAX_PACK_BYTES; *dp = new_demux_packet(*buffer_size); //es->size *dp_offset = 0; if(! *dp) @@ -2930,7 +2932,7 @@ static int ts_parse(demuxer_t *demuxer , ES_stream_t *es, unsigned char *packet, (*dp)->pos = stream_tell(demuxer->stream); (*dp)->pts = es->pts; - if(is_audio) + if(*dp_offset >= MAX_PACK_BYTES) { retv = fill_packet(demuxer, ds, dp, dp_offset, si); return 1; @@ -3002,7 +3004,7 @@ static int ts_parse(demuxer_t *demuxer , ES_stream_t *es, unsigned char *packet, } stream_skip(stream, junk); - if(is_audio) + if(*dp_offset >= MAX_PACK_BYTES) { (*dp)->pts = tss->last_pts; retv = fill_packet(demuxer, ds, dp, dp_offset, si); -- cgit v1.2.3