Lines Matching refs:gb

62 static av_always_inline uint32_t jxl_u32(GetBitContext *gb,
68 uint32_t ret, choice = get_bits(gb, 2);
72 ret += get_bits_long(gb, ubits[choice]);
77 static av_always_inline uint32_t jxl_enum(GetBitContext *gb)
79 return jxl_u32(gb, 0, 1, 2, 18, 0, 0, 4, 6);
83 static uint64_t jpegxl_u64(GetBitContext *gb)
87 switch (get_bits(gb, 2)) {
92 ret = 1 + get_bits(gb, 4);
95 ret = 17 + get_bits(gb, 8);
98 ret = get_bits(gb, 12);
99 while (get_bits1(gb)) {
101 ret |= (uint64_t)get_bits(gb, 8) << shift;
104 ret |= (uint64_t)get_bits(gb, 4) << shift;
143 static int jpegxl_read_size_header(GetBitContext *gb)
147 if (get_bits1(gb)) {
149 height = (get_bits(gb, 5) + 1) << 3;
150 width = jpegxl_width_from_ratio(height, get_bits(gb, 3));
152 width = (get_bits(gb, 5) + 1) << 3;
155 height = 1 + jxl_u32(gb, 0, 0, 0, 0, 9, 13, 18, 30);
156 width = jpegxl_width_from_ratio(height, get_bits(gb, 3));
158 width = 1 + jxl_u32(gb, 0, 0, 0, 0, 9, 13, 18, 30);
171 static int jpegxl_read_preview_header(GetBitContext *gb)
175 if (get_bits1(gb)) {
177 height = jxl_u32(gb, 16, 32, 1, 33, 0, 0, 5, 9) << 3;
178 width = jpegxl_width_from_ratio(height, get_bits(gb, 3));
180 width = jxl_u32(gb, 16, 32, 1, 33, 0, 0, 5, 9) << 3;
183 height = jxl_u32(gb, 1, 65, 321, 1345, 6, 8, 10, 12);
184 width = jpegxl_width_from_ratio(height, get_bits(gb, 3));
186 width = jxl_u32(gb, 1, 65, 321, 1345, 6, 8, 10, 12);
197 static void jpegxl_skip_bit_depth(GetBitContext *gb)
199 if (get_bits1(gb)) {
201 jxl_u32(gb, 32, 16, 24, 1, 0, 0, 0, 6); /* mantissa */
202 skip_bits_long(gb, 4); /* exponent */
205 jxl_u32(gb, 8, 10, 12, 1, 0, 0, 0, 6);
213 static int jpegxl_read_extra_channel_info(GetBitContext *gb)
215 int all_default = get_bits1(gb);
219 type = jxl_enum(gb);
224 jpegxl_skip_bit_depth(gb);
225 jxl_u32(gb, 0, 3, 4, 1, 0, 0, 0, 3); /* dim-shift */
227 name_len = jxl_u32(gb, 0, 0, 16, 48, 0, 4, 5, 10);
233 skip_bits_long(gb, 8 * name_len);
236 skip_bits1(gb);
239 skip_bits_long(gb, 16 * 4);
242 jxl_u32(gb, 1, 0, 3, 19, 0, 2, 4, 8);
250 GetBitContext gbi, *gb = &gbi;
257 ret = init_get_bits8(gb, buf, buflen);
261 if (get_bits_long(gb, 16) != FF_JPEGXL_CODESTREAM_SIGNATURE_LE)
264 if ((ret = jpegxl_read_size_header(gb)) < 0)
267 all_default = get_bits1(gb);
269 extra_fields = get_bits1(gb);
272 skip_bits_long(gb, 3); /* orientation */
279 if (get_bits1(gb))
280 jpegxl_read_size_header(gb);
283 if (get_bits1(gb)) {
284 ret = jpegxl_read_preview_header(gb);
290 if (get_bits1(gb)) {
291 jxl_u32(gb, 100, 1000, 1, 1, 0, 0, 10, 30);
292 jxl_u32(gb, 1, 1001, 1, 1, 0, 0, 8, 10);
293 jxl_u32(gb, 0, 0, 0, 0, 0, 3, 16, 32);
294 skip_bits_long(gb, 1);
297 if (get_bits_left(gb) < 1)
301 jpegxl_skip_bit_depth(gb);
304 if (!get_bits1(gb))
307 num_extra_channels = jxl_u32(gb, 0, 1, 2, 1, 0, 0, 4, 12);
311 ret = jpegxl_read_extra_channel_info(gb);
314 if (get_bits_left(gb) < 1)
318 xyb_encoded = get_bits1(gb);
321 if (!get_bits1(gb)) {
323 have_icc_profile = get_bits1(gb);
324 color_space = jxl_enum(gb);
330 uint32_t white_point = jxl_enum(gb);
335 jxl_u32(gb, 0, 524288, 1048576, 2097152, 19, 19, 20, 21);
336 jxl_u32(gb, 0, 524288, 1048576, 2097152, 19, 19, 20, 21);
340 uint32_t primaries = jxl_enum(gb);
346 jxl_u32(gb, 0, 524288, 1048576, 2097152, 19, 19, 20, 21);
347 if (get_bits_left(gb) < 1)
355 if (get_bits1(gb)) {
357 skip_bits_long(gb, 24);
360 if (jxl_enum(gb) > 63)
365 if (jxl_enum(gb) > 63)
371 if (extra_fields && !get_bits1(gb))
372 skip_bits_long(gb, 16 + 16 + 1 + 16);
374 extensions = jpegxl_u64(gb);
375 if (get_bits_left(gb) < 1)
380 jpegxl_u64(gb);
381 if (get_bits_left(gb) < 1)
388 if (!get_bits1(gb)) {
390 if (xyb_encoded && !get_bits1(gb))
391 skip_bits_long(gb, 16 * 16);
393 if (get_bits1(gb))
394 skip_bits_long(gb, 16 * 15);
395 if (get_bits1(gb))
396 skip_bits_long(gb, 16 * 55);
397 if (get_bits1(gb))
398 skip_bits_long(gb, 16 * 210);
402 int bits_remaining = 7 - (get_bits_count(gb) - 1) % 8;
403 if (bits_remaining && get_bits(gb, bits_remaining))
407 if (get_bits_left(gb) < 0)