summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_ts.c
diff options
context:
space:
mode:
authornicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-05-12 21:34:06 +0000
committernicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-05-12 21:34:06 +0000
commite32c4c57120a8f70e16a2a4e0ce03a320afb2bed (patch)
tree65ff2d3d61c4d2634997c3b00b7c66126e6627fc /libmpdemux/demux_ts.c
parentdd9d768293ec27b56c1d64287de5b156cb6fecf2 (diff)
downloadmpv-e32c4c57120a8f70e16a2a4e0ce03a320afb2bed.tar.bz2
mpv-e32c4c57120a8f70e16a2a4e0ce03a320afb2bed.tar.xz
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
Diffstat (limited to 'libmpdemux/demux_ts.c')
-rw-r--r--libmpdemux/demux_ts.c6
1 files changed, 4 insertions, 2 deletions
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);