changeset 1853:9de89f579086 libavcodec

add vlc for cbp=0 that is valid in 422,444
author iive
date Tue, 02 Mar 2004 18:39:25 +0000
parents 9ecbf5d23cdc
children 73ee15c391bf
files mpeg12.c mpeg12data.h
diffstat 2 files changed, 6 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/mpeg12.c	Tue Mar 02 17:21:55 2004 +0000
+++ b/mpeg12.c	Tue Mar 02 18:39:25 2004 +0000
@@ -596,7 +596,7 @@
                 s->mv_bits+= get_bits_diff(s);
             }
             if(cbp)
-                put_bits(&s->pb, mbPatTable[cbp - 1][1], mbPatTable[cbp - 1][0]);
+                put_bits(&s->pb, mbPatTable[cbp][1], mbPatTable[cbp][0]);
             s->f_count++;
         } else{  
             static const int mb_type_len[4]={0,3,4,2}; //bak,for,bi
@@ -675,7 +675,7 @@
             }
             s->mv_bits += get_bits_diff(s);
             if(cbp)
-                put_bits(&s->pb, mbPatTable[cbp - 1][1], mbPatTable[cbp - 1][0]);
+                put_bits(&s->pb, mbPatTable[cbp][1], mbPatTable[cbp][0]);
         }
         for(i=0;i<6;i++) {
             if (cbp & (1 << (5 - i))) {
@@ -967,7 +967,7 @@
         init_vlc(&mbincr_vlc, MBINCR_VLC_BITS, 36, 
                  &mbAddrIncrTable[0][1], 2, 1,
                  &mbAddrIncrTable[0][0], 2, 1);
-        init_vlc(&mb_pat_vlc, MB_PAT_VLC_BITS, 63, 
+        init_vlc(&mb_pat_vlc, MB_PAT_VLC_BITS, 64,
                  &mbPatTable[0][1], 2, 1,
                  &mbPatTable[0][0], 2, 1);
         
@@ -1306,11 +1306,10 @@
 
         if (HAS_CBP(mb_type)) {
             cbp = get_vlc2(&s->gb, mb_pat_vlc.table, MB_PAT_VLC_BITS, 1);
-            if (cbp < 0){
+            if (cbp < 0 || (cbp == 0) && (s->chroma_format < 2) ){
                 av_log(s->avctx, AV_LOG_ERROR, "invalid cbp at %d %d\n", s->mb_x, s->mb_y);
                 return -1;
             }
-            cbp++;
             if(s->chroma_format == 2){//CHROMA422
                  cbp|= ( get_bits(&s->gb,2) ) << 6;
             }else
--- a/mpeg12data.h	Tue Mar 02 17:21:55 2004 +0000
+++ b/mpeg12data.h	Tue Mar 02 18:39:25 2004 +0000
@@ -217,7 +217,8 @@
     {0x0, 8}, /* end (and 15 more 0 bits should follow) */
 };
 
-static const uint8_t mbPatTable[63][2] = {
+static const uint8_t mbPatTable[64][2] = {
+    {0x1, 9},
     {0xb, 5},
     {0x9, 5},
     {0xd, 6},