⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tables.c

📁 代码实现了基于ARM7的MPEG-4视频解码器
💻 C
字号:
//********************************************
//File name:  tables.c
//Author:     Anna
//Date:
//********************************************
#include <string.h>

unsigned int zig_zag_scan[64] =
{
  0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5,
  12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28,
  35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51,
  58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63
};

unsigned int alternate_horizontal_scan[64] =
{
   0,  1,  2,  3,  8,  9, 16, 17, 
	10, 11,  4,  5,  6,  7, 15, 14,
  13, 12, 19, 18, 24, 25, 32, 33, 
	26, 27, 20, 21, 22, 23, 28, 29,
  30, 31, 34, 35, 40, 41, 48, 49, 
	42, 43, 36, 37, 38, 39, 44, 45,
  46, 47, 50, 51, 56, 57, 58, 59, 
	52, 53, 54, 55, 60, 61, 62, 63
};

unsigned int alternate_vertical_scan[64] =
{
   0,  8, 16, 24,  1,  9,  2, 10, 
	17, 25, 32, 40, 48, 56, 57, 49,
  41, 33, 26, 18,  3, 11,  4, 12, 
	19, 27, 34, 42, 50, 58, 35, 43,
  51, 59, 20, 28,  5, 13,  6, 14, 
	21, 29, 36, 44, 52, 60, 37, 45,
  53, 61, 22, 30,  7, 15, 23, 31, 
	38, 46, 54, 62, 39, 47, 55, 63
};

int MCBPCtabIntra_val[32] = {
	-1,
	20, 36, 52, 4, 4, 4, 
	4,  19, 19, 19,19,19, 
	19, 19, 19, 35,35,35, 
	35, 35, 35, 35,35,51, 
	51, 51, 51, 51,51,51,
	51
};

int MCBPCtabIntra_len[32] = {
	0,
	6, 6, 6, 4, 4, 4, 
	4, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 
	3,
};

int CBPYtab_val[48] = 
{ 
  -1, -1, 6,  9,  8, 8, 4, 4,
  2,  2,  1,  1,  0, 0, 0, 0, 
  12, 12, 12, 12, 10,10,10,10,
  14, 14, 14, 14, 5,  5, 5, 5,
  13, 13, 13, 13, 3,  3, 3, 3, 
  11, 11, 11, 11, 7,  7, 7, 7, 
};

int CBPYtab_len[48] = 
{ 
	0, 0, 6, 6, 5, 5, 5, 5,
	5, 5, 5, 5, 4, 4, 4, 4, 
    4, 4, 4, 4, 4, 4, 4, 4,
    4, 4, 4, 4, 4, 4, 4, 4,
    4, 4, 4, 4, 4, 4, 4, 4, 
    4, 4, 4, 4, 4, 4, 4, 4, 
};

int tableB16_1_val[112]=
                   { 4353,4289,385,4417,449,130,67,9,4098,4098,  
	                 321,321,4225,4225,4161,4161,257,257,193,193, 
	               8,  8,  7,   7,   66,  66,  6,  6, 129,129, 
	              129,129, 5,   5,   5,    5,  4,  4,  4,  4, 
	              4097,4097,4097,4097,4097,4097,4097,4097,1, 1,  
	                1,   1,  1,   1,   1,    1,  1,   1,  1, 1,  
	                1,   1,  1,   1,   1,    1,  1,   1,  1, 1, 
	                1,   1,  1,   1,   1,    1,  1,   1,  1, 1,  
	                2,   2,  2,   2,   2,    2,  2,   2,  2, 2,  
	               2,   2,  2,   2,   2,    2,  65,  65, 65,65, 
	                65,  65, 65,  65,  3,    3,  3,   3,   3, 3,  
	                3,   3 };
	                
    
int tableB16_1_len[112]=
                 {   7,   7,   7,  7,   7,    7,  7,   7,  6,  6,  
	               6,   6,   6,  6,   6,    6,  6,   6,  6,  6 ,
	               6,   6,   6,  6,   6,    6,  6,   6,  5,  5,  
	                5,   5,   5,  5,   5,    5,  5,   5,  5,  5 , 
	                4,   4,   4,  4,   4,    4,  4,   4,  2,  2 , 
	                2,   2,   2,  2,   2,    2,  2,   2,  2,  2, 
	                2,   2,   2,  2,   2,    2,  2,   2,  2,  2 , 
            	    2,   2,   2,  2,   2,    2,  2,   2,  2,  2,  
	                3,   3,   3,  3,   3,    3,  3,   3,  3,  3,  
	                3,   3,   3,  3,   3,    3,  4,   4,  4,  4,  
	                4,   4,   4,  4,   4,    4,  4,   4,  4,  4 , 
	                4,   4 };
          
