Browse code

mpegtsenc: check max_delay in write_packet_internal().

Checking it during PES writing is too late.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>

Michael Niedermayer authored on 2012/05/11 20:41:06
Showing 1 changed files
... ...
@@ -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,