00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00029 #ifndef AVCODEC_H263DATA_H
00030 #define AVCODEC_H263DATA_H
00031
00032 #include <stdint.h>
00033 #include "mpegvideo.h"
00034
00035
00036 const uint8_t ff_h263_intra_MCBPC_code[9] = { 1, 1, 2, 3, 1, 1, 2, 3, 1 };
00037 const uint8_t ff_h263_intra_MCBPC_bits[9] = { 1, 3, 3, 3, 4, 6, 6, 6, 9 };
00038
00039
00040
00041 const uint8_t ff_h263_inter_MCBPC_code[28] = {
00042 1, 3, 2, 5,
00043 3, 4, 3, 3,
00044 3, 7, 6, 5,
00045 4, 4, 3, 2,
00046 2, 5, 4, 5,
00047 1, 0, 0, 0,
00048 2, 12, 14, 15,
00049 };
00050 const uint8_t ff_h263_inter_MCBPC_bits[28] = {
00051 1, 4, 4, 6,
00052 5, 8, 8, 7,
00053 3, 7, 7, 9,
00054 6, 9, 9, 9,
00055 3, 7, 7, 8,
00056 9, 0, 0, 0,
00057 11, 13, 13, 13,
00058 };
00059
00060 const uint8_t h263_mbtype_b_tab[15][2] = {
00061 {1, 1},
00062 {3, 3},
00063 {1, 5},
00064 {4, 4},
00065 {5, 4},
00066 {6, 6},
00067 {2, 4},
00068 {3, 4},
00069 {7, 6},
00070 {4, 6},
00071 {5, 6},
00072 {1, 6},
00073 {1,10},
00074 {1, 7},
00075 {1, 8},
00076 };
00077
00078 const uint8_t cbpc_b_tab[4][2] = {
00079 {0, 1},
00080 {2, 2},
00081 {7, 3},
00082 {6, 3},
00083 };
00084
00085 const uint8_t ff_h263_cbpy_tab[16][2] =
00086 {
00087 {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
00088 {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
00089 };
00090
00091 const uint8_t mvtab[33][2] =
00092 {
00093 {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
00094 {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},
00095 {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},
00096 {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},
00097 {2,12}
00098 };
00099
00100
00101 const uint16_t inter_vlc[103][2] = {
00102 { 0x2, 2 },{ 0xf, 4 },{ 0x15, 6 },{ 0x17, 7 },
00103 { 0x1f, 8 },{ 0x25, 9 },{ 0x24, 9 },{ 0x21, 10 },
00104 { 0x20, 10 },{ 0x7, 11 },{ 0x6, 11 },{ 0x20, 11 },
00105 { 0x6, 3 },{ 0x14, 6 },{ 0x1e, 8 },{ 0xf, 10 },
00106 { 0x21, 11 },{ 0x50, 12 },{ 0xe, 4 },{ 0x1d, 8 },
00107 { 0xe, 10 },{ 0x51, 12 },{ 0xd, 5 },{ 0x23, 9 },
00108 { 0xd, 10 },{ 0xc, 5 },{ 0x22, 9 },{ 0x52, 12 },
00109 { 0xb, 5 },{ 0xc, 10 },{ 0x53, 12 },{ 0x13, 6 },
00110 { 0xb, 10 },{ 0x54, 12 },{ 0x12, 6 },{ 0xa, 10 },
00111 { 0x11, 6 },{ 0x9, 10 },{ 0x10, 6 },{ 0x8, 10 },
00112 { 0x16, 7 },{ 0x55, 12 },{ 0x15, 7 },{ 0x14, 7 },
00113 { 0x1c, 8 },{ 0x1b, 8 },{ 0x21, 9 },{ 0x20, 9 },
00114 { 0x1f, 9 },{ 0x1e, 9 },{ 0x1d, 9 },{ 0x1c, 9 },
00115 { 0x1b, 9 },{ 0x1a, 9 },{ 0x22, 11 },{ 0x23, 11 },
00116 { 0x56, 12 },{ 0x57, 12 },{ 0x7, 4 },{ 0x19, 9 },
00117 { 0x5, 11 },{ 0xf, 6 },{ 0x4, 11 },{ 0xe, 6 },
00118 { 0xd, 6 },{ 0xc, 6 },{ 0x13, 7 },{ 0x12, 7 },
00119 { 0x11, 7 },{ 0x10, 7 },{ 0x1a, 8 },{ 0x19, 8 },
00120 { 0x18, 8 },{ 0x17, 8 },{ 0x16, 8 },{ 0x15, 8 },
00121 { 0x14, 8 },{ 0x13, 8 },{ 0x18, 9 },{ 0x17, 9 },
00122 { 0x16, 9 },{ 0x15, 9 },{ 0x14, 9 },{ 0x13, 9 },
00123 { 0x12, 9 },{ 0x11, 9 },{ 0x7, 10 },{ 0x6, 10 },
00124 { 0x5, 10 },{ 0x4, 10 },{ 0x24, 11 },{ 0x25, 11 },
00125 { 0x26, 11 },{ 0x27, 11 },{ 0x58, 12 },{ 0x59, 12 },
00126 { 0x5a, 12 },{ 0x5b, 12 },{ 0x5c, 12 },{ 0x5d, 12 },
00127 { 0x5e, 12 },{ 0x5f, 12 },{ 0x3, 7 },
00128 };
00129
00130 const int8_t inter_level[102] = {
00131 1, 2, 3, 4, 5, 6, 7, 8,
00132 9, 10, 11, 12, 1, 2, 3, 4,
00133 5, 6, 1, 2, 3, 4, 1, 2,
00134 3, 1, 2, 3, 1, 2, 3, 1,
00135 2, 3, 1, 2, 1, 2, 1, 2,
00136 1, 2, 1, 1, 1, 1, 1, 1,
00137 1, 1, 1, 1, 1, 1, 1, 1,
00138 1, 1, 1, 2, 3, 1, 2, 1,
00139 1, 1, 1, 1, 1, 1, 1, 1,
00140 1, 1, 1, 1, 1, 1, 1, 1,
00141 1, 1, 1, 1, 1, 1, 1, 1,
00142 1, 1, 1, 1, 1, 1, 1, 1,
00143 1, 1, 1, 1, 1, 1,
00144 };
00145
00146 const int8_t inter_run[102] = {
00147 0, 0, 0, 0, 0, 0, 0, 0,
00148 0, 0, 0, 0, 1, 1, 1, 1,
00149 1, 1, 2, 2, 2, 2, 3, 3,
00150 3, 4, 4, 4, 5, 5, 5, 6,
00151 6, 6, 7, 7, 8, 8, 9, 9,
00152 10, 10, 11, 12, 13, 14, 15, 16,
00153 17, 18, 19, 20, 21, 22, 23, 24,
00154 25, 26, 0, 0, 0, 1, 1, 2,
00155 3, 4, 5, 6, 7, 8, 9, 10,
00156 11, 12, 13, 14, 15, 16, 17, 18,
00157 19, 20, 21, 22, 23, 24, 25, 26,
00158 27, 28, 29, 30, 31, 32, 33, 34,
00159 35, 36, 37, 38, 39, 40,
00160 };
00161
00162 RLTable ff_h263_rl_inter = {
00163 102,
00164 58,
00165 inter_vlc,
00166 inter_run,
00167 inter_level,
00168 };
00169
00170 static const uint16_t intra_vlc_aic[103][2] = {
00171 { 0x2, 2 }, { 0x6, 3 }, { 0xe, 4 }, { 0xc, 5 },
00172 { 0xd, 5 }, { 0x10, 6 }, { 0x11, 6 }, { 0x12, 6 },
00173 { 0x16, 7 }, { 0x1b, 8 }, { 0x20, 9 }, { 0x21, 9 },
00174 { 0x1a, 9 }, { 0x1b, 9 }, { 0x1c, 9 }, { 0x1d, 9 },
00175 { 0x1e, 9 }, { 0x1f, 9 }, { 0x23, 11 }, { 0x22, 11 },
00176 { 0x57, 12 }, { 0x56, 12 }, { 0x55, 12 }, { 0x54, 12 },
00177 { 0x53, 12 }, { 0xf, 4 }, { 0x14, 6 }, { 0x14, 7 },
00178 { 0x1e, 8 }, { 0xf, 10 }, { 0x21, 11 }, { 0x50, 12 },
00179 { 0xb, 5 }, { 0x15, 7 }, { 0xe, 10 }, { 0x9, 10 },
00180 { 0x15, 6 }, { 0x1d, 8 }, { 0xd, 10 }, { 0x51, 12 },
00181 { 0x13, 6 }, { 0x23, 9 }, { 0x7, 11 }, { 0x17, 7 },
00182 { 0x22, 9 }, { 0x52, 12 }, { 0x1c, 8 }, { 0xc, 10 },
00183 { 0x1f, 8 }, { 0xb, 10 }, { 0x25, 9 }, { 0xa, 10 },
00184 { 0x24, 9 }, { 0x6, 11 }, { 0x21, 10 }, { 0x20, 10 },
00185 { 0x8, 10 }, { 0x20, 11 }, { 0x7, 4 }, { 0xc, 6 },
00186 { 0x10, 7 }, { 0x13, 8 }, { 0x11, 9 }, { 0x12, 9 },
00187 { 0x4, 10 }, { 0x27, 11 }, { 0x26, 11 }, { 0x5f, 12 },
00188 { 0xf, 6 }, { 0x13, 9 }, { 0x5, 10 }, { 0x25, 11 },
00189 { 0xe, 6 }, { 0x14, 9 }, { 0x24, 11 }, { 0xd, 6 },
00190 { 0x6, 10 }, { 0x5e, 12 }, { 0x11, 7 }, { 0x7, 10 },
00191 { 0x13, 7 }, { 0x5d, 12 }, { 0x12, 7 }, { 0x5c, 12 },
00192 { 0x14, 8 }, { 0x5b, 12 }, { 0x15, 8 }, { 0x1a, 8 },
00193 { 0x19, 8 }, { 0x18, 8 }, { 0x17, 8 }, { 0x16, 8 },
00194 { 0x19, 9 }, { 0x15, 9 }, { 0x16, 9 }, { 0x18, 9 },
00195 { 0x17, 9 }, { 0x4, 11 }, { 0x5, 11 }, { 0x58, 12 },
00196 { 0x59, 12 }, { 0x5a, 12 }, { 0x3, 7 },
00197 };
00198
00199 static const int8_t intra_run_aic[102] = {
00200 0, 0, 0, 0, 0, 0, 0, 0,
00201 0, 0, 0, 0, 0, 0, 0, 0,
00202 0, 0, 0, 0, 0, 0, 0, 0,
00203 0, 1, 1, 1, 1, 1, 1, 1,
00204 2, 2, 2, 2, 3, 3, 3, 3,
00205 4, 4, 4, 5, 5, 5, 6, 6,
00206 7, 7, 8, 8, 9, 9, 10, 11,
00207 12, 13, 0, 0, 0, 0, 0, 0,
00208 0, 0, 0, 0, 1, 1, 1, 1,
00209 2, 2, 2, 3, 3, 3, 4, 4,
00210 5, 5, 6, 6, 7, 7, 8, 9,
00211 10, 11, 12, 13, 14, 15, 16, 17,
00212 18, 19, 20, 21, 22, 23,
00213 };
00214
00215 static const int8_t intra_level_aic[102] = {
00216 1, 2, 3, 4, 5, 6, 7, 8,
00217 9, 10, 11, 12, 13, 14, 15, 16,
00218 17, 18, 19, 20, 21, 22, 23, 24,
00219 25, 1, 2, 3, 4, 5, 6, 7,
00220 1, 2, 3, 4, 1, 2, 3, 4,
00221 1, 2, 3, 1, 2, 3, 1, 2,
00222 1, 2, 1, 2, 1, 2, 1, 1,
00223 1, 1, 1, 2, 3, 4, 5, 6,
00224 7, 8, 9, 10, 1, 2, 3, 4,
00225 1, 2, 3, 1, 2, 3, 1, 2,
00226 1, 2, 1, 2, 1, 2, 1, 1,
00227 1, 1, 1, 1, 1, 1, 1, 1,
00228 1, 1, 1, 1, 1, 1,
00229 };
00230
00231 RLTable rl_intra_aic = {
00232 102,
00233 58,
00234 intra_vlc_aic,
00235 intra_run_aic,
00236 intra_level_aic,
00237 };
00238
00239 const uint16_t h263_format[8][2] = {
00240 { 0, 0 },
00241 { 128, 96 },
00242 { 176, 144 },
00243 { 352, 288 },
00244 { 704, 576 },
00245 { 1408, 1152 },
00246 };
00247
00248 const uint8_t ff_aic_dc_scale_table[32]={
00249
00250 0, 2, 4, 6, 8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62
00251 };
00252
00253 const uint8_t modified_quant_tab[2][32]={
00254
00255 {
00256 0, 3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9,10,11,12,13,14,15,16,17,18,18,19,20,21,22,23,24,25,26,27,28
00257 },{
00258 0, 2, 3, 4, 5, 6, 7, 8, 9,10,11,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,31,31,26
00259 }
00260 };
00261
00262 const uint8_t ff_h263_chroma_qscale_table[32]={
00263
00264 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 9,10,10,11,11,12,12,12,13,13,13,14,14,14,14,14,15,15,15,15,15
00265 };
00266
00267 uint16_t ff_mba_max[6]={
00268 47, 98, 395,1583,6335,9215
00269 };
00270
00271 uint8_t ff_mba_length[7]={
00272 6, 7, 9, 11, 13, 14, 14
00273 };
00274
00275 const uint8_t ff_h263_loop_filter_strength[32]={
00276
00277 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9,10,10,10,11,11,11,12,12,12
00278 };
00279
00280 const AVRational ff_h263_pixel_aspect[16]={
00281 {0, 1},
00282 {1, 1},
00283 {12, 11},
00284 {10, 11},
00285 {16, 11},
00286 {40, 33},
00287 {0, 1},
00288 {0, 1},
00289 {0, 1},
00290 {0, 1},
00291 {0, 1},
00292 {0, 1},
00293 {0, 1},
00294 {0, 1},
00295 {0, 1},
00296 {0, 1},
00297 };
00298
00299 #endif