]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/svq3.c
closed gop support & flags2 as all bits in flags are used
[ffmpeg] / libavcodec / svq3.c
index b160987a058235682e736ed4f9d68f301def13e1..c8720c07aa66328a6c9cfe07552dbba3a34bfe2b 100644 (file)
@@ -697,8 +697,10 @@ static int svq3_decode_slice_header (H264Context *h) {
 
     h->next_slice_index = s->gb.index + 8*show_bits (&s->gb, 8*length) + 8*length;
 
-    if (h->next_slice_index > s->gb.size_in_bits)
+    if (h->next_slice_index > s->gb.size_in_bits){
+      av_log(h->s.avctx, AV_LOG_ERROR, "slice after bitstream end\n");
       return -1;
+    }
 
     s->gb.size_in_bits = h->next_slice_index - 8*(length - 1);
     s->gb.index += 8;
@@ -709,8 +711,10 @@ static int svq3_decode_slice_header (H264Context *h) {
     }
   }
 
-  if ((i = svq3_get_ue_golomb (&s->gb)) == INVALID_VLC || i >= 3)
+  if ((i = svq3_get_ue_golomb (&s->gb)) == INVALID_VLC || i >= 3){
+    av_log(h->s.avctx, AV_LOG_ERROR, "illegal slice type %d \n", i);
     return -1;
+  }
 
   h->slice_type = golomb_to_pict_type[i];
 
@@ -766,6 +770,7 @@ static int svq3_decode_frame (AVCodecContext *avctx,
   *data_size = 0;
 
   s->flags = avctx->flags;
+  s->flags2 = avctx->flags2;
   s->unrestricted_mv = 1;
 
   if (!s->context_initialized) {