int tableB16_2_val[96]=
            { 18,   17,  4993,  4993, 4929,  4929,  4865,  4865,  4801, 4801,
                4737, 4737,4162,  4162, 4100,  4100,  769,   769,   705,  705, 
                450,  450, 386,   386,  322,   322,   195,   195,   131,  131,
                70,   70,   69,   69,   16,    16,    258,   258,   15,   15,
                14,   14,  13,    13,   4609,  4609,  4609,  4609,  4545, 4545,
                 4545, 4545,4481,  4481, 4481,  4481,  4099,  4099,  4099, 4099,
                 641,  641,  641,  641,  577,   577,   577,   577,   513,  513,
                 513,  513,  4673, 4673, 4673,  4673,  194,   194,   194,  194,
                 68,   68,   68,   68,   12,    12,    12,    12,    11,   11,
                 11,   11,   10,   10,   10,    10 };

int tableB16_2_len[96]=
            {  10,   10,   9,    9,    9,   9,    9,     9,     9,    9,
                 9,    9,   9,    9,    9,   9,    9,     9,     9,    9,
                9,    9,   9,    9,    9,   9,    9,     9,     9,    9,
                  9,    9,   9,    9,    9,   9,    9,     9,     9,    9,
                  9,    9,  9,   9,   8,   8,    8,     8,     8,    8,
                  8,    8,   8,    8,    8,   8,    8,     8,     8,    8,
                  8,    8,   8,    8,    8,   8,    8,     8,     8,    8,
                  8,    8,   8,    8,    8,   8,    8,     8,     8,    8,
                  8,    8,   8,    8,    8,   8,    8,     8,     8,    8,
                  8,    8,   8,    8,    8,   8 };   
    
int tableB16_3_val[120]=
               {  4103,  4103,  4102,  4102,  22,  22,  21,  21,  4226,  4226,
                 4226,  4226,  4163,  4163,  4163,4163,4101,4101,4101,  4101,
                 833,   833,   833,   833,   323, 323, 323, 323, 514,   514,
                 514,   514,   259,   259,   259, 259, 196, 196, 196,   196,
                 132,   132,   132,   132,   71,  71,  71,  71,   20,    20, 
                 20,    20,    19,    19,    19,  19,  23,  23,   24,    24,
                 72,    72,    578,   578,   4290,4290,4354,4354, 5057,  5057,
                 5121,  5121,  25,    26,    27,  73,  387,  74,  133,   451,
                 897,   4104,  4418,  4482,  5185,5249,5313, 5377, 7167, 7167,
                 7167,  7167,  7167,  7167,  7167, 7167,7167,7167, 7167, 7167,
                 7167,  7167,  7167,  7167,  7167, 7167,7167,7167, 7167, 7167,
                 7167,  7167,  7167,  7167,  7167, 7167,7167,7167, 7167, 7167 };  

int tableB16_3_len[120]=
             {  11,    11,    11,     11,   11,   11,  11,  11,   10,   10,
                10,    10,    10,     10,   10,   10,  10,  10,   10,   10,
                10,    10,    10,     10,   10,   10,  10,  10,   10,   10,
                10,    10,    10,     10,   10,   10,  10,  10,   10,   10,
                10,    10,    10,     10,   10,   10,  10,  10,   10,   10,
                10,    10,    10,     10,   10,   10,  11,  11,   11,   11,
                11,    11,    11,     11,   11,   11,  11,  11,   11,   11,
                11,    11,    12,     12,   12,   12,  12,  12,   12,   12,
                12,    12,    12,     12,   12,   12,  12,  12,   7,    7,
                 7,     7,    7,      7,    7,    7,   7,   7,   7,    7,
                 7,     7,    7,      7,   7,     7,   7,   7,   7,    7,
                 7,     7,    7,      7,   7,     7,   7,   7,   7,    7 }; 


typedef struct {
	int val, len;
} tab_type;
           

