~ubuntu-branches/ubuntu/edgy/gstreamer0.10-ffmpeg/edgy

« back to all changes in this revision

Viewing changes to gst-libs/ext/ffmpeg/libavcodec/h264data.h

  • Committer: Bazaar Package Importer
  • Author(s): Sebastian Dröge
  • Date: 2006-04-01 16:13:43 UTC
  • mto: This revision was merged to the branch mainline in revision 5.
  • Revision ID: james.westby@ubuntu.com-20060401161343-n621cgjlujio0otg
Tags: upstream-0.10.1
Import upstream version 0.10.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
 *
15
15
 * You should have received a copy of the GNU Lesser General Public
16
16
 * License along with this library; if not, write to the Free Software
17
 
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
18
 *
19
19
 */
20
20
 
21
21
/**
22
22
 * @file h264data.h
23
 
 * @brief 
 
23
 * @brief
24
24
 *     H264 / AVC / MPEG4 part10 codec data table
25
25
 * @author Michael Niedermayer <michaelni@gmx.at>
26
26
 */
87
87
 16,  3,  5, 10, 12, 19, 21, 26, 28, 35, 37, 42, 44,  1,  2,  4,
88
88
  8, 17, 18, 20, 24,  6,  9, 22, 25, 32, 33, 34, 36, 40, 38, 41
89
89
};
90
 
 
 
90
 
91
91
static const uint8_t golomb_to_inter_cbp[48]={
92
92
  0, 16,  1,  2,  4,  8, 32,  3,  5, 10, 12, 15, 47,  7, 11, 13,
93
93
 14,  6,  9, 31, 35, 37, 42, 44, 33, 34, 36, 40, 39, 43, 45, 46,
99
99
 16, 33, 34, 21, 35, 22, 39,  4, 36, 40, 23,  5, 24,  6,  7,  1,
100
100
 41, 42, 43, 25, 44, 26, 46, 12, 45, 47, 27, 13, 28, 14, 15,  0
101
101
};
102
 
 
 
102
 
103
103
static const uint8_t inter_cbp_to_golomb[48]={
104
104
  0,  2,  3,  7,  4,  8, 17, 13,  5, 18,  9, 14, 10, 15, 16, 11,
105
105
  1, 32, 33, 36, 34, 37, 44, 40, 35, 45, 38, 41, 39, 42, 43, 19,
185
185
};
186
186
 
187
187
static const uint8_t total_zeros_len[16][16]= {
188
 
    {1,3,3,4,4,5,5,6,6,7,7,8,8,9,9,9},  
189
 
    {3,3,3,3,3,4,4,4,4,5,5,6,6,6,6},  
190
 
    {4,3,3,3,4,4,3,3,4,5,5,6,5,6},  
191
 
    {5,3,4,4,3,3,3,4,3,4,5,5,5},  
192
 
    {4,4,4,3,3,3,3,3,4,5,4,5},  
193
 
    {6,5,3,3,3,3,3,3,4,3,6},  
194
 
    {6,5,3,3,3,2,3,4,3,6},  
195
 
    {6,4,5,3,2,2,3,3,6},  
196
 
    {6,6,4,2,2,3,2,5},  
197
 
    {5,5,3,2,2,2,4},  
198
 
    {4,4,3,3,1,3},  
199
 
    {4,4,2,1,3},  
200
 
    {3,3,1,2},  
201
 
    {2,2,1},  
202
 
    {1,1},  
 
188
    {1,3,3,4,4,5,5,6,6,7,7,8,8,9,9,9},
 
189
    {3,3,3,3,3,4,4,4,4,5,5,6,6,6,6},
 
190
    {4,3,3,3,4,4,3,3,4,5,5,6,5,6},
 
191
    {5,3,4,4,3,3,3,4,3,4,5,5,5},
 
192
    {4,4,4,3,3,3,3,3,4,5,4,5},
 
193
    {6,5,3,3,3,3,3,3,4,3,6},
 
194
    {6,5,3,3,3,2,3,4,3,6},
 
195
    {6,4,5,3,2,2,3,3,6},
 
196
    {6,6,4,2,2,3,2,5},
 
197
    {5,5,3,2,2,2,4},
 
198
    {4,4,3,3,1,3},
 
199
    {4,4,2,1,3},
 
200
    {3,3,1,2},
 
201
    {2,2,1},
 
202
    {1,1},
203
203
};
204
204
 
205
205
static const uint8_t total_zeros_bits[16][16]= {
223
223
static const uint8_t chroma_dc_total_zeros_len[3][4]= {
224
224
    { 1, 2, 3, 3,},
225
225
    { 1, 2, 2, 0,},
226
 
    { 1, 1, 0, 0,}, 
 
226
    { 1, 1, 0, 0,},
227
227
};
228
228
 
229
229
static const uint8_t chroma_dc_total_zeros_bits[3][4]= {
274
274
};
275
275
 
276
276
static const uint8_t zigzag_scan[16]={
277
 
 0+0*4, 1+0*4, 0+1*4, 0+2*4, 
278
 
 1+1*4, 2+0*4, 3+0*4, 2+1*4, 
279
 
 1+2*4, 0+3*4, 1+3*4, 2+2*4, 
280
 
 3+1*4, 3+2*4, 2+3*4, 3+3*4, 
 
277
 0+0*4, 1+0*4, 0+1*4, 0+2*4,
 
278
 1+1*4, 2+0*4, 3+0*4, 2+1*4,
 
279
 1+2*4, 0+3*4, 1+3*4, 2+2*4,
 
280
 3+1*4, 3+2*4, 2+3*4, 3+3*4,
281
281
};
282
282
 
283
283
static const uint8_t field_scan[16]={
284
 
 0+0*4, 0+1*4, 1+0*4, 0+2*4, 
 
284
 0+0*4, 0+1*4, 1+0*4, 0+2*4,
285
285
 0+3*4, 1+1*4, 1+2*4, 1+3*4,
286
 
 2+0*4, 2+1*4, 2+2*4, 2+3*4, 
 
286
 2+0*4, 2+1*4, 2+2*4, 2+3*4,
287
287
 3+0*4, 3+1*4, 3+2*4, 3+3*4,
288
288
};
289
289
 
295
295
};
296
296
 
297
297
static const uint8_t luma_dc_field_scan[16]={
298
 
 0*16 + 0*64, 2*16 + 0*64, 1*16 + 0*64, 0*16 + 2*64, 
299
 
 2*16 + 2*64, 3*16 + 0*64, 1*16 + 2*64, 3*16 + 2*64, 
300
 
 0*16 + 1*64, 2*16 + 1*64, 0*16 + 3*64, 2*16 + 3*64, 
 
298
 0*16 + 0*64, 2*16 + 0*64, 1*16 + 0*64, 0*16 + 2*64,
 
299
 2*16 + 2*64, 3*16 + 0*64, 1*16 + 2*64, 3*16 + 2*64,
 
300
 0*16 + 1*64, 2*16 + 1*64, 0*16 + 3*64, 2*16 + 3*64,
301
301
 1*16 + 1*64, 3*16 + 1*64, 1*16 + 3*64, 3*16 + 3*64,
302
302
};
303
303
 
304
304
static const uint8_t chroma_dc_scan[4]={
305
 
 (0+0*2)*16, (1+0*2)*16, 
 
305
 (0+0*2)*16, (1+0*2)*16,
306
306
 (0+1*2)*16, (1+1*2)*16,  //FIXME
307
307
};
308
308
 
450
450
 
451
451
 
452
452
static const uint8_t rem6[52]={
453
 
0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 
 
453
0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
454
454
};
455
455
 
456
456
static const uint8_t div6[52]={
457
457
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,
458
458
};
459
459
 
460
 
static const uint16_t dequant_coeff[52][16]={
461
 
{  10,  13,  10,  13,   13,  16,  13,  16,   10,  13,  10,  13,   13,  16,  13,  16, },
462
 
{  11,  14,  11,  14,   14,  18,  14,  18,   11,  14,  11,  14,   14,  18,  14,  18, },
463
 
{  13,  16,  13,  16,   16,  20,  16,  20,   13,  16,  13,  16,   16,  20,  16,  20, },
464
 
{  14,  18,  14,  18,   18,  23,  18,  23,   14,  18,  14,  18,   18,  23,  18,  23, },
465
 
{  16,  20,  16,  20,   20,  25,  20,  25,   16,  20,  16,  20,   20,  25,  20,  25, },
466
 
{  18,  23,  18,  23,   23,  29,  23,  29,   18,  23,  18,  23,   23,  29,  23,  29, },
467
 
{  20,  26,  20,  26,   26,  32,  26,  32,   20,  26,  20,  26,   26,  32,  26,  32, },
468
 
{  22,  28,  22,  28,   28,  36,  28,  36,   22,  28,  22,  28,   28,  36,  28,  36, },
469
 
{  26,  32,  26,  32,   32,  40,  32,  40,   26,  32,  26,  32,   32,  40,  32,  40, },
470
 
{  28,  36,  28,  36,   36,  46,  36,  46,   28,  36,  28,  36,   36,  46,  36,  46, },
471
 
{  32,  40,  32,  40,   40,  50,  40,  50,   32,  40,  32,  40,   40,  50,  40,  50, },
472
 
{  36,  46,  36,  46,   46,  58,  46,  58,   36,  46,  36,  46,   46,  58,  46,  58, },
473
 
{  40,  52,  40,  52,   52,  64,  52,  64,   40,  52,  40,  52,   52,  64,  52,  64, },
474
 
{  44,  56,  44,  56,   56,  72,  56,  72,   44,  56,  44,  56,   56,  72,  56,  72, },
475
 
{  52,  64,  52,  64,   64,  80,  64,  80,   52,  64,  52,  64,   64,  80,  64,  80, },
476
 
{  56,  72,  56,  72,   72,  92,  72,  92,   56,  72,  56,  72,   72,  92,  72,  92, },
477
 
{  64,  80,  64,  80,   80, 100,  80, 100,   64,  80,  64,  80,   80, 100,  80, 100, },
478
 
{  72,  92,  72,  92,   92, 116,  92, 116,   72,  92,  72,  92,   92, 116,  92, 116, },
479
 
{  80, 104,  80, 104,  104, 128, 104, 128,   80, 104,  80, 104,  104, 128, 104, 128, },
480
 
{  88, 112,  88, 112,  112, 144, 112, 144,   88, 112,  88, 112,  112, 144, 112, 144, },
481
 
{ 104, 128, 104, 128,  128, 160, 128, 160,  104, 128, 104, 128,  128, 160, 128, 160, },
482
 
{ 112, 144, 112, 144,  144, 184, 144, 184,  112, 144, 112, 144,  144, 184, 144, 184, },
483
 
{ 128, 160, 128, 160,  160, 200, 160, 200,  128, 160, 128, 160,  160, 200, 160, 200, },
484
 
{ 144, 184, 144, 184,  184, 232, 184, 232,  144, 184, 144, 184,  184, 232, 184, 232, },
485
 
{ 160, 208, 160, 208,  208, 256, 208, 256,  160, 208, 160, 208,  208, 256, 208, 256, },
486
 
{ 176, 224, 176, 224,  224, 288, 224, 288,  176, 224, 176, 224,  224, 288, 224, 288, },
487
 
{ 208, 256, 208, 256,  256, 320, 256, 320,  208, 256, 208, 256,  256, 320, 256, 320, },
488
 
{ 224, 288, 224, 288,  288, 368, 288, 368,  224, 288, 224, 288,  288, 368, 288, 368, },
489
 
{ 256, 320, 256, 320,  320, 400, 320, 400,  256, 320, 256, 320,  320, 400, 320, 400, },
490
 
{ 288, 368, 288, 368,  368, 464, 368, 464,  288, 368, 288, 368,  368, 464, 368, 464, },
491
 
{ 320, 416, 320, 416,  416, 512, 416, 512,  320, 416, 320, 416,  416, 512, 416, 512, },
492
 
{ 352, 448, 352, 448,  448, 576, 448, 576,  352, 448, 352, 448,  448, 576, 448, 576, },
493
 
{ 416, 512, 416, 512,  512, 640, 512, 640,  416, 512, 416, 512,  512, 640, 512, 640, },
494
 
{ 448, 576, 448, 576,  576, 736, 576, 736,  448, 576, 448, 576,  576, 736, 576, 736, },
495
 
{ 512, 640, 512, 640,  640, 800, 640, 800,  512, 640, 512, 640,  640, 800, 640, 800, },
496
 
{ 576, 736, 576, 736,  736, 928, 736, 928,  576, 736, 576, 736,  736, 928, 736, 928, },
497
 
{ 640, 832, 640, 832,  832,1024, 832,1024,  640, 832, 640, 832,  832,1024, 832,1024, },
498
 
{ 704, 896, 704, 896,  896,1152, 896,1152,  704, 896, 704, 896,  896,1152, 896,1152, },
499
 
{ 832,1024, 832,1024, 1024,1280,1024,1280,  832,1024, 832,1024, 1024,1280,1024,1280, },
500
 
{ 896,1152, 896,1152, 1152,1472,1152,1472,  896,1152, 896,1152, 1152,1472,1152,1472, },
501
 
{1024,1280,1024,1280, 1280,1600,1280,1600, 1024,1280,1024,1280, 1280,1600,1280,1600, },
502
 
{1152,1472,1152,1472, 1472,1856,1472,1856, 1152,1472,1152,1472, 1472,1856,1472,1856, },
503
 
{1280,1664,1280,1664, 1664,2048,1664,2048, 1280,1664,1280,1664, 1664,2048,1664,2048, },
504
 
{1408,1792,1408,1792, 1792,2304,1792,2304, 1408,1792,1408,1792, 1792,2304,1792,2304, },
505
 
{1664,2048,1664,2048, 2048,2560,2048,2560, 1664,2048,1664,2048, 2048,2560,2048,2560, },
506
 
{1792,2304,1792,2304, 2304,2944,2304,2944, 1792,2304,1792,2304, 2304,2944,2304,2944, },
507
 
{2048,2560,2048,2560, 2560,3200,2560,3200, 2048,2560,2048,2560, 2560,3200,2560,3200, },
508
 
{2304,2944,2304,2944, 2944,3712,2944,3712, 2304,2944,2304,2944, 2944,3712,2944,3712, },
509
 
{2560,3328,2560,3328, 3328,4096,3328,4096, 2560,3328,2560,3328, 3328,4096,3328,4096, },
510
 
{2816,3584,2816,3584, 3584,4608,3584,4608, 2816,3584,2816,3584, 3584,4608,3584,4608, },
511
 
{3328,4096,3328,4096, 4096,5120,4096,5120, 3328,4096,3328,4096, 4096,5120,4096,5120, },
512
 
{3584,4608,3584,4608, 4608,5888,4608,5888, 3584,4608,3584,4608, 4608,5888,4608,5888, },
513
 
//{4096,5120,4096,5120, 5120,6400,5120,6400, 4096,5120,4096,5120, 5120,6400,5120,6400, },
514
 
//{4608,5888,4608,5888, 5888,7424,5888,7424, 4608,5888,4608,5888, 5888,7424,5888,7424, },
 
460
static const uint8_t default_scaling4[2][16]={
 
461
{   6,13,20,28,
 
462
   13,20,28,32,
 
463
   20,28,32,37,
 
464
   28,32,37,42
 
465
},{
 
466
   10,14,20,24,
 
467
   14,20,24,27,
 
468
   20,24,27,30,
 
469
   24,27,30,34
 
470
}};
 
471
 
 
472
static const uint8_t default_scaling8[2][64]={
 
473
{   6,10,13,16,18,23,25,27,
 
474
   10,11,16,18,23,25,27,29,
 
475
   13,16,18,23,25,27,29,31,
 
476
   16,18,23,25,27,29,31,33,
 
477
   18,23,25,27,29,31,33,36,
 
478
   23,25,27,29,31,33,36,38,
 
479
   25,27,29,31,33,36,38,40,
 
480
   27,29,31,33,36,38,40,42
 
481
},{
 
482
    9,13,15,17,19,21,22,24,
 
483
   13,13,17,19,21,22,24,25,
 
484
   15,17,19,21,22,24,25,27,
 
485
   17,19,21,22,24,25,27,28,
 
486
   19,21,22,24,25,27,28,30,
 
487
   21,22,24,25,27,28,30,32,
 
488
   22,24,25,27,28,30,32,33,
 
489
   24,25,27,28,30,32,33,35
 
490
}};
 
491
 
 
492
static const int dequant4_coeff_init[6][3]={
 
493
  {10,13,16},
 
494
  {11,14,18},
 
495
  {13,16,20},
 
496
  {14,18,23},
 
497
  {16,20,25},
 
498
  {18,23,29},
515
499
};
516
500
 
517
501
static const int dequant8_coeff_init_scan[16] = {