From 3a3f1cf3f8801a5bd53a80ec52ed80fb234fc28b Mon Sep 17 00:00:00 2001
From: Kostya Shishkov <kostya.shishkov@gmail.com>
Date: Sun, 9 Jul 2006 02:51:13 +0000
Subject: [PATCH] Fix mquant selection for ALL_MBS mode

Originally committed as revision 5686 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavcodec/vc1.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c
index 62ccee97889..2b43070c6fb 100644
--- a/libavcodec/vc1.c
+++ b/libavcodec/vc1.c
@@ -704,7 +704,7 @@ static int vop_dquant_decoding(VC1Context *v)
                 v->dqbilevel = get_bits(gb, 1);
             default: break; //Forbidden ?
             }
-            if (!v->dqbilevel || v->dqprofile != DQPROFILE_ALL_MBS)
+            if (v->dqbilevel || v->dqprofile != DQPROFILE_ALL_MBS)
             {
                 pqdiff = get_bits(gb, 3);
                 if (pqdiff == 7) v->altpq = get_bits(gb, 5);
@@ -1449,7 +1449,7 @@ static int vc1_parse_frame_header(VC1Context *v, GetBitContext* gb)
     {                                                          \
       if (v->dqbilevel)                                        \
       {                                                        \
-        mquant = (get_bits(gb, 1)) ? v->pq : v->altpq;         \
+        mquant = (get_bits(gb, 1)) ? v->altpq : v->pq;         \
       }                                                        \
       else                                                     \
       {                                                        \
@@ -1464,10 +1464,9 @@ static int vc1_parse_frame_header(VC1Context *v, GetBitContext* gb)
         edges = (3 << v->dqsbedge) % 15;                       \
     else if(v->dqprofile == DQPROFILE_FOUR_EDGES)              \
         edges = 15;                                            \
-    mquant = v->pq;                                            \
     if((edges&1) && !s->mb_x)                                  \
         mquant = v->altpq;                                     \
-    if((edges&2) && !s->mb_y)                                  \
+    if((edges&2) && s->first_slice_line)                       \
         mquant = v->altpq;                                     \
     if((edges&4) && s->mb_x == (s->mb_width - 1))              \
         mquant = v->altpq;                                     \
-- 
GitLab