simplify intra prediction mode decoding
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 4 Jul 2006 17:06:43 +0000 (17:06 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 4 Jul 2006 17:06:43 +0000 (17:06 +0000)
Originally committed as revision 5612 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/cavs.c
libavcodec/h264.c

index a4f6963..996567c 100644 (file)
@@ -885,17 +885,14 @@ static int decode_mb_i(AVSContext *h) {
 
         nA = h->pred_mode_Y[pos-1];
         nB = h->pred_mode_Y[pos-3];
 
         nA = h->pred_mode_Y[pos-1];
         nB = h->pred_mode_Y[pos-3];
-        if((nA == NOT_AVAIL) || (nB == NOT_AVAIL))
-            predpred = 2;
-        else
-            predpred = FFMIN(nA,nB);
-        if(get_bits1(gb))
-            h->pred_mode_Y[pos] = predpred;
-        else {
-            h->pred_mode_Y[pos] = get_bits(gb,2);
-            if(h->pred_mode_Y[pos] >= predpred)
-                h->pred_mode_Y[pos]++;
+        predpred = FFMIN(nA,nB);
+        if(predpred == NOT_AVAIL) // if either is not available
+            predpred = INTRA_L_LP;
+        if(!get_bits1(gb)){
+            int rem_mode= get_bits(gb, 2);
+            predpred = rem_mode + (rem_mode >= predpred);
         }
         }
+        h->pred_mode_Y[pos] = predpred;
     }
     pred_mode_uv = get_ue_golomb(gb);
     if(pred_mode_uv > 6) {
     }
     pred_mode_uv = get_ue_golomb(gb);
     if(pred_mode_uv > 6) {
index 9470177..8012ae1 100644 (file)
@@ -5258,18 +5258,11 @@ decode_intra_mb:
 
 //                fill_intra4x4_pred_table(h);
                 for(i=0; i<16; i+=di){
 
 //                fill_intra4x4_pred_table(h);
                 for(i=0; i<16; i+=di){
-                    const int mode_coded= !get_bits1(&s->gb);
-                    const int predicted_mode=  pred_intra_mode(h, i);
-                    int mode;
+                    int mode= pred_intra_mode(h, i);
 
 
-                    if(mode_coded){
+                    if(!get_bits1(&s->gb)){
                         const int rem_mode= get_bits(&s->gb, 3);
                         const int rem_mode= get_bits(&s->gb, 3);
-                        if(rem_mode<predicted_mode)
-                            mode= rem_mode;
-                        else
-                            mode= rem_mode + 1;
-                    }else{
-                        mode= predicted_mode;
+                        mode = rem_mode + (rem_mode >= mode);
                     }
 
                     if(di==4)
                     }
 
                     if(di==4)