[cvs] / xvidcore / src / bitstream / vlc_codes.h Repository:
ViewVC logotype

Diff of /xvidcore/src/bitstream/vlc_codes.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5, Wed Apr 10 07:43:20 2002 UTC revision 1.6.2.1, Sat Nov 2 15:52:31 2002 UTC
# Line 11  Line 11 
11  {  {
12          uint32_t code;          uint32_t code;
13          int8_t len;          int8_t len;
14  } VLC;  }
15    VLC;
16    
17  static VLC *DCT3D[2];  static VLC *DCT3D[2];
18    
# Line 214  Line 215 
215   * encoder tables                                                 *   * encoder tables                                                 *
216   ******************************************************************/   ******************************************************************/
217    
218    static VLC sprite_trajectory_code[32768];
219    
220    static VLC sprite_trajectory_len[15] = {
221            { 0x00 , 2},
222            { 0x02 , 3}, { 0x03, 3}, { 0x04, 3}, { 0x05, 3}, { 0x06, 3},
223            { 0x0E , 4}, { 0x1E, 5}, { 0x3E, 6}, { 0x7F, 7}, { 0xFE, 8},
224            { 0x1FE, 9}, {0x3FE,10}, {0x7FE,11}, {0xFFE,12} };
225    
226    
227  /* DCT coefficients. Four tables, two for last = 0, two for last = 1.  /* DCT coefficients. Four tables, two for last = 0, two for last = 1.
228     the sign bit must be added afterwards. */     the sign bit must be added afterwards. */
229    
# Line 969  Line 979 
979    
980  static const VLC mcbpc_inter_table[257] = {  static const VLC mcbpc_inter_table[257] = {
981          {VLC_ERROR,0},          {VLC_ERROR,0},
982          {255,9}, {52,9}, {36,9}, {20,9}, {49,9}, {35,8}, {35,8}, {19,8}, {19,8},          {255, 9}, {52, 9}, {36, 9}, {20, 9}, {49, 9}, {35, 8}, {35, 8}, {19, 8},
983          {50,8}, {50,8}, {51,7}, {51,7}, {51,7}, {51,7}, {34,7}, {34,7}, {34,7},                  {19, 8},
984          {34,7}, {18,7}, {18,7}, {18,7}, {18,7}, {33,7}, {33,7}, {33,7}, {33,7},          {50, 8}, {50, 8}, {51, 7}, {51, 7}, {51, 7}, {51, 7}, {34, 7}, {34, 7},
985                    {34, 7},
986            {34, 7}, {18, 7}, {18, 7}, {18, 7}, {18, 7}, {33, 7}, {33, 7}, {33, 7},
987                    {33, 7},
988          {17,7}, {17,7}, {17,7}, {17,7}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6},          {17,7}, {17,7}, {17,7}, {17,7}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6},
989          {4,6}, {4,6}, {4,6}, {48,6}, {48,6}, {48,6}, {48,6}, {48,6}, {48,6},          {4, 6}, {4, 6}, {4, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48,
990                                                                                                                                                      6},
991          {48,6}, {48,6}, {3,5}, {3,5}, {3,5}, {3,5}, {3,5}, {3,5}, {3,5},          {48,6}, {48,6}, {3,5}, {3,5}, {3,5}, {3,5}, {3,5}, {3,5}, {3,5},
992          {3,5}, {3,5}, {3,5}, {3,5}, {3,5}, {3,5}, {3,5}, {3,5}, {3,5},          {3,5}, {3,5}, {3,5}, {3,5}, {3,5}, {3,5}, {3,5}, {3,5}, {3,5},
993          {32,4}, {32,4}, {32,4}, {32,4}, {32,4}, {32,4}, {32,4}, {32,4}, {32,4},          {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
994          {32,4}, {32,4}, {32,4}, {32,4}, {32,4}, {32,4}, {32,4}, {32,4}, {32,4},                  {32, 4},
995          {32,4}, {32,4}, {32,4}, {32,4}, {32,4}, {32,4}, {32,4}, {32,4}, {32,4},          {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
996          {32,4}, {32,4}, {32,4}, {32,4}, {32,4}, {16,4}, {16,4}, {16,4}, {16,4},                  {32, 4},
997          {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4},          {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
998          {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4},                  {32, 4},
999          {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4},          {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {16, 4}, {16, 4}, {16, 4},
1000                    {16, 4},
1001            {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
1002                    {16, 4},
1003            {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
1004                    {16, 4},
1005            {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
1006                    {16, 4},
1007          {16,4}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3},          {16,4}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3},
1008          {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3},          {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3},
1009          {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3},          {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3},
# Line 1000  Line 1021 
1021          {1,3}, {1,3}, {1,3}, {0,1}          {1,3}, {1,3}, {1,3}, {0,1}
1022  };  };
1023    
1024  static const VLC cbpy_table[64] =  static const VLC cbpy_table[64] = {
 {  
1025          {-1,0}, {-1,0}, {6,6},  {9,6},  {8,5},  {8,5},  {4,5},  {4,5},          {-1,0}, {-1,0}, {6,6},  {9,6},  {8,5},  {8,5},  {4,5},  {4,5},
1026          {2,5},  {2,5},  {1,5},  {1,5},  {0,4},  {0,4},  {0,4},  {0,4},          {2,5},  {2,5},  {1,5},  {1,5},  {0,4},  {0,4},  {0,4},  {0,4},
1027          {12,4}, {12,4}, {12,4}, {12,4}, {10,4}, {10,4}, {10,4}, {10,4},          {12,4}, {12,4}, {12,4}, {12,4}, {10,4}, {10,4}, {10,4}, {10,4},
# Line 1015  Line 1035 
1035    
1036    
1037  VLC TMNMVtab0[] = {  VLC TMNMVtab0[] = {
1038          {3,4}, {-3,4}, {2,3}, {2,3}, {-2,3}, {-2,3}, {1,2}, {1,2}, {1,2}, {1,2},          {3, 4}, {-3, 4}, {2, 3}, {2, 3}, {-2, 3}, {-2, 3}, {1, 2}, {1, 2}, {1, 2},
1039                    {1, 2},
1040          {-1,2}, {-1,2}, {-1,2}, {-1,2}          {-1,2}, {-1,2}, {-1,2}, {-1,2}
1041  };  };
1042    
1043  VLC TMNMVtab1[] = {  VLC TMNMVtab1[] = {
1044          {12,10}, {-12,10}, {11,10}, {-11,10}, {10,9}, {10,9}, {-10,9}, {-10,9},          {12, 10}, {-12, 10}, {11, 10}, {-11, 10}, {10, 9}, {10, 9}, {-10, 9}, {-10,
1045          {9,9}, {9,9}, {-9,9}, {-9,9}, {8,9}, {8,9}, {-8,9}, {-8,9}, {7,7}, {7,7},                                                                                                                                                     9},
1046          {7,7}, {7,7}, {7,7}, {7,7}, {7,7}, {7,7}, {-7,7}, {-7,7}, {-7,7}, {-7,7},          {9, 9}, {9, 9}, {-9, 9}, {-9, 9}, {8, 9}, {8, 9}, {-8, 9}, {-8, 9}, {7, 7},
1047          {-7,7}, {-7,7}, {-7,7}, {-7,7}, {6,7}, {6,7}, {6,7}, {6,7}, {6,7}, {6,7},                  {7, 7},
1048          {6,7}, {6,7}, {-6,7}, {-6,7}, {-6,7}, {-6,7}, {-6,7}, {-6,7}, {-6,7},          {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {-7, 7}, {-7, 7}, {-7, 7},
1049          {-6,7}, {5,7}, {5,7}, {5,7}, {5,7}, {5,7}, {5,7}, {5,7}, {5,7}, {-5,7},                  {-7, 7},
1050          {-5,7}, {-5,7}, {-5,7}, {-5,7}, {-5,7}, {-5,7}, {-5,7}, {4,6}, {4,6}, {4,6},          {-7, 7}, {-7, 7}, {-7, 7}, {-7, 7}, {6, 7}, {6, 7}, {6, 7}, {6, 7}, {6, 7},
1051          {4,6}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6},                  {6, 7},
1052          {4,6}, {4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6},          {6, 7}, {6, 7}, {-6, 7}, {-6, 7}, {-6, 7}, {-6, 7}, {-6, 7}, {-6, 7}, {-6,
1053          {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}                                                                                                                                                     7},
1054            {-6, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7},
1055                    {-5, 7},
1056            {-5, 7}, {-5, 7}, {-5, 7}, {-5, 7}, {-5, 7}, {-5, 7}, {-5, 7}, {4, 6}, {4,
1057                                                                                                                                                            6},
1058                    {4, 6},
1059            {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4,
1060                                                                                                                                                             6},
1061                    {4, 6},
1062            {4, 6}, {4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4,
1063                                                                                                                                                       6},
1064            {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6},
1065                    {-4, 6}
1066  };  };
1067    
1068  VLC TMNMVtab2[] = {  VLC TMNMVtab2[] = {
1069          {32,12}, {-32,12}, {31,12}, {-31,12}, {30,11}, {30,11}, {-30,11}, {-30,11},          {32, 12}, {-32, 12}, {31, 12}, {-31, 12}, {30, 11}, {30, 11}, {-30, 11},
1070          {29,11}, {29,11}, {-29,11}, {-29,11}, {28,11}, {28,11}, {-28,11}, {-28,11},                  {-30, 11},
1071          {27,11}, {27,11}, {-27,11}, {-27,11}, {26,11}, {26,11}, {-26,11}, {-26,11},          {29, 11}, {29, 11}, {-29, 11}, {-29, 11}, {28, 11}, {28, 11}, {-28, 11},
1072          {25,11}, {25,11}, {-25,11}, {-25,11}, {24,10}, {24,10}, {24,10}, {24,10},                  {-28, 11},
1073          {-24,10}, {-24,10}, {-24,10}, {-24,10}, {23,10}, {23,10}, {23,10}, {23,10},          {27, 11}, {27, 11}, {-27, 11}, {-27, 11}, {26, 11}, {26, 11}, {-26, 11},
1074          {-23,10}, {-23,10}, {-23,10}, {-23,10}, {22,10}, {22,10}, {22,10}, {22,10},                  {-26, 11},
1075          {-22,10}, {-22,10}, {-22,10}, {-22,10}, {21,10}, {21,10}, {21,10}, {21,10},          {25, 11}, {25, 11}, {-25, 11}, {-25, 11}, {24, 10}, {24, 10}, {24, 10},
1076          {-21,10}, {-21,10}, {-21,10}, {-21,10}, {20,10}, {20,10}, {20,10}, {20,10},                  {24, 10},
1077          {-20,10}, {-20,10}, {-20,10}, {-20,10}, {19,10}, {19,10}, {19,10}, {19,10},          {-24, 10}, {-24, 10}, {-24, 10}, {-24, 10}, {23, 10}, {23, 10}, {23, 10},
1078          {-19,10}, {-19,10}, {-19,10}, {-19,10}, {18,10}, {18,10}, {18,10}, {18,10},                  {23, 10},
1079          {-18,10}, {-18,10}, {-18,10}, {-18,10}, {17,10}, {17,10}, {17,10}, {17,10},          {-23, 10}, {-23, 10}, {-23, 10}, {-23, 10}, {22, 10}, {22, 10}, {22, 10},
1080          {-17,10}, {-17,10}, {-17,10}, {-17,10}, {16,10}, {16,10}, {16,10}, {16,10},                  {22, 10},
1081          {-16,10}, {-16,10}, {-16,10}, {-16,10}, {15,10}, {15,10}, {15,10}, {15,10},          {-22, 10}, {-22, 10}, {-22, 10}, {-22, 10}, {21, 10}, {21, 10}, {21, 10},
1082          {-15,10}, {-15,10}, {-15,10}, {-15,10}, {14,10}, {14,10}, {14,10}, {14,10},                  {21, 10},
1083          {-14,10}, {-14,10}, {-14,10}, {-14,10}, {13,10}, {13,10}, {13,10}, {13,10},          {-21, 10}, {-21, 10}, {-21, 10}, {-21, 10}, {20, 10}, {20, 10}, {20, 10},
1084                    {20, 10},
1085            {-20, 10}, {-20, 10}, {-20, 10}, {-20, 10}, {19, 10}, {19, 10}, {19, 10},
1086                    {19, 10},
1087            {-19, 10}, {-19, 10}, {-19, 10}, {-19, 10}, {18, 10}, {18, 10}, {18, 10},
1088                    {18, 10},
1089            {-18, 10}, {-18, 10}, {-18, 10}, {-18, 10}, {17, 10}, {17, 10}, {17, 10},
1090                    {17, 10},
1091            {-17, 10}, {-17, 10}, {-17, 10}, {-17, 10}, {16, 10}, {16, 10}, {16, 10},
1092                    {16, 10},
1093            {-16, 10}, {-16, 10}, {-16, 10}, {-16, 10}, {15, 10}, {15, 10}, {15, 10},
1094                    {15, 10},
1095            {-15, 10}, {-15, 10}, {-15, 10}, {-15, 10}, {14, 10}, {14, 10}, {14, 10},
1096                    {14, 10},
1097            {-14, 10}, {-14, 10}, {-14, 10}, {-14, 10}, {13, 10}, {13, 10}, {13, 10},
1098                    {13, 10},
1099          {-13,10}, {-13,10}, {-13,10}, {-13,10}          {-13,10}, {-13,10}, {-13,10}, {-13,10}
1100  };  };
1101    
# Line 1227  Line 1275 
1275          {2, 2}, {2, 2}, {1, 2}, {1, 2},          {2, 2}, {2, 2}, {1, 2}, {1, 2},
1276  };  };
1277    
1278  static __inline int get_coeff(Bitstream * bs, int *run, int *last,  static __inline int
1279                                                            int intra, int short_video_header)  get_coeff(Bitstream * bs,
1280                      int *run,
1281                      int *last,
1282                      int intra,
1283                      int short_video_header)
1284  {  {
1285    
1286          uint32_t mode;          uint32_t mode;
# Line 1246  Line 1298 
1298          BitstreamSkip(bs, tab->len);          BitstreamSkip(bs, tab->len);
1299    
1300          if(tab->code != ESCAPE) {          if(tab->code != ESCAPE) {
1301                  if(!intra)                  if (!intra) {
                 {  
1302                          *run = (tab->code >> 4) & 255;                          *run = (tab->code >> 4) & 255;
1303                          level = tab->code & 15;                          level = tab->code & 15;
1304                          *last = (tab->code >> 12) & 1;                          *last = (tab->code >> 12) & 1;
1305                  }                  } else {
                 else  
                 {  
1306                          *run = (tab->code >> 8) & 255;                          *run = (tab->code >> 8) & 255;
1307                          level = tab->code & 255;                          level = tab->code & 255;
1308                          *last = (tab->code >> 16) & 1;                          *last = (tab->code >> 16) & 1;
# Line 1261  Line 1310 
1310                  return BitstreamGetBit(bs) ? -level : level;                  return BitstreamGetBit(bs) ? -level : level;
1311          }          }
1312    
1313          if(short_video_header)          if (short_video_header) {
         {  
1314                  // escape mode 4 - H.263 type, only used if short_video_header = 1                  // escape mode 4 - H.263 type, only used if short_video_header = 1
1315                  *last = BitstreamGetBit(bs);                  *last = BitstreamGetBit(bs);
1316                  *run = BitstreamGetBits(bs, 6);                  *run = BitstreamGetBits(bs, 6);
# Line 1289  Line 1337 
1337                          *run = (tab->code >> 4) & 255;                          *run = (tab->code >> 4) & 255;
1338                          level = tab->code & 15;                          level = tab->code & 15;
1339                          *last = (tab->code >> 12) & 1;                          *last = (tab->code >> 12) & 1;
1340                  }                  } else {
                 else  
                 {  
1341                          *run = (tab->code >> 8) & 255;                          *run = (tab->code >> 8) & 255;
1342                          level = tab->code & 255;                          level = tab->code & 255;
1343                          *last = (tab->code >> 16) & 1;                          *last = (tab->code >> 16) & 1;
# Line 1304  Line 1350 
1350    
1351                  return BitstreamGetBit(bs) ? -level : level;                  return BitstreamGetBit(bs) ? -level : level;
1352          }          }
   
1353          // third escape mode - fixed length codes          // third escape mode - fixed length codes
1354          BitstreamSkip(bs, 2);          BitstreamSkip(bs, 2);
1355          *last = BitstreamGetBits(bs, 1);          *last = BitstreamGetBits(bs, 1);

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6.2.1

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4