cavsdec: fix qp fixed slice handling
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 9 Jun 2014 03:47:49 +0000 (05:47 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 9 Jun 2014 03:47:49 +0000 (05:47 +0200)
Fixes Ticket3400

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/cavs.h
libavcodec/cavsdec.c

index f3c05dc..f851409 100644 (file)
@@ -214,6 +214,7 @@ typedef struct AVSContext {
     int luma_scan[4];
     int qp;
     int qp_fixed;
+    int pic_qp_fixed;
     int cbp;
     ScanTable scantable;
 
index 93d1c59..399b5b9 100644 (file)
@@ -904,7 +904,7 @@ static inline int decode_slice_header(AVSContext *h, GetBitContext *gb)
 
     /* mark top macroblocks as unavailable */
     h->flags &= ~(B_AVAIL | C_AVAIL);
-    if ((h->mby == 0) && (!h->qp_fixed)) {
+    if (!h->pic_qp_fixed) {
         h->qp_fixed = get_bits1(gb);
         h->qp       = get_bits(gb, 6);
     }
@@ -1027,6 +1027,7 @@ static int decode_pic(AVSContext *h)
         skip_bits1(&h->gb);     //advanced_pred_mode_disable
     skip_bits1(&h->gb);        //top_field_first
     skip_bits1(&h->gb);        //repeat_first_field
+    h->pic_qp_fixed =
     h->qp_fixed = get_bits1(&h->gb);
     h->qp       = get_bits(&h->gb, 6);
     if (h->cur.f->pict_type == AV_PICTURE_TYPE_I) {