[SCM] libav/experimental: In ts demuxer, if pes packet size is < ts packet, honor pes packet and skip padded data. Fixes issue #2392.
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Sun Jun 30 17:19:30 UTC 2013
The following commit has been merged in the experimental branch:
commit 74f726209f5302029797dbb6916aff006563496b
Author: Baptiste Coudurier <baptiste.coudurier at gmail.com>
Date: Mon Nov 29 03:43:56 2010 +0000
In ts demuxer, if pes packet size is < ts packet, honor pes packet and skip padded data.
Fixes issue #2392.
Originally committed as revision 25841 to svn://svn.ffmpeg.org/ffmpeg/trunk
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 3c61d8b..bbb00d3 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -797,13 +797,17 @@ static int mpegts_push_data(MpegTSFilter *filter,
break;
case MPEGTS_PAYLOAD:
if (buf_size > 0 && pes->buffer) {
- if (pes->data_index+buf_size > pes->total_size) {
+ if (pes->data_index > 0 && pes->data_index+buf_size > pes->total_size) {
new_pes_packet(pes, ts->pkt);
pes->total_size = MAX_PES_PAYLOAD;
pes->buffer = av_malloc(pes->total_size+FF_INPUT_BUFFER_PADDING_SIZE);
if (!pes->buffer)
return AVERROR(ENOMEM);
ts->stop_parse = 1;
+ } else if (pes->data_index == 0 && buf_size > pes->total_size) {
+ // pes packet size is < ts size packet and pes data is padded with 0xff
+ // not sure if this is legal in ts but see issue #2392
+ buf_size = pes->total_size;
}
memcpy(pes->buffer+pes->data_index, p, buf_size);
pes->data_index += buf_size;
--
Libav/FFmpeg packaging
More information about the pkg-multimedia-commits
mailing list