armVCM4P2_Huff_Tables_VLC.c revision 0c1bc742181ded4930842b46e9507372f0b1b963
1 /** 2 * 3 * File Name: armVCM4P2_Huff_Tables_VLC.c 4 * OpenMAX DL: v1.0.2 5 * Revision: 9641 6 * Date: Thursday, February 7, 2008 7 * 8 * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. 9 * 10 * 11 * 12 * File: armVCM4P2_Huff_Tables_VLC.c 13 * Description: Contains all the Huffman tables used in MPEG4 codec 14 * 15 */ 16 17#include "omxtypes.h" 18#include "armOMX.h" 19 20#include "armCOMM_Bitstream.h" 21 22/* 23* For Intra 24* last = 0 25*/ 26const OMX_U8 armVCM4P2_IntraL0RunIdx[11] = 27{ 28 0, 27, 37, 42, 46, 49, 52, 29 55, 58, 60, 62 30}; 31 32/* Entry defined for all values 33* for run = 0 to 14 34* Note: the last entry is to terminate while decoding 35*/ 36const ARM_VLC32 armVCM4P2_IntraVlcL0[68] = 37{ 38 {2, 2}, 39 {3, 6}, 40 {4, 15}, 41 {5, 13}, 42 {5, 12}, 43 {6, 21}, 44 {6, 19}, 45 {6, 18}, 46 {7, 23}, 47 {8, 31}, 48 {8, 30}, 49 {8, 29}, 50 {9, 37}, 51 {9, 36}, 52 {9, 35}, 53 {9, 33}, 54 {10, 33}, 55 {10, 32}, 56 {10, 15}, 57 {10, 14}, 58 {11, 7}, 59 {11, 6}, 60 {11, 32}, 61 {11, 33}, 62 {12, 80}, 63 {12, 81}, 64 {12, 82}, 65 {4, 14}, 66 {6, 20}, 67 {7, 22}, 68 {8, 28}, 69 {9, 32}, 70 {9, 31}, 71 {10, 13}, 72 {11, 34}, 73 {12, 83}, 74 {12, 85}, 75 {5, 11}, 76 {7, 21}, 77 {9, 30}, 78 {10, 12}, 79 {12, 86}, 80 {6, 17}, 81 {8, 27}, 82 {9, 29}, 83 {10, 11}, 84 {6, 16}, 85 {9, 34}, 86 {10, 10}, 87 {6, 13}, 88 {9, 28}, 89 {10, 8}, 90 {7, 18}, 91 {9, 27}, 92 {12, 84}, 93 {7, 20}, 94 {9, 26}, 95 {12, 87}, 96 {8, 25}, 97 {10, 9}, 98 {8, 24}, 99 {11, 35}, 100 {8, 23}, 101 {9, 25}, 102 {9, 24}, 103 {10, 7}, 104 {12, 88}, 105 {0, 0} 106}; 107 108/* 109* For Intra 110* last = 1 111*/ 112 113const OMX_U8 armVCM4P2_IntraL1RunIdx[8] = 114{ 115 0, 8, 11, 13, 15, 17, 19, 21 116}; 117 118/* Entry defined for all values 119* for run = 0 to 20 120* * Note: the last entry is to terminate while decoding 121*/ 122const ARM_VLC32 armVCM4P2_IntraVlcL1[36] = 123{ 124 {4, 7}, 125 {6, 12}, 126 {8, 22}, 127 {9, 23}, 128 {10, 6}, 129 {11, 5}, 130 {11, 4}, 131 {12, 89}, 132 {6, 15}, 133 {9, 22}, 134 {10, 5}, 135 {6, 14}, 136 {10, 4}, 137 {7, 17}, 138 {11, 36}, 139 {7, 16}, 140 {11, 37}, 141 {7, 19}, 142 {12, 90}, 143 {8, 21}, 144 {12, 91}, 145 {8, 20}, 146 {8, 19}, 147 {8, 26}, 148 {9, 21}, 149 {9, 20}, 150 {9, 19}, 151 {9, 18}, 152 {9, 17}, 153 {11, 38}, 154 {11, 39}, 155 {12, 92}, 156 {12, 93}, 157 {12, 94}, 158 {12, 95}, 159 {0, 0} 160}; 161 162/* LMAX table for Intra (Last == 0)*/ 163const OMX_U8 armVCM4P2_IntraL0LMAX[15] = 164{ 165 27, 10, 5, 4, 3, 3, 3, 166 3, 2, 2, 1, 1, 1, 1, 1 167}; 168 169/* LMAX table for Intra (Last == 1)*/ 170const OMX_U8 armVCM4P2_IntraL1LMAX[21] = 171{ 172 8, 3, 2, 2, 2, 2, 2, 1, 173 1, 1, 1, 1, 1, 1, 1, 1, 174 1, 1, 1, 1, 1 175}; 176 177/* RMAX table for Intra (Last == 0) 178 Level - 1 Indexed 179*/ 180const OMX_U8 armVCM4P2_IntraL0RMAX[27] = 181{ 182 14, 9, 7, 3, 2, 1, 1, 183 1, 1, 1, 0, 0, 0, 0, 184 0, 0, 0, 0, 0, 0, 0, 185 0, 0, 0, 0, 0, 0 186}; 187 188/* RMAX table for Intra (Last == 1) 189 Level - 1 Indexed 190*/ 191const OMX_U8 armVCM4P2_IntraL1RMAX[8] = 192{ 193 20, 6, 1, 0, 0, 0, 0, 0 194}; 195 196/* 197* For Inter 198* last = 0 199*/ 200const OMX_U8 armVCM4P2_InterL0RunIdx[12] = 201{ 202 0, 12, 18, 22, 25, 28, 203 31, 34, 36, 38, 40, 42 204}; 205 206/* Entry defined for all values 207* for run = 0 to 26 208* Note: the last entry is to terminate while decoding 209*/ 210const ARM_VLC32 armVCM4P2_InterVlcL0[59] = 211{ 212 {2, 2}, 213 {4, 15}, 214 {6, 21}, 215 {7, 23}, 216 {8, 31}, 217 {9, 37}, 218 {9, 36}, 219 {10, 33}, 220 {10, 32}, 221 {11, 7}, 222 {11, 6}, 223 {11, 32}, 224 {3, 6}, 225 {6, 20}, 226 {8, 30}, 227 {10, 15}, 228 {11, 33}, 229 {12, 80}, 230 {4, 14}, 231 {8, 29}, 232 {10, 14}, 233 {12, 81}, 234 {5, 13}, 235 {9, 35}, 236 {10, 13}, 237 {5, 12}, 238 {9, 34}, 239 {12, 82}, 240 {5, 11}, 241 {10, 12}, 242 {12, 83}, 243 {6, 19}, 244 {10, 11}, 245 {12, 84}, 246 {6, 18}, 247 {10, 10}, 248 {6, 17}, 249 {10, 9}, 250 {6, 16}, 251 {10, 8}, 252 {7, 22}, 253 {12, 85}, 254 {7, 21}, 255 {7, 20}, 256 {8, 28}, 257 {8, 27}, 258 {9, 33}, 259 {9, 32}, 260 {9, 31}, 261 {9, 30}, 262 {9, 29}, 263 {9, 28}, 264 {9, 27}, 265 {9, 26}, 266 {11, 34}, 267 {11, 35}, 268 {12, 86}, 269 {12, 87}, 270 {0, 0} 271}; 272 273 274/* 275* For Intra 276* last = 1 277*/ 278 279const OMX_U8 armVCM4P2_InterL1RunIdx[3] = 280{ 281 0, 3, 5 282}; 283 284/* Entry defined for all values 285* for run = 0 to 40 286* Note: the last entry is to terminate while decoding 287*/ 288const ARM_VLC32 armVCM4P2_InterVlcL1[45] = 289{ 290 {4, 7}, 291 {9, 25}, 292 {11, 5}, 293 {6, 15}, 294 {11, 4}, 295 {6, 14}, 296 {6, 13}, 297 {6, 12}, 298 {7, 19}, 299 {7, 18}, 300 {7, 17}, 301 {7, 16}, 302 {8, 26}, 303 {8, 25}, 304 {8, 24}, 305 {8, 23}, 306 {8, 22}, 307 {8, 21}, 308 {8, 20}, 309 {8, 19}, 310 {9, 24}, 311 {9, 23}, 312 {9, 22}, 313 {9, 21}, 314 {9, 20}, 315 {9, 19}, 316 {9, 18}, 317 {9, 17}, 318 {10, 7}, 319 {10, 6}, 320 {10, 5}, 321 {10, 4}, 322 {11, 36}, 323 {11, 37}, 324 {11, 38}, 325 {11, 39}, 326 {12, 88}, 327 {12, 89}, 328 {12, 90}, 329 {12, 91}, 330 {12, 92}, 331 {12, 93}, 332 {12, 94}, 333 {12, 95}, 334 { 0, 0} 335}; 336 337/* LMAX table for Intra (Last == 0)*/ 338const OMX_U8 armVCM4P2_InterL0LMAX[27] = 339{ 340 12, 6, 4, 3, 3, 3, 3, 2, 341 2, 2, 2, 1, 1, 1, 1, 1, 342 1, 1, 1, 1, 1, 1, 1, 1, 343 1, 1, 1, 344}; 345 346/* LMAX table for Intra (Last == 1)*/ 347const OMX_U8 armVCM4P2_InterL1LMAX[41] = 348{ 349 3, 2, 1, 1, 1, 1, 1, 1, 350 1, 1, 1, 1, 1, 1, 1, 1, 351 1, 1, 1, 1, 1, 1, 1, 1, 352 1, 1, 1, 1, 1, 1, 1, 1, 353 1, 1, 1, 1, 1, 1, 1, 1, 354 1, 355}; 356 357/* RMAX table for Intra (Last == 0) 358 Level - 1 Indexed 359*/ 360const OMX_U8 armVCM4P2_InterL0RMAX[12] = 361{ 362 26, 10, 6, 2, 1, 1, 363 0, 0, 0, 0, 0, 0 364}; 365 366/* RMAX table for Intra (Last == 1) 367 Level - 1 Indexed 368*/ 369const OMX_U8 armVCM4P2_InterL1RMAX[3] = 370{ 371 40, 1, 0 372}; 373 374/* 375* For Intra - Luminance 376*/ 377 378const ARM_VLC32 armVCM4P2_aIntraDCLumaIndex[14] = 379{ 380 {3, 3}, 381 {2, 3}, 382 {2, 2}, 383 {3, 2}, 384 {3, 1}, 385 {4, 1}, 386 {5, 1}, 387 {6, 1}, 388 {7, 1}, 389 {8, 1}, 390 {9, 1}, 391 {10, 1}, 392 {11, 1}, 393 {0, 0} 394}; 395 396/* 397* For Intra - Chrominance 398*/ 399 400const ARM_VLC32 armVCM4P2_aIntraDCChromaIndex[14] = 401{ 402 {2, 3}, 403 {2, 2}, 404 {2, 1}, 405 {3, 1}, 406 {4, 1}, 407 {5, 1}, 408 {6, 1}, 409 {7, 1}, 410 {8, 1}, 411 {9, 1}, 412 {10, 1}, 413 {11, 1}, 414 {12, 1}, 415 {0, 0} 416}; 417 418/* 419 * Motion vector decoding table 420 */ 421 422const ARM_VLC32 armVCM4P2_aVlcMVD[66] = 423{ 424 {13, 5}, 425 {13, 7}, 426 {12, 5}, 427 {12, 7}, 428 {12, 9}, 429 {12, 11}, 430 {12, 13}, 431 {12, 15}, 432 {11, 9}, 433 {11, 11}, 434 {11, 13}, 435 {11, 15}, 436 {11, 17}, 437 {11, 19}, 438 {11, 21}, 439 {11, 23}, 440 {11, 25}, 441 {11, 27}, 442 {11, 29}, 443 {11, 31}, 444 {11, 33}, 445 {11, 35}, 446 {10, 19}, 447 {10, 21}, 448 {10, 23}, 449 {8, 7}, 450 {8, 9}, 451 {8, 11}, 452 {7, 7}, 453 {5, 3}, 454 {4, 3}, 455 {3, 3}, 456 {1, 1}, 457 {3, 2}, 458 {4, 2}, 459 {5, 2}, 460 {7, 6}, 461 {8, 10}, 462 {8, 8}, 463 {8, 6}, 464 {10, 22}, 465 {10, 20}, 466 {10, 18}, 467 {11, 34}, 468 {11, 32}, 469 {11, 30}, 470 {11, 28}, 471 {11, 26}, 472 {11, 24}, 473 {11, 22}, 474 {11, 20}, 475 {11, 18}, 476 {11, 16}, 477 {11, 14}, 478 {11, 12}, 479 {11, 10}, 480 {11, 8}, 481 {12, 14}, 482 {12, 12}, 483 {12, 10}, 484 {12, 8}, 485 {12, 6}, 486 {12, 4}, 487 {13, 6}, 488 {13, 4}, 489 { 0, 0} 490}; 491 492/* End of file */ 493 494 495 496