]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/h264_parser.c
ADTS: Increased protection against writing illegal/nonsense files.
[ffmpeg] / libavcodec / h264_parser.c
index a0120ac2a136e69047cf68ddc022f69900357c5e..39433bb2e9565c89b5ccf6403b4a4f298fb58a84 100644 (file)
@@ -123,6 +123,9 @@ static inline int parse_nal_units(AVCodecParserContext *s,
 
     h->s.avctx= avctx;
     h->sei_recovery_frame_cnt = -1;
+    h->sei_dpb_output_delay         =  0;
+    h->sei_cpb_removal_delay        = -1;
+    h->sei_buffering_period_present =  0;
 
     for(;;) {
         int src_length, dst_length, consumed;
@@ -256,6 +259,16 @@ static int h264_parse(AVCodecParserContext *s,
         }
 
         parse_nal_units(s, avctx, buf, buf_size);
+
+        if (h->sei_cpb_removal_delay >= 0) {
+            s->dts_sync_point    = h->sei_buffering_period_present;
+            s->dts_ref_dts_delta = h->sei_cpb_removal_delay;
+            s->pts_dts_delta     = h->sei_dpb_output_delay;
+        } else {
+            s->dts_sync_point    = INT_MIN;
+            s->dts_ref_dts_delta = INT_MIN;
+            s->pts_dts_delta     = INT_MIN;
+        }
     }
 
     *poutbuf = buf;