| rev |
line source |
|
nengel@2
|
1 #ifndef H264_TABLES_H
|
|
nengel@2
|
2 #define H264_TABLES_H
|
|
nengel@2
|
3
|
|
nengel@2
|
4 #define MAX_NEG_CROP 1024
|
|
nengel@2
|
5
|
|
nengel@2
|
6 extern uint8_t ff_cropTbl[256+2 *MAX_NEG_CROP];
|
|
nengel@2
|
7 extern int block_offset[16+4+4];
|
|
nengel@2
|
8
|
|
nengel@2
|
9 static const uint8_t scan8[16 + 2*4]={
|
|
nengel@2
|
10 4+1*8, 5+1*8, 4+2*8, 5+2*8,
|
|
nengel@2
|
11 6+1*8, 7+1*8, 6+2*8, 7+2*8,
|
|
nengel@2
|
12 4+3*8, 5+3*8, 4+4*8, 5+4*8,
|
|
nengel@2
|
13 6+3*8, 7+3*8, 6+4*8, 7+4*8,
|
|
nengel@2
|
14 1+1*8, 2+1*8,
|
|
nengel@2
|
15 1+2*8, 2+2*8,
|
|
nengel@2
|
16 1+4*8, 2+4*8,
|
|
nengel@2
|
17 1+5*8, 2+5*8,
|
|
nengel@2
|
18 };
|
|
nengel@2
|
19
|
|
nengel@2
|
20 static const uint8_t ff_zigzag_direct[64] = {
|
|
nengel@2
|
21 0, 1, 8, 16, 9, 2, 3, 10,
|
|
nengel@2
|
22 17, 24, 32, 25, 18, 11, 4, 5,
|
|
nengel@2
|
23 12, 19, 26, 33, 40, 48, 41, 34,
|
|
nengel@2
|
24 27, 20, 13, 6, 7, 14, 21, 28,
|
|
nengel@2
|
25 35, 42, 49, 56, 57, 50, 43, 36,
|
|
nengel@2
|
26 29, 22, 15, 23, 30, 37, 44, 51,
|
|
nengel@2
|
27 58, 59, 52, 45, 38, 31, 39, 46,
|
|
nengel@2
|
28 53, 60, 61, 54, 47, 55, 62, 63
|
|
nengel@2
|
29 };
|
|
nengel@2
|
30
|
|
nengel@2
|
31 static const uint8_t zigzag_scan[16]={
|
|
nengel@2
|
32 0+0*4, 1+0*4, 0+1*4, 0+2*4,
|
|
nengel@2
|
33 1+1*4, 2+0*4, 3+0*4, 2+1*4,
|
|
nengel@2
|
34 1+2*4, 0+3*4, 1+3*4, 2+2*4,
|
|
nengel@2
|
35 3+1*4, 3+2*4, 2+3*4, 3+3*4,
|
|
nengel@2
|
36 };
|
|
nengel@2
|
37
|
|
nengel@2
|
38 static const uint8_t luma_dc_zigzag_scan[16]={
|
|
nengel@2
|
39 0*16 + 0*64, 1*16 + 0*64, 2*16 + 0*64, 0*16 + 2*64,
|
|
nengel@2
|
40 3*16 + 0*64, 0*16 + 1*64, 1*16 + 1*64, 2*16 + 1*64,
|
|
nengel@2
|
41 1*16 + 2*64, 2*16 + 2*64, 3*16 + 2*64, 0*16 + 3*64,
|
|
nengel@2
|
42 3*16 + 1*64, 1*16 + 3*64, 2*16 + 3*64, 3*16 + 3*64,
|
|
nengel@2
|
43 };
|
|
nengel@2
|
44
|
|
nengel@2
|
45 static const uint8_t chroma_dc_scan[4]={
|
|
nengel@2
|
46 (0+0*2)*16, (1+0*2)*16,
|
|
nengel@2
|
47 (0+1*2)*16, (1+1*2)*16, //FIXME
|
|
nengel@2
|
48 };
|
|
nengel@2
|
49
|
|
nengel@2
|
50 static const uint8_t rem6[52]={
|
|
nengel@2
|
51 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,
|
|
nengel@2
|
52 };
|
|
nengel@2
|
53
|
|
nengel@2
|
54 static const uint8_t div6[52]={
|
|
nengel@2
|
55 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,
|
|
nengel@2
|
56 };
|
|
nengel@2
|
57
|
|
nengel@2
|
58 static const uint8_t dequant4_coeff_init[6][3]={
|
|
nengel@2
|
59 {10,13,16},
|
|
nengel@2
|
60 {11,14,18},
|
|
nengel@2
|
61 {13,16,20},
|
|
nengel@2
|
62 {14,18,23},
|
|
nengel@2
|
63 {16,20,25},
|
|
nengel@2
|
64 {18,23,29},
|
|
nengel@2
|
65 };
|
|
nengel@2
|
66
|
|
nengel@2
|
67 static const uint8_t dequant8_coeff_init_scan[16] = {
|
|
nengel@2
|
68 0,3,4,3, 3,1,5,1, 4,5,2,5, 3,1,5,1
|
|
nengel@2
|
69 };
|
|
nengel@2
|
70 static const uint8_t dequant8_coeff_init[6][6]={
|
|
nengel@2
|
71 {20,18,32,19,25,24},
|
|
nengel@2
|
72 {22,19,35,21,28,26},
|
|
nengel@2
|
73 {26,23,42,24,33,31},
|
|
nengel@2
|
74 {28,25,45,26,35,33},
|
|
nengel@2
|
75 {32,28,51,30,40,38},
|
|
nengel@2
|
76 {36,32,58,34,46,43},
|
|
nengel@2
|
77 };
|
|
nengel@2
|
78
|
|
nengel@2
|
79
|
|
nengel@2
|
80 void init_block_offset(int linesize, int uvlinesize);
|
|
nengel@2
|
81 void ff_cropTbl_init();
|
|
nengel@2
|
82
|
|
nengel@2
|
83 #endif
|