Checking it during PES writing is too late.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
... | ... |
@@ -1070,6 +1070,21 @@ static int mpegts_write_packet_internal(AVFormatContext *s, AVPacket *pkt) |
1070 | 1070 |
} |
1071 | 1071 |
} |
1072 | 1072 |
|
1073 |
+ if (pkt->dts != AV_NOPTS_VALUE) { |
|
1074 |
+ int i; |
|
1075 |
+ for(i=0; i<s->nb_streams; i++){ |
|
1076 |
+ AVStream *st2 = s->streams[i]; |
|
1077 |
+ MpegTSWriteStream *ts_st2 = st2->priv_data; |
|
1078 |
+ if( ts_st2->payload_size |
|
1079 |
+ && ts_st2->payload_dts == AV_NOPTS_VALUE || dts - ts_st2->payload_dts > delay/2){ |
|
1080 |
+ mpegts_write_pes(s, st, ts_st->payload, ts_st->payload_size, |
|
1081 |
+ ts_st->payload_pts, ts_st->payload_dts, |
|
1082 |
+ ts_st->payload_flags & AV_PKT_FLAG_KEY); |
|
1083 |
+ ts_st->payload_size = 0; |
|
1084 |
+ } |
|
1085 |
+ } |
|
1086 |
+ } |
|
1087 |
+ |
|
1073 | 1088 |
if (ts_st->payload_size && ts_st->payload_size + size > ts->pes_payload_size) { |
1074 | 1089 |
mpegts_write_pes(s, st, ts_st->payload, ts_st->payload_size, |
1075 | 1090 |
ts_st->payload_pts, ts_st->payload_dts, |