00001 /* 00002 * copyright (c) 2000,2001 Fabrice Bellard 00003 * H263+ support 00004 * copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at> 00005 * 00006 * This file is part of FFmpeg. 00007 * 00008 * FFmpeg is free software; you can redistribute it and/or 00009 * modify it under the terms of the GNU Lesser General Public 00010 * License as published by the Free Software Foundation; either 00011 * version 2.1 of the License, or (at your option) any later version. 00012 * 00013 * FFmpeg is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 * Lesser General Public License for more details. 00017 * 00018 * You should have received a copy of the GNU Lesser General Public 00019 * License along with FFmpeg; if not, write to the Free Software 00020 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00021 */ 00022 00028 #ifndef AVCODEC_MPEG4DATA_H 00029 #define AVCODEC_MPEG4DATA_H 00030 00031 #include <stdint.h> 00032 #include "mpegvideo.h" 00033 00034 // shapes 00035 #define RECT_SHAPE 0 00036 #define BIN_SHAPE 1 00037 #define BIN_ONLY_SHAPE 2 00038 #define GRAY_SHAPE 3 00039 00040 #define SIMPLE_VO_TYPE 1 00041 #define CORE_VO_TYPE 3 00042 #define MAIN_VO_TYPE 4 00043 #define NBIT_VO_TYPE 5 00044 #define ARTS_VO_TYPE 10 00045 #define ACE_VO_TYPE 12 00046 #define ADV_SIMPLE_VO_TYPE 17 00047 00048 // aspect_ratio_info 00049 #define EXTENDED_PAR 15 00050 00051 //vol_sprite_usage / sprite_enable 00052 #define STATIC_SPRITE 1 00053 #define GMC_SPRITE 2 00054 00055 #define MOTION_MARKER 0x1F001 00056 #define DC_MARKER 0x6B001 00057 00058 static const int mb_type_b_map[4]= { 00059 MB_TYPE_DIRECT2 | MB_TYPE_L0L1, 00060 MB_TYPE_L0L1 | MB_TYPE_16x16, 00061 MB_TYPE_L1 | MB_TYPE_16x16, 00062 MB_TYPE_L0 | MB_TYPE_16x16, 00063 }; 00064 00065 #define VOS_STARTCODE 0x1B0 00066 #define USER_DATA_STARTCODE 0x1B2 00067 #define GOP_STARTCODE 0x1B3 00068 #define VISUAL_OBJ_STARTCODE 0x1B5 00069 #define VOP_STARTCODE 0x1B6 00070 00071 /* dc encoding for mpeg4 */ 00072 const uint8_t DCtab_lum[13][2] = 00073 { 00074 {3,3}, {3,2}, {2,2}, {2,3}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7}, 00075 {1,8}, {1,9}, {1,10}, {1,11}, 00076 }; 00077 00078 const uint8_t DCtab_chrom[13][2] = 00079 { 00080 {3,2}, {2,2}, {1,2}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7}, {1,8}, 00081 {1,9}, {1,10}, {1,11}, {1,12}, 00082 }; 00083 00084 const uint16_t intra_vlc[103][2] = { 00085 { 0x2, 2 }, 00086 { 0x6, 3 },{ 0xf, 4 },{ 0xd, 5 },{ 0xc, 5 }, 00087 { 0x15, 6 },{ 0x13, 6 },{ 0x12, 6 },{ 0x17, 7 }, 00088 { 0x1f, 8 },{ 0x1e, 8 },{ 0x1d, 8 },{ 0x25, 9 }, 00089 { 0x24, 9 },{ 0x23, 9 },{ 0x21, 9 },{ 0x21, 10 }, 00090 { 0x20, 10 },{ 0xf, 10 },{ 0xe, 10 },{ 0x7, 11 }, 00091 { 0x6, 11 },{ 0x20, 11 },{ 0x21, 11 },{ 0x50, 12 }, 00092 { 0x51, 12 },{ 0x52, 12 },{ 0xe, 4 },{ 0x14, 6 }, 00093 { 0x16, 7 },{ 0x1c, 8 },{ 0x20, 9 },{ 0x1f, 9 }, 00094 { 0xd, 10 },{ 0x22, 11 },{ 0x53, 12 },{ 0x55, 12 }, 00095 { 0xb, 5 },{ 0x15, 7 },{ 0x1e, 9 },{ 0xc, 10 }, 00096 { 0x56, 12 },{ 0x11, 6 },{ 0x1b, 8 },{ 0x1d, 9 }, 00097 { 0xb, 10 },{ 0x10, 6 },{ 0x22, 9 },{ 0xa, 10 }, 00098 { 0xd, 6 },{ 0x1c, 9 },{ 0x8, 10 },{ 0x12, 7 }, 00099 { 0x1b, 9 },{ 0x54, 12 },{ 0x14, 7 },{ 0x1a, 9 }, 00100 { 0x57, 12 },{ 0x19, 8 },{ 0x9, 10 },{ 0x18, 8 }, 00101 { 0x23, 11 },{ 0x17, 8 },{ 0x19, 9 },{ 0x18, 9 }, 00102 { 0x7, 10 },{ 0x58, 12 },{ 0x7, 4 },{ 0xc, 6 }, 00103 { 0x16, 8 },{ 0x17, 9 },{ 0x6, 10 },{ 0x5, 11 }, 00104 { 0x4, 11 },{ 0x59, 12 },{ 0xf, 6 },{ 0x16, 9 }, 00105 { 0x5, 10 },{ 0xe, 6 },{ 0x4, 10 },{ 0x11, 7 }, 00106 { 0x24, 11 },{ 0x10, 7 },{ 0x25, 11 },{ 0x13, 7 }, 00107 { 0x5a, 12 },{ 0x15, 8 },{ 0x5b, 12 },{ 0x14, 8 }, 00108 { 0x13, 8 },{ 0x1a, 8 },{ 0x15, 9 },{ 0x14, 9 }, 00109 { 0x13, 9 },{ 0x12, 9 },{ 0x11, 9 },{ 0x26, 11 }, 00110 { 0x27, 11 },{ 0x5c, 12 },{ 0x5d, 12 },{ 0x5e, 12 }, 00111 { 0x5f, 12 },{ 0x3, 7 }, 00112 }; 00113 00114 const int8_t intra_level[102] = { 00115 1, 2, 3, 4, 5, 6, 7, 8, 00116 9, 10, 11, 12, 13, 14, 15, 16, 00117 17, 18, 19, 20, 21, 22, 23, 24, 00118 25, 26, 27, 1, 2, 3, 4, 5, 00119 6, 7, 8, 9, 10, 1, 2, 3, 00120 4, 5, 1, 2, 3, 4, 1, 2, 00121 3, 1, 2, 3, 1, 2, 3, 1, 00122 2, 3, 1, 2, 1, 2, 1, 1, 00123 1, 1, 1, 1, 2, 3, 4, 5, 00124 6, 7, 8, 1, 2, 3, 1, 2, 00125 1, 2, 1, 2, 1, 2, 1, 2, 00126 1, 1, 1, 1, 1, 1, 1, 1, 00127 1, 1, 1, 1, 1, 1, 00128 }; 00129 00130 const int8_t intra_run[102] = { 00131 0, 0, 0, 0, 0, 0, 0, 0, 00132 0, 0, 0, 0, 0, 0, 0, 0, 00133 0, 0, 0, 0, 0, 0, 0, 0, 00134 0, 0, 0, 1, 1, 1, 1, 1, 00135 1, 1, 1, 1, 1, 2, 2, 2, 00136 2, 2, 3, 3, 3, 3, 4, 4, 00137 4, 5, 5, 5, 6, 6, 6, 7, 00138 7, 7, 8, 8, 9, 9, 10, 11, 00139 12, 13, 14, 0, 0, 0, 0, 0, 00140 0, 0, 0, 1, 1, 1, 2, 2, 00141 3, 3, 4, 4, 5, 5, 6, 6, 00142 7, 8, 9, 10, 11, 12, 13, 14, 00143 15, 16, 17, 18, 19, 20, 00144 }; 00145 00146 static RLTable rl_intra = { 00147 102, 00148 67, 00149 intra_vlc, 00150 intra_run, 00151 intra_level, 00152 }; 00153 00154 /* Note this is identical to the intra rvlc except that it is reordered. */ 00155 static const uint16_t inter_rvlc[170][2]={ 00156 {0x0006, 3},{0x0001, 4},{0x0004, 5},{0x001C, 7}, 00157 {0x003C, 8},{0x003D, 8},{0x007C, 9},{0x00FC, 10}, 00158 {0x00FD, 10},{0x01FC, 11},{0x01FD, 11},{0x03FC, 12}, 00159 {0x07FC, 13},{0x07FD, 13},{0x0BFC, 13},{0x0BFD, 13}, 00160 {0x0FFC, 14},{0x0FFD, 14},{0x1FFC, 15},{0x0007, 3}, 00161 {0x000C, 6},{0x005C, 8},{0x007D, 9},{0x017C, 10}, 00162 {0x02FC, 11},{0x03FD, 12},{0x0DFC, 13},{0x17FC, 14}, 00163 {0x17FD, 14},{0x000A, 4},{0x001D, 7},{0x00BC, 9}, 00164 {0x02FD, 11},{0x05FC, 12},{0x1BFC, 14},{0x1BFD, 14}, 00165 {0x0005, 5},{0x005D, 8},{0x017D, 10},{0x05FD, 12}, 00166 {0x0DFD, 13},{0x1DFC, 14},{0x1FFD, 15},{0x0008, 5}, 00167 {0x006C, 8},{0x037C, 11},{0x0EFC, 13},{0x2FFC, 15}, 00168 {0x0009, 5},{0x00BD, 9},{0x037D, 11},{0x0EFD, 13}, 00169 {0x000D, 6},{0x01BC, 10},{0x06FC, 12},{0x1DFD, 14}, 00170 {0x0014, 6},{0x01BD, 10},{0x06FD, 12},{0x2FFD, 15}, 00171 {0x0015, 6},{0x01DC, 10},{0x0F7C, 13},{0x002C, 7}, 00172 {0x01DD, 10},{0x1EFC, 14},{0x002D, 7},{0x03BC, 11}, 00173 {0x0034, 7},{0x077C, 12},{0x006D, 8},{0x0F7D, 13}, 00174 {0x0074, 8},{0x1EFD, 14},{0x0075, 8},{0x1F7C, 14}, 00175 {0x00DC, 9},{0x1F7D, 14},{0x00DD, 9},{0x1FBC, 14}, 00176 {0x00EC, 9},{0x37FC, 15},{0x01EC, 10},{0x01ED, 10}, 00177 {0x01F4, 10},{0x03BD, 11},{0x03DC, 11},{0x03DD, 11}, 00178 {0x03EC, 11},{0x03ED, 11},{0x03F4, 11},{0x077D, 12}, 00179 {0x07BC, 12},{0x07BD, 12},{0x0FBC, 13},{0x0FBD, 13}, 00180 {0x0FDC, 13},{0x0FDD, 13},{0x1FBD, 14},{0x1FDC, 14}, 00181 {0x1FDD, 14},{0x37FD, 15},{0x3BFC, 15}, 00182 {0x000B, 4},{0x0078, 8},{0x03F5, 11},{0x0FEC, 13}, 00183 {0x1FEC, 14},{0x0012, 5},{0x00ED, 9},{0x07DC, 12}, 00184 {0x1FED, 14},{0x3BFD, 15},{0x0013, 5},{0x03F8, 11}, 00185 {0x3DFC, 15},{0x0018, 6},{0x07DD, 12},{0x0019, 6}, 00186 {0x07EC, 12},{0x0022, 6},{0x0FED, 13},{0x0023, 6}, 00187 {0x0FF4, 13},{0x0035, 7},{0x0FF5, 13},{0x0038, 7}, 00188 {0x0FF8, 13},{0x0039, 7},{0x0FF9, 13},{0x0042, 7}, 00189 {0x1FF4, 14},{0x0043, 7},{0x1FF5, 14},{0x0079, 8}, 00190 {0x1FF8, 14},{0x0082, 8},{0x3DFD, 15},{0x0083, 8}, 00191 {0x00F4, 9},{0x00F5, 9},{0x00F8, 9},{0x00F9, 9}, 00192 {0x0102, 9},{0x0103, 9},{0x01F5, 10},{0x01F8, 10}, 00193 {0x01F9, 10},{0x0202, 10},{0x0203, 10},{0x03F9, 11}, 00194 {0x0402, 11},{0x0403, 11},{0x07ED, 12},{0x07F4, 12}, 00195 {0x07F5, 12},{0x07F8, 12},{0x07F9, 12},{0x0802, 12}, 00196 {0x0803, 12},{0x1002, 13},{0x1003, 13},{0x1FF9, 14}, 00197 {0x2002, 14},{0x2003, 14},{0x3EFC, 15},{0x3EFD, 15}, 00198 {0x3F7C, 15},{0x3F7D, 15},{0x0000, 4} 00199 }; 00200 00201 static const int8_t inter_rvlc_run[169]={ 00202 0, 0, 0, 0, 0, 0, 0, 0, 00203 0, 0, 0, 0, 0, 0, 0, 0, 00204 0, 0, 0, 1, 1, 1, 1, 1, 00205 1, 1, 1, 1, 1, 2, 2, 2, 00206 2, 2, 2, 2, 3, 3, 3, 3, 00207 3, 3, 3, 4, 4, 4, 4, 4, 00208 5, 5, 5, 5, 6, 6, 6, 6, 00209 7, 7, 7, 7, 8, 8, 8, 9, 00210 9, 9, 10, 10, 11, 11, 12, 12, 00211 13, 13, 14, 14, 15, 15, 16, 16, 00212 17, 17, 18, 19, 20, 21, 22, 23, 00213 24, 25, 26, 27, 28, 29, 30, 31, 00214 32, 33, 34, 35, 36, 37, 38, 00215 0, 0, 0, 0, 0, 1, 1, 1, 00216 1, 1, 2, 2, 2, 3, 3, 4, 00217 4, 5, 5, 6, 6, 7, 7, 8, 00218 8, 9, 9, 10, 10, 11, 11, 12, 00219 12, 13, 13, 14, 15, 16, 17, 18, 00220 19, 20, 21, 22, 23, 24, 25, 26, 00221 27, 28, 29, 30, 31, 32, 33, 34, 00222 35, 36, 37, 38, 39, 40, 41, 42, 00223 43, 44, 00224 }; 00225 00226 static const int8_t inter_rvlc_level[169]={ 00227 1, 2, 3, 4, 5, 6, 7, 8, 00228 9, 10, 11, 12, 13, 14, 15, 16, 00229 17, 18, 19, 1, 2, 3, 4, 5, 00230 6, 7, 8, 9, 10, 1, 2, 3, 00231 4, 5, 6, 7, 1, 2, 3, 4, 00232 5, 6, 7, 1, 2, 3, 4, 5, 00233 1, 2, 3, 4, 1, 2, 3, 4, 00234 1, 2, 3, 4, 1, 2, 3, 1, 00235 2, 3, 1, 2, 1, 2, 1, 2, 00236 1, 2, 1, 2, 1, 2, 1, 2, 00237 1, 2, 1, 1, 1, 1, 1, 1, 00238 1, 1, 1, 1, 1, 1, 1, 1, 00239 1, 1, 1, 1, 1, 1, 1, 00240 1, 2, 3, 4, 5, 1, 2, 3, 00241 4, 5, 1, 2, 3, 1, 2, 1, 00242 2, 1, 2, 1, 2, 1, 2, 1, 00243 2, 1, 2, 1, 2, 1, 2, 1, 00244 2, 1, 2, 1, 1, 1, 1, 1, 00245 1, 1, 1, 1, 1, 1, 1, 1, 00246 1, 1, 1, 1, 1, 1, 1, 1, 00247 1, 1, 1, 1, 1, 1, 1, 1, 00248 1, 1, 00249 }; 00250 00251 static RLTable rvlc_rl_inter = { 00252 169, 00253 103, 00254 inter_rvlc, 00255 inter_rvlc_run, 00256 inter_rvlc_level, 00257 }; 00258 00259 static const uint16_t intra_rvlc[170][2]={ 00260 {0x0006, 3},{0x0007, 3},{0x000A, 4},{0x0009, 5}, 00261 {0x0014, 6},{0x0015, 6},{0x0034, 7},{0x0074, 8}, 00262 {0x0075, 8},{0x00DD, 9},{0x00EC, 9},{0x01EC, 10}, 00263 {0x01ED, 10},{0x01F4, 10},{0x03EC, 11},{0x03ED, 11}, 00264 {0x03F4, 11},{0x077D, 12},{0x07BC, 12},{0x0FBD, 13}, 00265 {0x0FDC, 13},{0x07BD, 12},{0x0FDD, 13},{0x1FBD, 14}, 00266 {0x1FDC, 14},{0x1FDD, 14},{0x1FFC, 15},{0x0001, 4}, 00267 {0x0008, 5},{0x002D, 7},{0x006C, 8},{0x006D, 8}, 00268 {0x00DC, 9},{0x01DD, 10},{0x03DC, 11},{0x03DD, 11}, 00269 {0x077C, 12},{0x0FBC, 13},{0x1F7D, 14},{0x1FBC, 14}, 00270 {0x0004, 5},{0x002C, 7},{0x00BC, 9},{0x01DC, 10}, 00271 {0x03BC, 11},{0x03BD, 11},{0x0EFD, 13},{0x0F7C, 13}, 00272 {0x0F7D, 13},{0x1EFD, 14},{0x1F7C, 14},{0x0005, 5}, 00273 {0x005C, 8},{0x00BD, 9},{0x037D, 11},{0x06FC, 12}, 00274 {0x0EFC, 13},{0x1DFD, 14},{0x1EFC, 14},{0x1FFD, 15}, 00275 {0x000C, 6},{0x005D, 8},{0x01BD, 10},{0x03FD, 12}, 00276 {0x06FD, 12},{0x1BFD, 14},{0x000D, 6},{0x007D, 9}, 00277 {0x02FC, 11},{0x05FC, 12},{0x1BFC, 14},{0x1DFC, 14}, 00278 {0x001C, 7},{0x017C, 10},{0x02FD, 11},{0x05FD, 12}, 00279 {0x2FFC, 15},{0x001D, 7},{0x017D, 10},{0x037C, 11}, 00280 {0x0DFD, 13},{0x2FFD, 15},{0x003C, 8},{0x01BC, 10}, 00281 {0x0BFD, 13},{0x17FD, 14},{0x003D, 8},{0x01FD, 11}, 00282 {0x0DFC, 13},{0x37FC, 15},{0x007C, 9},{0x03FC, 12}, 00283 {0x00FC, 10},{0x0BFC, 13},{0x00FD, 10},{0x37FD, 15}, 00284 {0x01FC, 11},{0x07FC, 13},{0x07FD, 13},{0x0FFC, 14}, 00285 {0x0FFD, 14},{0x17FC, 14},{0x3BFC, 15}, 00286 {0x000B, 4},{0x0078, 8},{0x03F5, 11},{0x0FEC, 13}, 00287 {0x1FEC, 14},{0x0012, 5},{0x00ED, 9},{0x07DC, 12}, 00288 {0x1FED, 14},{0x3BFD, 15},{0x0013, 5},{0x03F8, 11}, 00289 {0x3DFC, 15},{0x0018, 6},{0x07DD, 12},{0x0019, 6}, 00290 {0x07EC, 12},{0x0022, 6},{0x0FED, 13},{0x0023, 6}, 00291 {0x0FF4, 13},{0x0035, 7},{0x0FF5, 13},{0x0038, 7}, 00292 {0x0FF8, 13},{0x0039, 7},{0x0FF9, 13},{0x0042, 7}, 00293 {0x1FF4, 14},{0x0043, 7},{0x1FF5, 14},{0x0079, 8}, 00294 {0x1FF8, 14},{0x0082, 8},{0x3DFD, 15},{0x0083, 8}, 00295 {0x00F4, 9},{0x00F5, 9},{0x00F8, 9},{0x00F9, 9}, 00296 {0x0102, 9},{0x0103, 9},{0x01F5, 10},{0x01F8, 10}, 00297 {0x01F9, 10},{0x0202, 10},{0x0203, 10},{0x03F9, 11}, 00298 {0x0402, 11},{0x0403, 11},{0x07ED, 12},{0x07F4, 12}, 00299 {0x07F5, 12},{0x07F8, 12},{0x07F9, 12},{0x0802, 12}, 00300 {0x0803, 12},{0x1002, 13},{0x1003, 13},{0x1FF9, 14}, 00301 {0x2002, 14},{0x2003, 14},{0x3EFC, 15},{0x3EFD, 15}, 00302 {0x3F7C, 15},{0x3F7D, 15},{0x0000, 4} 00303 }; 00304 00305 static const int8_t intra_rvlc_run[169]={ 00306 0, 0, 0, 0, 0, 0, 0, 0, 00307 0, 0, 0, 0, 0, 0, 0, 0, 00308 0, 0, 0, 0, 0, 0, 0, 0, 00309 0, 0, 0, 1, 1, 1, 1, 1, 00310 1, 1, 1, 1, 1, 1, 1, 1, 00311 2, 2, 2, 2, 2, 2, 2, 2, 00312 2, 2, 2, 3, 3, 3, 3, 3, 00313 3, 3, 3, 3, 4, 4, 4, 4, 00314 4, 4, 5, 5, 5, 5, 5, 5, 00315 6, 6, 6, 6, 6, 7, 7, 7, 00316 7, 7, 8, 8, 8, 8, 9, 9, 00317 9, 9, 10, 10, 11, 11, 12, 12, 00318 13, 14, 15, 16, 17, 18, 19, 00319 0, 0, 0, 0, 0, 1, 1, 1, 00320 1, 1, 2, 2, 2, 3, 3, 4, 00321 4, 5, 5, 6, 6, 7, 7, 8, 00322 8, 9, 9, 10, 10, 11, 11, 12, 00323 12, 13, 13, 14, 15, 16, 17, 18, 00324 19, 20, 21, 22, 23, 24, 25, 26, 00325 27, 28, 29, 30, 31, 32, 33, 34, 00326 35, 36, 37, 38, 39, 40, 41, 42, 00327 43, 44, 00328 }; 00329 00330 static const int8_t intra_rvlc_level[169]={ 00331 1, 2, 3, 4, 5, 6, 7, 8, 00332 9, 10, 11, 12, 13, 14, 15, 16, 00333 17, 18, 19, 20, 21, 22, 23, 24, 00334 25, 26, 27, 1, 2, 3, 4, 5, 00335 6, 7, 8, 9, 10, 11, 12, 13, 00336 1, 2, 3, 4, 5, 6, 7, 8, 00337 9, 10, 11, 1, 2, 3, 4, 5, 00338 6, 7, 8, 9, 1, 2, 3, 4, 00339 5, 6, 1, 2, 3, 4, 5, 6, 00340 1, 2, 3, 4, 5, 1, 2, 3, 00341 4, 5, 1, 2, 3, 4, 1, 2, 00342 3, 4, 1, 2, 1, 2, 1, 2, 00343 1, 1, 1, 1, 1, 1, 1, 00344 1, 2, 3, 4, 5, 1, 2, 3, 00345 4, 5, 1, 2, 3, 1, 2, 1, 00346 2, 1, 2, 1, 2, 1, 2, 1, 00347 2, 1, 2, 1, 2, 1, 2, 1, 00348 2, 1, 2, 1, 1, 1, 1, 1, 00349 1, 1, 1, 1, 1, 1, 1, 1, 00350 1, 1, 1, 1, 1, 1, 1, 1, 00351 1, 1, 1, 1, 1, 1, 1, 1, 00352 1, 1, 00353 }; 00354 00355 static RLTable rvlc_rl_intra = { 00356 169, 00357 103, 00358 intra_rvlc, 00359 intra_rvlc_run, 00360 intra_rvlc_level, 00361 }; 00362 00363 static const uint16_t sprite_trajectory_tab[15][2] = { 00364 {0x00, 2}, {0x02, 3}, {0x03, 3}, {0x04, 3}, {0x05, 3}, {0x06, 3}, 00365 {0x0E, 4}, {0x1E, 5}, {0x3E, 6}, {0x7E, 7}, {0xFE, 8}, 00366 {0x1FE, 9},{0x3FE, 10},{0x7FE, 11},{0xFFE, 12}, 00367 }; 00368 00369 static const uint8_t mb_type_b_tab[4][2] = { 00370 {1, 1}, {1, 2}, {1, 3}, {1, 4}, 00371 }; 00372 00373 static const AVRational pixel_aspect[16]={ 00374 {0, 1}, 00375 {1, 1}, 00376 {12, 11}, 00377 {10, 11}, 00378 {16, 11}, 00379 {40, 33}, 00380 {0, 1}, 00381 {0, 1}, 00382 {0, 1}, 00383 {0, 1}, 00384 {0, 1}, 00385 {0, 1}, 00386 {0, 1}, 00387 {0, 1}, 00388 {0, 1}, 00389 {0, 1}, 00390 }; 00391 00392 /* these matrixes will be permuted for the idct */ 00393 const int16_t ff_mpeg4_default_intra_matrix[64] = { 00394 8, 17, 18, 19, 21, 23, 25, 27, 00395 17, 18, 19, 21, 23, 25, 27, 28, 00396 20, 21, 22, 23, 24, 26, 28, 30, 00397 21, 22, 23, 24, 26, 28, 30, 32, 00398 22, 23, 24, 26, 28, 30, 32, 35, 00399 23, 24, 26, 28, 30, 32, 35, 38, 00400 25, 26, 28, 30, 32, 35, 38, 41, 00401 27, 28, 30, 32, 35, 38, 41, 45, 00402 }; 00403 00404 const int16_t ff_mpeg4_default_non_intra_matrix[64] = { 00405 16, 17, 18, 19, 20, 21, 22, 23, 00406 17, 18, 19, 20, 21, 22, 23, 24, 00407 18, 19, 20, 21, 22, 23, 24, 25, 00408 19, 20, 21, 22, 23, 24, 26, 27, 00409 20, 21, 22, 23, 25, 26, 27, 28, 00410 21, 22, 23, 24, 26, 27, 28, 30, 00411 22, 23, 24, 26, 27, 28, 30, 31, 00412 23, 24, 25, 27, 28, 30, 31, 33, 00413 }; 00414 00415 const uint8_t ff_mpeg4_y_dc_scale_table[32]={ 00416 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 00417 0, 8, 8, 8, 8,10,12,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,36,38,40,42,44,46 00418 }; 00419 const uint8_t ff_mpeg4_c_dc_scale_table[32]={ 00420 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 00421 0, 8, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,20,21,22,23,24,25 00422 }; 00423 00424 const uint16_t ff_mpeg4_resync_prefix[8]={ 00425 0x7F00, 0x7E00, 0x7C00, 0x7800, 0x7000, 0x6000, 0x4000, 0x0000 00426 }; 00427 00428 static const uint8_t mpeg4_dc_threshold[8]={ 00429 99, 13, 15, 17, 19, 21, 23, 0 00430 }; 00431 00432 #endif /* AVCODEC_MPEG4DATA_H */