diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-05-11 13:41:06 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-05-11 13:41:06 +0200 |
commit | 3700f655c55e2001b57215210b957b169d66b50f (patch) | |
tree | 9e279322179539f5ab524e5efb6913637c7284d6 /libavformat/mpegtsenc.c | |
parent | 9c409e568f3f72083fbc6b2deb5e2a226ae70172 (diff) | |
download | ffmpeg-3700f655c55e2001b57215210b957b169d66b50f.tar.gz |
mpegtsenc: check max_delay in write_packet_internal().
Checking it during PES writing is too late.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/mpegtsenc.c')
-rw-r--r-- | libavformat/mpegtsenc.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 8d38d01cf1..25ca1b035d 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -1070,6 +1070,21 @@ static int mpegts_write_packet_internal(AVFormatContext *s, AVPacket *pkt) } } + if (pkt->dts != AV_NOPTS_VALUE) { + int i; + for(i=0; i<s->nb_streams; i++){ + AVStream *st2 = s->streams[i]; + MpegTSWriteStream *ts_st2 = st2->priv_data; + if( ts_st2->payload_size + && ts_st2->payload_dts == AV_NOPTS_VALUE || dts - ts_st2->payload_dts > delay/2){ + mpegts_write_pes(s, st, ts_st->payload, ts_st->payload_size, + ts_st->payload_pts, ts_st->payload_dts, + ts_st->payload_flags & AV_PKT_FLAG_KEY); + ts_st->payload_size = 0; + } + } + } + if (ts_st->payload_size && ts_st->payload_size + size > ts->pes_payload_size) { mpegts_write_pes(s, st, ts_st->payload, ts_st->payload_size, ts_st->payload_pts, ts_st->payload_dts, |