tab_type MCBPCtabInter[256] = {
	{-1,0}, 
	{255,9}, {52,9}, {36,9}, {20,9}, {49,9}, {35,8}, {35,8}, {19,8}, {19,8},
	{50,8}, {50,8}, {51,7}, {51,7}, {51,7}, {51,7}, {34,7}, {34,7}, {34,7},
	{34,7}, {18,7}, {18,7}, {18,7}, {18,7}, {33,7}, {33,7}, {33,7}, {33,7}, 
	{17,7}, {17,7}, {17,7}, {17,7}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6}, 
	{4,6}, {4,6}, {4,6}, {48,6}, {48,6}, {48,6}, {48,6}, {48,6}, {48,6}, 
	{48,6}, {48,6}, {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}, 
	{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}, {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}, {16,4}, {16,4}, {16,4}, {16,4}, 
	{16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, 
	{16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, 
	{16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, {16,4}, 
	{16,4}, {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}, {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}, {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}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, {2,3}, 
	{2,3}, {2,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, 
	{1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, 
	{1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, 
	{1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, 
	{1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, 
	{1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, 
	{1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, {1,3}, 
	{1,3}, {1,3}, {1,3}, 
};

tab_type MVtab0[14] =
{
	{3,4}, {-3,4}, {2,3}, {2,3}, {-2,3}, {-2,3}, {1,2}, {1,2}, {1,2}, {1,2},
	{-1,2}, {-1,2}, {-1,2}, {-1,2}
};

tab_type MVtab1[96] = 
{
	{12,10}, {-12,10}, {11,10}, {-11,10}, {10,9}, {10,9}, {-10,9}, {-10,9},
	{9,9}, {9,9}, {-9,9}, {-9,9}, {8,9}, {8,9}, {-8,9}, {-8,9}, {7,7}, {7,7},
	{7,7}, {7,7}, {7,7}, {7,7}, {7,7}, {7,7}, {-7,7}, {-7,7}, {-7,7}, {-7,7},
	{-7,7}, {-7,7}, {-7,7}, {-7,7}, {6,7}, {6,7}, {6,7}, {6,7}, {6,7}, {6,7},
	{6,7}, {6,7}, {-6,7}, {-6,7}, {-6,7}, {-6,7}, {-6,7}, {-6,7}, {-6,7},
	{-6,7}, {5,7}, {5,7}, {5,7}, {5,7}, {5,7}, {5,7}, {5,7}, {5,7}, {-5,7},
	{-5,7}, {-5,7}, {-5,7}, {-5,7}, {-5,7}, {-5,7}, {-5,7}, {4,6}, {4,6}, {4,6},
	{4,6}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6}, {4,6},
	{4,6}, {4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6},
	{-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}, {-4,6}
};

tab_type MVtab2[124] = 
{
	{32,12}, {-32,12}, {31,12}, {-31,12}, {30,11}, {30,11}, {-30,11}, {-30,11},
	{29,11}, {29,11}, {-29,11}, {-29,11}, {28,11}, {28,11}, {-28,11}, {-28,11},
	{27,11}, {27,11}, {-27,11}, {-27,11}, {26,11}, {26,11}, {-26,11}, {-26,11},
	{25,11}, {25,11}, {-25,11}, {-25,11}, {24,10}, {24,10}, {24,10}, {24,10},
	{-24,10}, {-24,10}, {-24,10}, {-24,10}, {23,10}, {23,10}, {23,10}, {23,10},
	{-23,10}, {-23,10}, {-23,10}, {-23,10}, {22,10}, {22,10}, {22,10}, {22,10},
	{-22,10}, {-22,10}, {-22,10}, {-22,10}, {21,10}, {21,10}, {21,10}, {21,10},
	{-21,10}, {-21,10}, {-21,10}, {-21,10}, {20,10}, {20,10}, {20,10}, {20,10},
	{-20,10}, {-20,10}, {-20,10}, {-20,10}, {19,10}, {19,10}, {19,10}, {19,10},
	{-19,10}, {-19,10}, {-19,10}, {-19,10}, {18,10}, {18,10}, {18,10}, {18,10},
	{-18,10}, {-18,10}, {-18,10}, {-18,10}, {17,10}, {17,10}, {17,10}, {17,10},
	{-17,10}, {-17,10}, {-17,10}, {-17,10}, {16,10}, {16,10}, {16,10}, {16,10},
	{-16,10}, {-16,10}, {-16,10}, {-16,10}, {15,10}, {15,10}, {15,10}, {15,10},
	{-15,10}, {-15,10}, {-15,10}, {-15,10}, {14,10}, {14,10}, {14,10}, {14,10},
	{-14,10}, {-14,10}, {-14,10}, {-14,10}, {13,10}, {13,10}, {13,10}, {13,10},
	{-13,10}, {-13,10}, {-13,10}, {-13,10}
};

 tab_type tableB17_1[] = { {4225,7}, {4209,7}, {4193,7}, {4177,7}, {193,7}, {177,7}, {161,7}, {4,7}, {4161,6}, {4161,6}, {4145,6}, {4145,6}, {4129,6}, {4129,6}, {4113,6}, {4113,6}, {145,6}, {145,6}, {129,6}, {129,6}, {113,6}, {113,6}, {97,6}, {97,6}, {18,6}, {18,6}, {3,6}, {3,6}, {81,5}, {81,5}, {81,5}, {81,5}, {65,5}, {65,5}, {65,5}, {65,5}, {49,5}, {49,5}, {49,5}, {49,5}, {4097,4}, {4097,4}, {4097,4}, {4097,4}, {4097,4}, {4097,4}, {4097,4}, {4097,4}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {33,4}, {33,4}, {33,4}, {33,4}, {33,4}, {33,4}, {33,4}, {33,4}, {2,4}, {2,4},{2,4},{2,4}, {2,4}, {2,4},{2,4},{2,4} };
 tab_type tableB17_2[] = { {9,10}, {8,10}, {4481,9}, {4481,9}, {4465,9}, {4465,9}, {4449,9}, {4449,9}, {4433,9}, {4433,9}, {4417,9}, {4417,9}, {4401,9}, {4401,9}, {4385,9}, {4385,9}, {4369,9}, {4369,9}, {4098,9}, {4098,9}, {353,9}, {353,9}, {337,9}, {337,9}, {321,9}, {321,9}, {305,9}, {305,9}, {289,9}, {289,9}, {273,9}, {273,9}, {257,9}, {257,9}, {241,9}, {241,9}, {66,9}, {66,9}, {50,9}, {50,9}, {7,9}, {7,9}, {6,9}, {6,9}, {4353,8}, {4353,8}, {4353,8}, {4353,8}, {4337,8}, {4337,8}, {4337,8}, {4337,8}, {4321,8}, {4321,8}, {4321,8}, {4321,8}, {4305,8}, {4305,8}, {4305,8}, {4305,8}, {4289,8}, {4289,8}, {4289,8}, {4289,8}, {4273,8}, {4273,8}, {4273,8}, {4273,8}, {4257,8}, {4257,8}, {4257,8}, {4257,8}, {4241,8}, {4241,8}, {4241,8}, {4241,8}, {225,8}, {225,8}, {225,8}, {225,8}, {209,8}, {209,8}, {209,8}, {209,8}, {34,8}, {34,8}, {34,8}, {34,8}, {19,8}, {19,8}, {19,8}, {19,8}, {5,8}, {5,8}, {5,8}, {5,8}, };
 tab_type tableB17_3[] = { {4114,11}, {4114,11}, {4099,11}, {4099,11}, {11,11}, {11,11}, {10,11}, {10,11}, {4545,10}, {4545,10}, {4545,10}, {4545,10}, {4529,10}, {4529,10}, {4529,10}, {4529,10}, {4513,10}, {4513,10}, {4513,10}, {4513,10}, {4497,10}, {4497,10}, {4497,10}, {4497,10}, {146,10}, {146,10}, {146,10}, {146,10}, {130,10}, {130,10}, {130,10}, {130,10}, {114,10}, {114,10}, {114,10}, {114,10}, {98,10}, {98,10}, {98,10}, {98,10}, {82,10}, {82,10}, {82,10}, {82,10}, {51,10}, {51,10}, {51,10}, {51,10}, {35,10}, {35,10}, {35,10}, {35,10}, {20,10}, {20,10}, {20,10}, {20,10}, {12,11}, {12,11}, {21,11}, {21,11}, {369,11}, {369,11}, {385,11}, {385,11}, {4561,11}, {4561,11}, {4577,11}, {4577,11}, {4593,11}, {4593,11}, {4609,11}, {4609,11}, {22,12}, {36,12}, {67,12}, {83,12}, {99,12}, {162,12}, {401,12}, {417,12}, {4625,12}, {4641,12}, {4657,12}, {4673,12}, {4689,12}, {4705,12}, {4721,12}, {4737,12}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, };

int roundtab[16] = {0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2};

int DQtab[4] = {
	-1, -2, 1, 2
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -