summaryrefslogtreecommitdiff
path: root/libavformat/mpegts.c
diff options
context:
space:
mode:
authorJanne Grunau <janne-ffmpeg@jannau.net>2010-05-18 17:28:07 +0000
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>2010-05-18 17:28:07 +0000
commitb74f67eb17b3dae49cb42affa07b5c41ef09160e (patch)
tree678682ae6c3555cfbbeb7f1045dc8e21f562f5de /libavformat/mpegts.c
parent90c921002878c7cc99ba8e4d733543108925e6f8 (diff)
In ts demuxer, output pes packet as soon as they are complete.
This is needed for subtitles where packets are infrequent. Patch by Janne Grunau, janne-ffmpeg at jannau dot net. Originally committed as revision 23157 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/mpegts.c')
-rw-r--r--libavformat/mpegts.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index c92a9c2585..59603384d2 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -807,6 +807,16 @@ static int mpegts_push_data(MpegTSFilter *filter,
pes->data_index += buf_size;
}
buf_size = 0;
+ /* emit complete packets with known packet size
+ * decreases demuxer delay for infrequent packets like subtitles from
+ * a couple of seconds to milliseconds for properly muxed files.
+ * total_size is the number of bytes following pes_packet_length
+ * in the pes header, i.e. not counting the first 6 bytes */
+ if (pes->total_size < MAX_PES_PAYLOAD &&
+ pes->pes_header_size + pes->data_index == pes->total_size + 6) {
+ ts->stop_parse = 1;
+ new_pes_packet(pes, ts->pkt);
+ }
break;
case MPEGTS_SKIP:
buf_size = 0;