FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
sp5x.h
Go to the documentation of this file.
1 /*
2  * Sunplus JPEG tables
3  * Copyright (c) 2003 the ffmpeg project
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 #ifndef AVCODEC_SP5X_H
23 #define AVCODEC_SP5X_H
24 
25 #include <stdint.h>
26 
27 static const uint8_t sp5x_data_sof[] =
28 {
29  0xFF, 0xC0, /* SOF */
30  0x00, 0x11, /* len */
31  0x08, /* bits */
32  0x00, 0xf0, /* height (default: 240) */
33  0x01, 0x40, /* width (default: 240) */
34  0x03, /* nb components */
35  0x01, 0x22, 0x00, /* 21 vs 22 ? */
36  0x02, 0x11, 0x01,
37  0x03, 0x11, 0x01
38 };
39 
40 static const uint8_t sp5x_data_sos[] =
41 {
42  0xFF, 0xDA, /* SOS */
43  0x00, 0x0C, /* len */
44  0x03, /* nb components */
45  0x01, 0x00,
46  0x02, 0x11,
47  0x03, 0x11,
48  0x00, /* Ss */
49  0x3F, /* Se */
50  0x00 /* Ah/Al */
51 };
52 
53 static const uint8_t sp5x_data_dqt[] =
54 {
55  0xFF, 0xDB, /* DQT */
56  0x00, 0x84, /* len */
57  0x00,
58  0x05, 0x03, 0x04, 0x04, 0x04, 0x03, 0x05, 0x04,
59  0x04, 0x04, 0x06, 0x05, 0x05, 0x06, 0x08, 0x0D,
60  0x08, 0x08, 0x07, 0x07, 0x08, 0x10, 0x0C, 0x0C,
61  0x0A, 0x0D, 0x14, 0x11, 0x15, 0x14, 0x13, 0x11,
62  0x13, 0x13, 0x16, 0x18, 0x1F, 0x1A, 0x16, 0x17,
63  0x1E, 0x17, 0x13, 0x13, 0x1B, 0x25, 0x1C, 0x1E,
64  0x20, 0x21, 0x23, 0x23, 0x23, 0x15, 0x1A, 0x27,
65  0x29, 0x26, 0x22, 0x29, 0x1F, 0x22, 0x23, 0x22,
66  0x01,
67  0x05, 0x06, 0x06, 0x08, 0x07, 0x08, 0x10, 0x08,
68  0x08, 0x10, 0x22, 0x16, 0x13, 0x16, 0x22, 0x22,
69  0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
70  0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
71  0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
72  0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
73  0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
74  0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22
75 };
76 
77 static const uint8_t sp5x_data_dht[] = {
78  0xFF, 0xC4, /* DHT */
79  0x01, 0xA2, /* len */
80  0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01,
81  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
82  0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
83  0x07, 0x08, 0x09, 0x0A, 0x0B, 0x01, 0x00, 0x03,
84  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
85  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
86  0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
87  0x0A, 0x0B, 0x10, 0x00, 0x02, 0x01, 0x03, 0x03,
88  0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00,
89  0x00, 0x01, 0x7D, 0x01, 0x02, 0x03, 0x00, 0x04,
90  0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13,
91  0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81,
92  0x91, 0xA1, 0x08, 0x23, 0x42, 0xB1, 0xC1, 0x15,
93  0x52, 0xD1, 0xF0, 0x24, 0x33, 0x62, 0x72, 0x82,
94  0x09, 0x0A, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x25,
95  0x26, 0x27, 0x28, 0x29, 0x2A, 0x34, 0x35, 0x36,
96  0x37, 0x38, 0x39, 0x3A, 0x43, 0x44, 0x45, 0x46,
97  0x47, 0x48, 0x49, 0x4A, 0x53, 0x54, 0x55, 0x56,
98  0x57, 0x58, 0x59, 0x5A, 0x63, 0x64, 0x65, 0x66,
99  0x67, 0x68, 0x69, 0x6A, 0x73, 0x74, 0x75, 0x76,
100  0x77, 0x78, 0x79, 0x7A, 0x83, 0x84, 0x85, 0x86,
101  0x87, 0x88, 0x89, 0x8A, 0x92, 0x93, 0x94, 0x95,
102  0x96, 0x97, 0x98, 0x99, 0x9A, 0xA2, 0xA3, 0xA4,
103  0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xB2, 0xB3,
104  0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xC2,
105  0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA,
106  0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9,
107  0xDA, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
108  0xE8, 0xE9, 0xEA, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5,
109  0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0x11, 0x00, 0x02,
110  0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05,
111  0x04, 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, 0x01,
112  0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06,
113  0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22,
114  0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xA1, 0xB1,
115  0xC1, 0x09, 0x23, 0x33, 0x52, 0xF0, 0x15, 0x62,
116  0x72, 0xD1, 0x0A, 0x16, 0x24, 0x34, 0xE1, 0x25,
117  0xF1, 0x17, 0x18, 0x19, 0x1A, 0x26, 0x27, 0x28,
118  0x29, 0x2A, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A,
119  0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A,
120  0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A,
121  0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A,
122  0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A,
123  0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
124  0x8A, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
125  0x99, 0x9A, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
126  0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6,
127  0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3, 0xC4, 0xC5,
128  0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xD2, 0xD3, 0xD4,
129  0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xE2, 0xE3,
130  0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xF2,
131  0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA
132 };
133 
134 
135 static const uint8_t sp5x_quant_table[20][64]=
136 {
137  /* index 0, Q50 */
138  { 16, 11, 12, 14, 12, 10, 16, 14, 13, 14, 18, 17, 16, 19, 24, 40,
139  26, 24, 22, 22, 24, 49, 35, 37, 29, 40, 58, 51, 61, 60, 57, 51,
140  56, 55, 64, 72, 92, 78, 64, 68, 87, 69, 55, 56, 80,109, 81, 87,
141  95, 98,103,104,103, 62, 77,113,121,112,100,120, 92,101,103, 99 },
142  { 17, 18, 18, 24, 21, 24, 47, 26, 26, 47, 99, 66, 56, 66, 99, 99,
143  99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
144  99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
145  99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 },
146 
147  /* index 1, Q70 */
148  { 10, 7, 7, 8, 7, 6, 10, 8, 8, 8, 11, 10, 10, 11, 14, 24,
149  16, 14, 13, 13, 14, 29, 21, 22, 17, 24, 35, 31, 37, 36, 34, 31,
150  34, 33, 38, 43, 55, 47, 38, 41, 52, 41, 33, 34, 48, 65, 49, 52,
151  57, 59, 62, 62, 62, 37, 46, 68, 73, 67, 60, 72, 55, 61, 62, 59 },
152  { 10, 11, 11, 14, 13, 14, 28, 16, 16, 28, 59, 40, 34, 40, 59, 59,
153  59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
154  59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
155  59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59 },
156 
157  /* index 2, Q80 */
158  { 6, 4, 5, 6, 5, 4, 6, 6, 5, 6, 7, 7, 6, 8, 10, 16,
159  10, 10, 9, 9, 10, 20, 14, 15, 12, 16, 23, 20, 24, 24, 23, 20,
160  22, 22, 26, 29, 37, 31, 26, 27, 35, 28, 22, 22, 32, 44, 32, 35,
161  38, 39, 41, 42, 41, 25, 31, 45, 48, 45, 40, 48, 37, 40, 41, 40 },
162  { 7, 7, 7, 10, 8, 10, 19, 10, 10, 19, 40, 26, 22, 26, 40, 40,
163  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
164  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
165  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 },
166 
167  /* index 3, Q85 */
168  { 5, 3, 4, 4, 4, 3, 5, 4, 4, 4, 5, 5, 5, 6, 7, 12,
169  8, 7, 7, 7, 7, 15, 11, 11, 9, 12, 17, 15, 18, 18, 17, 15,
170  17, 17, 19, 22, 28, 23, 19, 20, 26, 21, 17, 17, 24, 33, 24, 26,
171  29, 29, 31, 31, 31, 19, 23, 34, 36, 34, 30, 36, 28, 30, 31, 30 },
172  { 5, 5, 5, 7, 6, 7, 14, 8, 8, 14, 30, 20, 17, 20, 30, 30,
173  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
174  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
175  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 },
176 
177  /* index 4, Q90 */
178  { 3, 2, 2, 3, 2, 2, 3, 3, 3, 3, 4, 3, 3, 4, 5, 8,
179  5, 5, 4, 4, 5, 10, 7, 7, 6, 8, 12, 10, 12, 12, 11, 10,
180  11, 11, 13, 14, 18, 16, 13, 14, 17, 14, 11, 11, 16, 22, 16, 17,
181  19, 20, 21, 21, 21, 12, 15, 23, 24, 22, 20, 24, 18, 20, 21, 20 },
182  { 3, 4, 4, 5, 4, 5, 9, 5, 5, 9, 20, 13, 11, 13, 20, 20,
183  20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
184  20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
185  20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 },
186 
187  /* index 5, Q60 */
188  { 13, 9, 10, 11, 10, 8, 13, 11, 10, 11, 14, 14, 13, 15, 19, 32,
189  21, 19, 18, 18, 19, 39, 28, 30, 23, 32, 46, 41, 49, 48, 46, 41,
190  45, 44, 51, 58, 74, 62, 51, 54, 70, 55, 44, 45, 64, 87, 65, 70,
191  76, 78, 82, 83, 82, 50, 62, 90, 97, 90, 80, 96, 74, 81, 82, 79 },
192  { 14, 14, 14, 19, 17, 19, 38, 21, 21, 38, 79, 53, 45, 53, 79, 79,
193  79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
194  79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
195  79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79 },
196 
197  /* index 6, Q25 */
198  { 32, 22, 24, 28, 24, 20, 32, 28, 26, 28, 36, 34, 32, 38, 48, 80,
199  52, 48, 44, 44, 48, 98, 70, 74, 58, 80,116,102,122,120,114,102,
200  112,110,128,144,184,156,128,136,174,138,110,112,160,218,162,174,
201  190,196,206,208,206,124,154,226,242,224,200,240,184,202,206,198 },
202  { 34, 36, 36, 48, 42, 48, 94, 52, 52, 94,198,132,112,132,198,198,
203  198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,
204  198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,
205  198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198 },
206 
207  /* index 7, Q95 */
208  { 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, 2, 4,
209  3, 2, 2, 2, 2, 5, 4, 4, 3, 4, 6, 5, 6, 6, 6, 5,
210  6, 6, 6, 7, 9, 8, 6, 7, 9, 7, 6, 6, 8, 11, 8, 9,
211  10, 10, 10, 10, 10, 6, 8, 11, 12, 11, 10, 12, 9, 10, 10, 10 },
212  { 2, 2, 2, 2, 2, 2, 5, 3, 3, 5, 10, 7, 6, 7, 10, 10,
213  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
214  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
215  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 },
216 
217  /* index 8, Q93 */
218  { 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 3, 2, 2, 3, 3, 6,
219  4, 3, 3, 3, 3, 7, 5, 5, 4, 6, 8, 7, 9, 8, 8, 7,
220  8, 8, 9, 10, 13, 11, 9, 10, 12, 10, 8, 8, 11, 15, 11, 12,
221  13, 14, 14, 15, 14, 9, 11, 16, 17, 16, 14, 17, 13, 14, 14, 14 },
222  { 2, 3, 3, 3, 3, 3, 7, 4, 4, 7, 14, 9, 8, 9, 14, 14,
223  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
224  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
225  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14 },
226 
227  /* index 9, Q40 */
228  { 20, 14, 15, 18, 15, 13, 20, 18, 16, 18, 23, 21, 20, 24, 30, 50,
229  33, 30, 28, 28, 30, 61, 44, 46, 36, 50, 73, 64, 76, 75, 71, 64,
230  70, 69, 80, 90,115, 98, 80, 85,109, 86, 69, 70,100,136,101,109,
231  119,123,129,130,129, 78, 96,141,151,140,125,150,115,126,129,124 },
232  { 21, 23, 23, 30, 26, 30, 59, 33, 33, 59,124, 83, 70, 83,124,124,
233  124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,
234  124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,
235  124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124 }
236 };
237 
238 #endif /* AVCODEC_SP5X_H */