Move dquant check into qscale overflow check.
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 21 Jan 2010 21:01:26 +0000 (21:01 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 21 Jan 2010 21:01:26 +0000 (21:01 +0000)
This should be faster (couldnt meassue a difference), and its less picky
on slightly out of spec dquant.

Originally committed as revision 21373 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/h264_cavlc.c

index b662ee8..c0308d0 100644 (file)
@@ -936,15 +936,15 @@ decode_intra_mb:
 
         dquant= get_se_golomb(&s->gb);
 
 
         dquant= get_se_golomb(&s->gb);
 
-        if( dquant > 25 || dquant < -26 ){
-            av_log(h->s.avctx, AV_LOG_ERROR, "dquant out of range (%d) at %d %d\n", dquant, s->mb_x, s->mb_y);
-            return -1;
-        }
-
         s->qscale += dquant;
         s->qscale += dquant;
+
         if(((unsigned)s->qscale) > 51){
             if(s->qscale<0) s->qscale+= 52;
             else            s->qscale-= 52;
         if(((unsigned)s->qscale) > 51){
             if(s->qscale<0) s->qscale+= 52;
             else            s->qscale-= 52;
+            if(((unsigned)s->qscale) > 51){
+                av_log(h->s.avctx, AV_LOG_ERROR, "dquant out of range (%d) at %d %d\n", dquant, s->mb_x, s->mb_y);
+                return -1;
+            }
         }
 
         h->chroma_qp[0]= get_chroma_qp(h, 0, s->qscale);
         }
 
         h->chroma_qp[0]= get_chroma_qp(h, 0, s->qscale);