Directory: | ../../../ffmpeg/ |
---|---|
File: | src/libavcodec/cfhddata.c |
Date: | 2022-07-07 01:21:54 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 58 | 60 | 96.7% |
Branches: | 23 | 26 | 88.5% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | /* | ||
2 | * Copyright (c) 2015 Kieran Kunhya | ||
3 | * | ||
4 | * This file is part of FFmpeg. | ||
5 | * | ||
6 | * FFmpeg is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU Lesser General Public | ||
8 | * License as published by the Free Software Foundation; either | ||
9 | * version 2.1 of the License, or (at your option) any later version. | ||
10 | * | ||
11 | * FFmpeg is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
14 | * Lesser General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU Lesser General Public | ||
17 | * License along with FFmpeg; if not, write to the Free Software | ||
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
19 | */ | ||
20 | |||
21 | #include <stdint.h> | ||
22 | |||
23 | #include "libavutil/attributes.h" | ||
24 | |||
25 | #include "cfhd.h" | ||
26 | |||
27 | /* some special codewords, not sure what they all mean */ | ||
28 | #define TABLE_9_BAND_END1 0x1C7859Eh | ||
29 | #define TABLE_9_BAND_END_LEN1 25 | ||
30 | #define TABLE_9_BAND_END2 0x38F0B3Fh | ||
31 | #define TABLE_9_BAND_END_LEN2 26 | ||
32 | #define TABLE_9_BAND_END3 0x38F0B3Eh | ||
33 | #define TABLE_9_BAND_END_LEN3 26 | ||
34 | |||
35 | #define NB_VLC_TABLE_9 (71 + 3) | ||
36 | #define NB_VLC_TABLE_18 (263 + 1) | ||
37 | |||
38 | static const uint32_t table_9_vlc_bits[NB_VLC_TABLE_9] = { | ||
39 | 0, 0x2, 0xc, 0x1a, | ||
40 | 0x1d, 0x1e, 0x39, 0x3e, | ||
41 | 0x37, 0x7e, 0x6c, 0xe2, | ||
42 | 0xfe, 0xdb, 0xe0, 0x1c3, | ||
43 | 0x1c6, 0x1ff, 0x1fe, 0x1b5, | ||
44 | 0x369, 0x385, 0x71d, 0x6d0, | ||
45 | 0x708, 0x71f, 0xe3d, 0xe39, | ||
46 | 0xe13, 0xe12, 0x1c71, 0x1b45, | ||
47 | 0x1b47, 0x3689, 0x38f2, 0x38e1, | ||
48 | 0x38e0, 0x38f1, 0x3688, 0x6d1b, | ||
49 | 0x71e0, 0x6d19, 0x71e7, 0xe3cd, | ||
50 | 0xda35, 0xda30, 0xe3c3, 0x1b469, | ||
51 | 0x1b462, 0x1c798, 0x1b463, 0x1c799, | ||
52 | 0x38f08, 0x38f09, 0x38f0a, 0x6d1a0, | ||
53 | 0x6d1a3, 0x6d1a1, 0xda345, 0xda344, | ||
54 | 0xe3c2d, 0xe3c2f, 0xe3c2e, 0x38f0b2, | ||
55 | 0x71e160, 0x71e162, 0x71e166, 0x71e161, | ||
56 | 0xe3c2ce, 0xe3c2c6, 0xe3c2c7, 0x1C7859E, | ||
57 | 0x38F0B3F, 0x38F0B3E, | ||
58 | }; | ||
59 | |||
60 | static const uint8_t table_9_vlc_len[NB_VLC_TABLE_9] = { | ||
61 | 1, 2, 4, 5, 5, 5, 6, 6, | ||
62 | 6, 7, 7, 8, 8, 8, 8, 9, | ||
63 | 9, 9, 9, 9, 10, 10, 11, 11, | ||
64 | 11, 11, 12, 12, 12, 12, 13, 13, | ||
65 | 13, 14, 14, 14, 14, 14, 14, 15, | ||
66 | 15, 15, 15, 16, 16, 16, 16, 17, | ||
67 | 17, 17, 17, 17, 18, 18, 18, 19, | ||
68 | 19, 19, 20, 20, 20, 20, 20, 22, | ||
69 | 23, 23, 23, 23, 24, 24, 24, 25, | ||
70 | 26, 26, | ||
71 | }; | ||
72 | |||
73 | static const uint16_t table_9_vlc_run[NB_VLC_TABLE_9] = { | ||
74 | 1, 1, 1, 1, 12, 1, 32, 160, | ||
75 | 1, 1, 1, 320, 1, 1, 80, 120, | ||
76 | 1, 1, 100, 1, 1, 1, 1, 1, | ||
77 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
78 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
79 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
80 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
81 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
82 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
83 | 1, 1 | ||
84 | }; | ||
85 | |||
86 | static const uint8_t table_9_vlc_level[NB_VLC_TABLE_9] = { | ||
87 | 0, 1, 2, 3, 0, 4, 0, 0, | ||
88 | 5, 7, 6, 0, 9, 8, 0, 0, | ||
89 | 11, 12, 0, 10, 13, 14, 17, 15, | ||
90 | 16, 18, 22, 21, 20, 19, 25, 23, | ||
91 | 24, 27, 31, 29, 28, 30, 26, 33, | ||
92 | 34, 32, 35, 39, 37, 36, 38, 42, | ||
93 | 40, 43, 41, 44, 45, 46, 47, 48, | ||
94 | 50, 49, 52, 51, 53, 55, 54, 56, | ||
95 | 57, 59, 60, 58, 61, 62, 63, 64, | ||
96 | 64, 64, | ||
97 | }; | ||
98 | |||
99 | static const uint32_t table_18_vlc_bits[NB_VLC_TABLE_18] = { | ||
100 | 0, 0x2, 0x7, 0x19, | ||
101 | 0x30, 0x36, 0x6f, 0x63, | ||
102 | 0x69, 0x6b, 0xd1, 0xd4, | ||
103 | 0xdc, 0x189, 0x18a, 0x1a0, | ||
104 | 0x1ab, 0x377, 0x310, 0x316, | ||
105 | 0x343, 0x354, 0x375, 0x623, | ||
106 | 0x684, 0x685, 0x6ab, 0x6ec, | ||
107 | 0xddb, 0xc5c, 0xc5e, 0xc44, | ||
108 | 0xd55, 0xdd1, 0xdd3, 0x1bb5, | ||
109 | 0x188b, 0x18bb, 0x18bf, 0x1aa8, | ||
110 | 0x1ba0, 0x1ba5, 0x1ba4, 0x3115, | ||
111 | 0x3175, 0x317d, 0x3553, 0x3768, | ||
112 | 0x6e87, 0x6ed3, 0x62e8, 0x62f8, | ||
113 | 0x6228, 0x6aa4, 0x6e85, 0xc453, | ||
114 | 0xc5d3, 0xc5f3, 0xdda4, 0xdd08, | ||
115 | 0xdd0c, 0x1bb4b, 0x1bb4a, 0x18ba5, | ||
116 | 0x18be5, 0x1aa95, 0x1aa97, 0x188a4, | ||
117 | 0x1ba13, 0x31748, 0x317c8, 0x35528, | ||
118 | 0x3552c, 0x37424, 0x37434, 0x37436, | ||
119 | 0x62294, 0x62e92, 0x62f92, 0x6aa52, | ||
120 | 0x6aa5a, 0x6e86a, 0x6e86e, 0x6e84a, | ||
121 | 0xc452a, 0xc5d27, 0xc5f26, 0xd54a6, | ||
122 | 0xd54b6, 0xdd096, 0xdd0d6, 0xdd0de, | ||
123 | 0x188a56, 0x18ba4d, 0x18be4e, 0x18be4f, | ||
124 | 0x1aa96e, 0x1ba12e, 0x1ba12f, 0x1ba1af, | ||
125 | 0x1ba1bf, 0x37435d, 0x37437d, 0x317498, | ||
126 | 0x35529c, 0x35529d, 0x3552de, 0x3552df, | ||
127 | 0x62e933, 0x62295d, 0x6aa53d, 0x6aa53f, | ||
128 | 0x6aa53e, 0x6e86b9, 0x6e86f8, 0xd54a79, | ||
129 | 0xc5d265, 0xc452b8, 0xdd0d71, 0xd54a78, | ||
130 | 0xdd0d70, 0xdd0df2, 0xdd0df3, 0x188a5f6, | ||
131 | 0x188a5f5, 0x188a5f4, 0x188a5f3, 0x188a5f2, | ||
132 | 0x188a5f1, 0x188a5f0, 0x188a5ef, 0x188a5ee, | ||
133 | 0x188a5ed, 0x188a5aa, 0x188a5e3, 0x188a5df, | ||
134 | 0x188a589, 0x188a5dd, 0x188a578, 0x188a5e0, | ||
135 | 0x188a588, 0x188a5d6, 0x188a5db, 0x188a5e1, | ||
136 | 0x188a587, 0x188a59a, 0x188a5c4, 0x188a5ec, | ||
137 | 0x188a586, 0x188a573, 0x188a59c, 0x188a5c8, | ||
138 | 0x188a5fb, 0x188a5a1, 0x188a5eb, 0x188a5a8, | ||
139 | 0x188a584, 0x188a5d2, 0x188a599, 0x188a598, | ||
140 | 0x188a583, 0x18ba4c9, 0x188a5d0, 0x188a594, | ||
141 | 0x188a582, 0x188a5cb, 0x188a5d8, 0x188a5e7, | ||
142 | 0x188a581, 0x188a5ea, 0x188a5a9, 0x188a5a6, | ||
143 | 0x188a580, 0x188a5a0, 0x188a59d, 0x188a5c3, | ||
144 | 0x188a57f, 0x188a5c0, 0x188a5de, 0x188a5d4, | ||
145 | 0x188a57e, 0x188a5c2, 0x188a592, 0x188a5cd, | ||
146 | 0x188a57d, 0x188a5a3, 0x188a5e8, 0x188a5a2, | ||
147 | 0x188a57c, 0x188a58e, 0x188a5b3, 0x188a5b2, | ||
148 | 0x188a5b1, 0x188a5b0, 0x188a5af, 0x188a5ae, | ||
149 | 0x188a5ad, 0x188a5ac, 0x188a5ab, 0x188a5da, | ||
150 | 0x188a5e4, 0x188a5e5, 0x188a5d9, 0x188a5b5, | ||
151 | 0x188a5bc, 0x188a5bd, 0x188a5e9, 0x188a5cc, | ||
152 | 0x188a585, 0x188a5d3, 0x188a5e2, 0x188a595, | ||
153 | 0x188a596, 0x188a5b8, 0x188a590, 0x188a5c9, | ||
154 | 0x188a5a4, 0x188a5e6, 0x188a5a5, 0x188a5ce, | ||
155 | 0x188a5bf, 0x188a572, 0x188a59b, 0x188a5be, | ||
156 | 0x188a5c7, 0x188a5ca, 0x188a5d5, 0x188a57b, | ||
157 | 0x188a58d, 0x188a58c, 0x188a58b, 0x188a58a, | ||
158 | 0x18ba4c8, 0x188a5c5, 0x188a5fa, 0x188a5bb, | ||
159 | 0x188a5c1, 0x188a5cf, 0x188a5b9, 0x188a5b6, | ||
160 | 0x188a597, 0x188a5fe, 0x188a5d7, 0x188a5ba, | ||
161 | 0x188a591, 0x188a5c6, 0x188a5dc, 0x188a57a, | ||
162 | 0x188a59f, 0x188a5f9, 0x188a5b4, 0x188a5a7, | ||
163 | 0x188a58f, 0x188a5fd, 0x188a5b7, 0x188a593, | ||
164 | 0x188a59e, 0x188a5f8, 0x188a5ff, 0x188a5fc, | ||
165 | 0x188a579, 0x188a5f7, 0x3114ba2, 0x3114ba3, | ||
166 | }; | ||
167 | |||
168 | static const uint8_t table_18_vlc_len[NB_VLC_TABLE_18] = { | ||
169 | 1, 2, 3, 5, 6, 6, 7, 7, | ||
170 | 7, 7, 8, 8, 8, 9, 9, 9, | ||
171 | 9, 10, 10, 10, 10, 10, 10, 11, | ||
172 | 11, 11, 11, 11, 12, 12, 12, 12, | ||
173 | 12, 12, 12, 13, 13, 13, 13, 13, | ||
174 | 13, 13, 13, 14, 14, 14, 14, 14, | ||
175 | 15, 15, 15, 15, 15, 15, 15, 16, | ||
176 | 16, 16, 16, 16, 16, 17, 17, 17, | ||
177 | 17, 17, 17, 17, 17, 18, 18, 18, | ||
178 | 18, 18, 18, 18, 19, 19, 19, 19, | ||
179 | 19, 19, 19, 19, 20, 20, 20, 20, | ||
180 | 20, 20, 20, 20, 21, 21, 21, 21, | ||
181 | 21, 21, 21, 21, 21, 22, 22, 22, | ||
182 | 22, 22, 22, 22, 23, 23, 23, 23, | ||
183 | 23, 23, 23, 24, 24, 24, 24, 24, | ||
184 | 24, 24, 24, 25, 25, 25, 25, 25, | ||
185 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
186 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
187 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
188 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
189 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
190 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
191 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
192 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
193 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
194 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
195 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
196 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
197 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
198 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
199 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
200 | 25, 25, 25, 25, 25, 25, 25, 25, | ||
201 | 25, 25, 25, 25, 25, 25, 26, 26, | ||
202 | }; | ||
203 | |||
204 | static const uint16_t table_18_vlc_run[NB_VLC_TABLE_18] = { | ||
205 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
206 | 12, 1, 20, 1, 1, 1, 32, 1, | ||
207 | 1, 1, 1, 1, 60, 1, 1, 1, | ||
208 | 1, 100, 1, 1, 1, 1, 1, 1, | ||
209 | 1, 1, 1, 1, 1, 1, 180, 1, | ||
210 | 1, 320, 1, 1, 1, 1, 1, 1, | ||
211 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
212 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
213 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
214 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
215 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
216 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
217 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
218 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
219 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
220 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
221 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
222 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
223 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
224 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
225 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
226 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
227 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
228 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
229 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
230 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
231 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
232 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
233 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
234 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
235 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
236 | 1, 1, 1, 1, 1, 1, 1, 1, | ||
237 | 1, 1, 1, 1, 1, 1, 1, 2, | ||
238 | }; | ||
239 | |||
240 | static const uint8_t table_18_vlc_level[NB_VLC_TABLE_18] = { | ||
241 | 0, 1, 2, 3, 4, 5, 8, 6, | ||
242 | 0, 7, 0, 9, 10, 11, 0, 12, | ||
243 | 13, 18, 14, 15, 0, 16, 17, 19, | ||
244 | 20, 0, 21, 22, 29, 24, 25, 23, | ||
245 | 26, 27, 28, 35, 30, 31, 0, 32, | ||
246 | 33, 0, 34, 36, 37, 38, 39, 40, | ||
247 | 46, 47, 42, 43, 41, 44, 45, 48, | ||
248 | 49, 50, 53, 51, 52, 61, 60, 55, | ||
249 | 56, 57, 58, 54, 59, 62, 63, 64, | ||
250 | 65, 66, 67, 68, 69, 70, 71, 72, | ||
251 | 73, 75, 76, 74, 77, 78, 79, 80, | ||
252 | 81, 82, 83, 84, 85, 86, 87, 88, | ||
253 | 89, 90, 91, 92, 93, 99, 100, 94, | ||
254 | 95, 96, 97, 98, 102, 101, 103, 105, | ||
255 | 104, 106, 107, 111, 109, 108, 113, 110, | ||
256 | 112, 114, 115, 225, 189, 188, 203, 202, | ||
257 | 197, 207, 169, 223, 159, 235, 152, 192, | ||
258 | 179, 201, 172, 149, 178, 120, 219, 150, | ||
259 | 127, 211, 125, 158, 247, 238, 163, 228, | ||
260 | 183, 217, 168, 122, 128, 249, 187, 186, | ||
261 | 136, 181, 255, 230, 135, 233, 222, 145, | ||
262 | 134, 167, 248, 209, 243, 216, 164, 140, | ||
263 | 157, 239, 191, 251, 156, 139, 242, 133, | ||
264 | 162, 213, 165, 212, 227, 198, 236, 234, | ||
265 | 117, 215, 124, 123, 254, 253, 148, 218, | ||
266 | 146, 147, 224, 143, 184, 185, 166, 132, | ||
267 | 129, 250, 151, 119, 193, 176, 245, 229, | ||
268 | 206, 144, 208, 137, 241, 237, 190, 240, | ||
269 | 131, 232, 252, 171, 205, 204, 118, 214, | ||
270 | 180, 126, 182, 175, 141, 138, 177, 153, | ||
271 | 194, 160, 121, 174, 246, 130, 200, 170, | ||
272 | 221, 196, 142, 210, 199, 155, 154, 244, | ||
273 | 220, 195, 161, 231, 173, 226, 116, 255, | ||
274 | }; | ||
275 | |||
276 | 6 | av_cold int ff_cfhd_init_vlcs(CFHDContext *s) | |
277 | { | ||
278 | 6 | int i, j, ret = 0; | |
279 | uint32_t new_cfhd_vlc_bits[NB_VLC_TABLE_18 * 2]; | ||
280 | uint8_t new_cfhd_vlc_len[NB_VLC_TABLE_18 * 2]; | ||
281 | uint16_t new_cfhd_vlc_run[NB_VLC_TABLE_18 * 2]; | ||
282 | int16_t new_cfhd_vlc_level[NB_VLC_TABLE_18 * 2]; | ||
283 | |||
284 | /** Similar to dv.c, generate signed VLC tables **/ | ||
285 | |||
286 | /* Table 9 */ | ||
287 |
2/2✓ Branch 0 taken 444 times.
✓ Branch 1 taken 6 times.
|
450 | for (i = 0, j = 0; i < NB_VLC_TABLE_9; i++, j++) { |
288 | 444 | new_cfhd_vlc_bits[j] = table_9_vlc_bits[i]; | |
289 | 444 | new_cfhd_vlc_len[j] = table_9_vlc_len[i]; | |
290 | 444 | new_cfhd_vlc_run[j] = table_9_vlc_run[i]; | |
291 | 444 | new_cfhd_vlc_level[j] = table_9_vlc_level[i]; | |
292 | |||
293 | /* Don't include the zero level nor escape bits */ | ||
294 |
2/2✓ Branch 0 taken 396 times.
✓ Branch 1 taken 48 times.
|
444 | if (table_9_vlc_level[i] && |
295 |
2/2✓ Branch 0 taken 390 times.
✓ Branch 1 taken 6 times.
|
396 | new_cfhd_vlc_bits[j] != table_9_vlc_bits[NB_VLC_TABLE_9-1]) { |
296 | 390 | new_cfhd_vlc_bits[j] <<= 1; | |
297 | 390 | new_cfhd_vlc_len[j]++; | |
298 | 390 | j++; | |
299 | 390 | new_cfhd_vlc_bits[j] = (table_9_vlc_bits[i] << 1) | 1; | |
300 | 390 | new_cfhd_vlc_len[j] = table_9_vlc_len[i] + 1; | |
301 | 390 | new_cfhd_vlc_run[j] = table_9_vlc_run[i]; | |
302 | 390 | new_cfhd_vlc_level[j] = -table_9_vlc_level[i]; | |
303 | } | ||
304 | } | ||
305 | |||
306 | 6 | ret = init_vlc(&s->vlc_9, VLC_BITS, j, new_cfhd_vlc_len, | |
307 | 1, 1, new_cfhd_vlc_bits, 4, 4, 0); | ||
308 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
|
6 | if (ret < 0) |
309 | ✗ | return ret; | |
310 |
2/2✓ Branch 0 taken 12528 times.
✓ Branch 1 taken 6 times.
|
12534 | for (i = 0; i < s->vlc_9.table_size; i++) { |
311 | 12528 | int code = s->vlc_9.table[i].sym; | |
312 | 12528 | int len = s->vlc_9.table[i].len; | |
313 | int level, run; | ||
314 | |||
315 |
2/2✓ Branch 0 taken 72 times.
✓ Branch 1 taken 12456 times.
|
12528 | if (len < 0) { // more bits needed |
316 | 72 | run = 0; | |
317 | 72 | level = code; | |
318 | } else { | ||
319 | 12456 | run = new_cfhd_vlc_run[code]; | |
320 | 12456 | level = new_cfhd_vlc_level[code]; | |
321 | } | ||
322 | 12528 | s->table_9_rl_vlc[i].len = len; | |
323 | 12528 | s->table_9_rl_vlc[i].level = level; | |
324 | 12528 | s->table_9_rl_vlc[i].run = run; | |
325 | } | ||
326 | |||
327 | /* Table 18 */ | ||
328 |
2/2✓ Branch 0 taken 1584 times.
✓ Branch 1 taken 6 times.
|
1590 | for (i = 0, j = 0; i < NB_VLC_TABLE_18; i++, j++) { |
329 | 1584 | new_cfhd_vlc_bits[j] = table_18_vlc_bits[i]; | |
330 | 1584 | new_cfhd_vlc_len[j] = table_18_vlc_len[i]; | |
331 | 1584 | new_cfhd_vlc_run[j] = table_18_vlc_run[i]; | |
332 | 1584 | new_cfhd_vlc_level[j] = table_18_vlc_level[i]; | |
333 | |||
334 | /* Don't include the zero level nor escape bits */ | ||
335 |
2/2✓ Branch 0 taken 1536 times.
✓ Branch 1 taken 48 times.
|
1584 | if (table_18_vlc_level[i] && |
336 |
2/2✓ Branch 0 taken 1530 times.
✓ Branch 1 taken 6 times.
|
1536 | new_cfhd_vlc_bits[j] != table_18_vlc_bits[NB_VLC_TABLE_18-1]) { |
337 | 1530 | new_cfhd_vlc_bits[j] <<= 1; | |
338 | 1530 | new_cfhd_vlc_len[j]++; | |
339 | 1530 | j++; | |
340 | 1530 | new_cfhd_vlc_bits[j] = (table_18_vlc_bits[i] << 1) | 1; | |
341 | 1530 | new_cfhd_vlc_len[j] = table_18_vlc_len[i] + 1; | |
342 | 1530 | new_cfhd_vlc_run[j] = table_18_vlc_run[i]; | |
343 | 1530 | new_cfhd_vlc_level[j] = -table_18_vlc_level[i]; | |
344 | } | ||
345 | } | ||
346 | |||
347 | 6 | ret = init_vlc(&s->vlc_18, VLC_BITS, j, new_cfhd_vlc_len, | |
348 | 1, 1, new_cfhd_vlc_bits, 4, 4, 0); | ||
349 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
|
6 | if (ret < 0) |
350 | ✗ | return ret; | |
351 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
|
6 | av_assert0(s->vlc_18.table_size == 4572); |
352 | |||
353 |
2/2✓ Branch 0 taken 27432 times.
✓ Branch 1 taken 6 times.
|
27438 | for (i = 0; i < s->vlc_18.table_size; i++) { |
354 | 27432 | int code = s->vlc_18.table[i].sym; | |
355 | 27432 | int len = s->vlc_18.table[i].len; | |
356 | int level, run; | ||
357 | |||
358 |
2/2✓ Branch 0 taken 150 times.
✓ Branch 1 taken 27282 times.
|
27432 | if (len < 0) { // more bits needed |
359 | 150 | run = 0; | |
360 | 150 | level = code; | |
361 | } else { | ||
362 | 27282 | run = new_cfhd_vlc_run[code]; | |
363 | 27282 | level = new_cfhd_vlc_level[code]; | |
364 | } | ||
365 | 27432 | s->table_18_rl_vlc[i].len = len; | |
366 | 27432 | s->table_18_rl_vlc[i].level = level; | |
367 | 27432 | s->table_18_rl_vlc[i].run = run; | |
368 | } | ||
369 | |||
370 | 6 | return ret; | |
371 | } | ||
372 |