Lines Matching refs:private_impl

372   // private_impl is a placeholder field. It isn't explicitly used, except that
381 uint8_t private_impl;
387 ret.private_impl = 0;
394 // private_impl is a placeholder field. It isn't explicitly used, except that
403 uint8_t private_impl;
4123 // Do not access the private_impl's fields directly. There is no API/ABI
4130 } private_impl;
4152 ret.private_impl.pixfmt.repr = 0;
4153 ret.private_impl.pixsub.repr = 0;
4154 ret.private_impl.width = 0;
4155 ret.private_impl.height = 0;
4173 c->private_impl.pixfmt.repr = pixfmt_repr;
4174 c->private_impl.pixsub.repr = pixsub_repr;
4175 c->private_impl.width = width;
4176 c->private_impl.height = height;
4181 c->private_impl.pixfmt.repr = 0;
4182 c->private_impl.pixsub.repr = 0;
4183 c->private_impl.width = 0;
4184 c->private_impl.height = 0;
4190 c->private_impl.pixfmt.repr = 0;
4191 c->private_impl.pixsub.repr = 0;
4192 c->private_impl.width = 0;
4193 c->private_impl.height = 0;
4199 return c && c->private_impl.pixfmt.repr;
4204 return c ? c->private_impl.pixfmt : wuffs_base__make_pixel_format(0);
4209 return c ? c->private_impl.pixsub : wuffs_base__make_pixel_subsampling(0);
4218 ret.max_excl_x = c->private_impl.width;
4219 ret.max_excl_y = c->private_impl.height;
4233 return c ? c->private_impl.width : 0;
4238 return c ? c->private_impl.height : 0;
4249 if (wuffs_base__pixel_format__is_planar(&c->private_impl.pixfmt)) {
4254 wuffs_base__pixel_format__bits_per_pixel(&c->private_impl.pixfmt);
4262 ((uint64_t)c->private_impl.width) * ((uint64_t)c->private_impl.height);
4268 if (wuffs_base__pixel_format__is_indexed(&c->private_impl.pixfmt)) {
4336 // Do not access the private_impl's fields directly. There is no API/ABI
4341 } private_impl;
4362 ret.private_impl.first_frame_io_position = 0;
4363 ret.private_impl.first_frame_is_opaque = false;
4380 c->pixcfg.private_impl.pixfmt.repr = pixfmt_repr;
4381 c->pixcfg.private_impl.pixsub.repr = pixsub_repr;
4382 c->pixcfg.private_impl.width = width;
4383 c->pixcfg.private_impl.height = height;
4384 c->private_impl.first_frame_io_position = first_frame_io_position;
4385 c->private_impl.first_frame_is_opaque = first_frame_is_opaque;
4389 c->pixcfg.private_impl.pixfmt.repr = 0;
4390 c->pixcfg.private_impl.pixsub.repr = 0;
4391 c->pixcfg.private_impl.width = 0;
4392 c->pixcfg.private_impl.height = 0;
4393 c->private_impl.first_frame_io_position = 0;
4394 c->private_impl.first_frame_is_opaque = 0;
4400 c->pixcfg.private_impl.pixfmt.repr = 0;
4401 c->pixcfg.private_impl.pixsub.repr = 0;
4402 c->pixcfg.private_impl.width = 0;
4403 c->pixcfg.private_impl.height = 0;
4404 c->private_impl.first_frame_io_position = 0;
4405 c->private_impl.first_frame_is_opaque = 0;
4417 return c ? c->private_impl.first_frame_io_position : 0;
4423 return c ? c->private_impl.first_frame_is_opaque : false;
4482 // Do not access the private_impl's fields directly. There is no API/ABI
4493 } private_impl;
4521 ret.private_impl.bounds = wuffs_base__make_rect_ie_u32(0, 0, 0, 0);
4522 ret.private_impl.duration = 0;
4523 ret.private_impl.index = 0;
4524 ret.private_impl.io_position = 0;
4525 ret.private_impl.disposal = 0;
4526 ret.private_impl.opaque_within_bounds = false;
4527 ret.private_impl.overwrite_instead_of_blend = false;
4546 c->private_impl.bounds = bounds;
4547 c->private_impl.duration = duration;
4548 c->private_impl.index = index;
4549 c->private_impl.io_position = io_position;
4550 c->private_impl.disposal = disposal;
4551 c->private_impl.opaque_within_bounds = opaque_within_bounds;
4552 c->private_impl.overwrite_instead_of_blend = overwrite_instead_of_blend;
4553 c->private_impl.background_color = background_color;
4559 return c->private_impl.bounds;
4572 return c ? wuffs_base__rect_ie_u32__width(&c->private_impl.bounds) : 0;
4577 return c ? wuffs_base__rect_ie_u32__height(&c->private_impl.bounds) : 0;
4584 return c ? c->private_impl.duration : 0;
4591 return c ? c->private_impl.index : 0;
4598 return c ? c->private_impl.io_position : 0;
4605 return c ? c->private_impl.disposal : 0;
4622 return c && c->private_impl.opaque_within_bounds;
4636 return c && c->private_impl.overwrite_instead_of_blend;
4641 return c ? c->private_impl.background_color : 0;
4718 // Do not access the private_impl's fields directly. There is no API/ABI
4723 } private_impl;
4757 ret.private_impl.planes[0] = wuffs_base__empty_table_u8();
4758 ret.private_impl.planes[1] = wuffs_base__empty_table_u8();
4759 ret.private_impl.planes[2] = wuffs_base__empty_table_u8();
4760 ret.private_impl.planes[3] = wuffs_base__empty_table_u8();
4775 wuffs_base__pixel_format__is_planar(&pixcfg->private_impl.pixfmt)) {
4778 if (wuffs_base__pixel_format__is_indexed(&pixcfg->private_impl.pixfmt) &&
4785 wuffs_base__pixel_format__bits_per_pixel(&pixcfg->private_impl.pixfmt);
4793 ((uint64_t)pixcfg->private_impl.width) * bytes_per_pixel;
4795 (pixcfg->private_impl.height > primary_memory.height)) {
4800 pb->private_impl.planes[0] = primary_memory;
4801 if (wuffs_base__pixel_format__is_indexed(&pixcfg->private_impl.pixfmt)) {
4803 &pb->private_impl
4824 if (wuffs_base__pixel_format__is_planar(&pixcfg->private_impl.pixfmt)) {
4829 wuffs_base__pixel_format__bits_per_pixel(&pixcfg->private_impl.pixfmt);
4838 if (wuffs_base__pixel_format__is_indexed(&pixcfg->private_impl.pixfmt)) {
4849 &pb->private_impl
4859 uint64_t wh = ((uint64_t)pixcfg->private_impl.width) *
4860 ((uint64_t)pixcfg->private_impl.height);
4861 size_t width = (size_t)(pixcfg->private_impl.width);
4874 wuffs_base__table_u8* tab = &pb->private_impl.planes[0];
4877 tab->height = pixcfg->private_impl.height;
4893 wuffs_base__pixel_format__is_indexed(&pixcfg->private_impl.pixfmt) ||
4894 wuffs_base__pixel_format__is_planar(&pixcfg->private_impl.pixfmt)) {
4898 wuffs_base__pixel_format__bits_per_pixel(&pixcfg->private_impl.pixfmt);
4906 ((uint64_t)pixcfg->private_impl.width) * bytes_per_pixel;
4908 (pixcfg->private_impl.height > primary_memory.height)) {
4913 pb->private_impl.planes[0] = primary_memory;
4923 wuffs_base__pixel_format__is_indexed(&pb->pixcfg.private_impl.pixfmt)) {
4925 &pb->private_impl
4941 wuffs_base__pixel_format__is_indexed(&pb->pixcfg.private_impl.pixfmt)) {
4943 &pb->private_impl
4958 return pb->pixcfg.private_impl.pixfmt;
4966 return pb->private_impl.planes[p];
5073 // Do not access the private_impl's fields directly. There is no API/ABI
5077 } private_impl;
5124 // Do not access the private_impl's fields directly. There is no API/ABI
5131 } private_impl;
5851 } private_impl;
6002 } private_impl;
6143 } private_impl;
6221 } private_impl;
6342 // Do not access the private_impl's or private_data's fields directly. There
6361 } private_impl;
6387 // their first argument) rather than tweaking bar.private_impl.qux fields.
6585 // Do not access the private_impl's or private_data's fields directly. There
6628 } private_impl;
6671 // their first argument) rather than tweaking bar.private_impl.qux fields.
6900 // Do not access the private_impl's or private_data's fields directly. There
6916 } private_impl;
6955 // their first argument) rather than tweaking bar.private_impl.qux fields.
7099 // Do not access the private_impl's or private_data's fields directly. There
7117 } private_impl;
7143 // their first argument) rather than tweaking bar.private_impl.qux fields.
7307 // Do not access the private_impl's or private_data's fields directly. There
7336 } private_impl;
7403 // their first argument) rather than tweaking bar.private_impl.qux fields.
7572 // Do not access the private_impl's or private_data's fields directly. There
7601 } private_impl;
7633 // their first argument) rather than tweaking bar.private_impl.qux fields.
7866 // Do not access the private_impl's or private_data's fields directly. There
7931 } private_impl;
8011 // their first argument) rather than tweaking bar.private_impl.qux fields.
8226 // Do not access the private_impl's or private_data's fields directly. There
8242 } private_impl;
8281 // their first argument) rather than tweaking bar.private_impl.qux fields.
8488 // Do not access the private_impl's or private_data's fields directly. There
8513 } private_impl;
8552 // their first argument) rather than tweaking bar.private_impl.qux fields.
8756 // Do not access the private_impl's or private_data's fields directly. There
8780 } private_impl;
8812 // their first argument) rather than tweaking bar.private_impl.qux fields.
9040 // Do not access the private_impl's or private_data's fields directly. There
9063 } private_impl;
9100 // their first argument) rather than tweaking bar.private_impl.qux fields.
9324 // Do not access the private_impl's or private_data's fields directly. There
9436 } private_impl;
9521 // their first argument) rather than tweaking bar.private_impl.qux fields.
9784 // Do not access the private_impl's or private_data's fields directly. There
9818 } private_impl;
9866 // their first argument) rather than tweaking bar.private_impl.qux fields.
10127 // Do not access the private_impl's or private_data's fields directly. There
10149 } private_impl;
10189 // their first argument) rather than tweaking bar.private_impl.qux fields.
11768 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
11772 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
11795 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
11799 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
11828 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
11830 (self->private_impl.magic == WUFFS_BASE__DISABLED)
11835 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
11859 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
11861 (self->private_impl.magic == WUFFS_BASE__DISABLED)
11866 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
11890 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
11892 (self->private_impl.magic == WUFFS_BASE__DISABLED)
11897 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
11919 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
11920 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
11924 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
11946 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
11947 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
11951 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
11973 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
11974 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
11978 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
12000 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
12001 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
12005 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
12029 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
12031 (self->private_impl.magic == WUFFS_BASE__DISABLED)
12036 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
12060 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
12064 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
12088 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
12092 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
12117 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
12119 (self->private_impl.magic == WUFFS_BASE__DISABLED)
12124 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
12146 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
12147 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
12151 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
12177 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
12181 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
12206 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
12208 (self->private_impl.magic == WUFFS_BASE__DISABLED)
12213 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
12235 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
12236 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
12240 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
12267 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
12269 (self->private_impl.magic == WUFFS_BASE__DISABLED)
12274 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
12298 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
12302 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
12324 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
12325 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
12329 const wuffs_base__vtable* v = &self->private_impl.first_vtable;
16214 if (!pb || (x >= pb->pixcfg.private_impl.width) ||
16215 (y >= pb->pixcfg.private_impl.height)) {
16219 if (wuffs_base__pixel_format__is_planar(&pb->pixcfg.private_impl.pixfmt)) {
16224 size_t stride = pb->private_impl.planes[0].stride;
16225 const uint8_t* row = pb->private_impl.planes[0].ptr + (stride * ((size_t)y));
16227 switch (pb->pixcfg.private_impl.pixfmt.repr) {
16234 uint8_t* palette = pb->private_impl.planes[3].ptr;
16249 uint8_t* palette = pb->private_impl.planes[3].ptr;
16308 if ((x >= pb->pixcfg.private_impl.width) ||
16309 (y >= pb->pixcfg.private_impl.height)) {
16313 if (wuffs_base__pixel_format__is_planar(&pb->pixcfg.private_impl.pixfmt)) {
16318 size_t stride = pb->private_impl.planes[0].stride;
16319 uint8_t* row = pb->private_impl.planes[0].ptr + (stride * ((size_t)y));
16321 switch (pb->pixcfg.private_impl.pixfmt.repr) {
16351 pb->pixcfg.private_impl.pixfmt, color));
16406 size_t stride = pb->private_impl.planes[0].stride;
16410 pb->private_impl.planes[0].ptr + (stride * ((size_t)rect.min_incl_y));
16422 uint8_t* ptr = pb->private_impl.planes[0].ptr + (stride * ((size_t)y)) +
16437 size_t stride = pb->private_impl.planes[0].stride;
16441 pb->private_impl.planes[0].ptr + (stride * ((size_t)rect.min_incl_y));
16453 uint8_t* ptr = pb->private_impl.planes[0].ptr + (stride * ((size_t)y)) +
16468 size_t stride = pb->private_impl.planes[0].stride;
16472 pb->private_impl.planes[0].ptr + (stride * ((size_t)rect.min_incl_y));
16484 uint8_t* ptr = pb->private_impl.planes[0].ptr + (stride * ((size_t)y)) +
16499 size_t stride = pb->private_impl.planes[0].stride;
16503 pb->private_impl.planes[0].ptr + (stride * ((size_t)rect.min_incl_y));
16515 uint8_t* ptr = pb->private_impl.planes[0].ptr + (stride * ((size_t)y)) +
16541 if (wuffs_base__pixel_format__is_planar(&pb->pixcfg.private_impl.pixfmt)) {
16546 switch (pb->pixcfg.private_impl.pixfmt.repr) {
21280 p->private_impl.func = NULL;
21281 p->private_impl.transparent_black_func = NULL;
21282 p->private_impl.dst_pixfmt_bytes_per_pixel = 0;
21283 p->private_impl.src_pixfmt_bytes_per_pixel = 0;
21386 p->private_impl.func = func;
21387 p->private_impl.transparent_black_func = transparent_black_func;
21388 p->private_impl.dst_pixfmt_bytes_per_pixel = dst_pixfmt_bits_per_pixel / 8;
21389 p->private_impl.src_pixfmt_bytes_per_pixel = src_pixfmt_bits_per_pixel / 8;
21402 if (p && p->private_impl.func) {
21406 ((uint64_t)p->private_impl.src_pixfmt_bytes_per_pixel),
21409 (*p->private_impl.func)(dst.ptr, dst.len, dst_palette.ptr,
21411 *ptr_iop_r += n * p->private_impl.src_pixfmt_bytes_per_pixel;
21424 if (p && p->private_impl.func) {
21428 (*p->private_impl.func)(dst.ptr, dst.len, dst_palette.ptr,
21430 *ptr_iop_r += n * p->private_impl.src_pixfmt_bytes_per_pixel;
21442 if (p && p->private_impl.func) {
21443 return (*p->private_impl.func)(dst.ptr, dst.len, dst_palette.ptr,
21455 if (p && p->private_impl.transparent_black_func) {
21456 return (*p->private_impl.transparent_black_func)(
21458 p->private_impl.dst_pixfmt_bytes_per_pixel);
21763 if (self->private_impl.magic != 0) {
21774 memset(&(self->private_impl), 0, sizeof(self->private_impl));
21778 self->private_impl.choosy_up = &wuffs_adler32__hasher__up__choosy_default;
21780 self->private_impl.magic = WUFFS_BASE__MAGIC;
21781 self->private_impl.vtable_for__wuffs_base__hasher_u32.vtable_name =
21783 self->private_impl.vtable_for__wuffs_base__hasher_u32.function_pointers =
21829 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
21833 if ( ! self->private_impl.f_started) {
21834 self->private_impl.f_started = true;
21835 self->private_impl.f_state = 1;
21836 self->private_impl.choosy_up = (
21843 self->private_impl.choosy_up);
21846 return self->private_impl.f_state;
21855 return (*self->private_impl.choosy_up)(self, a_x);
21867 v_s1 = ((self->private_impl.f_state) & 0xFFFF);
21868 v_s2 = ((self->private_impl.f_state) >> (32 - (16)));
21919 self->private_impl.f_state = (((v_s2 & 65535) << 16) | (v_s1 & 65535));
21949 v_s1 = ((self->private_impl.f_state) & 0xFFFF);
21950 v_s2 = ((self->private_impl.f_state) >> (32 - (16)));
22033 self->private_impl.f_state = (((v_s2 & 65535) << 16) | (v_s1 & 65535));
22069 v_s1 = ((self->private_impl.f_state) & 0xFFFF);
22070 v_s2 = ((self->private_impl.f_state) >> (32 - (16)));
22125 self->private_impl.f_state = (((v_s2 & 65535) << 16) | (v_s1 & 65535));
22271 if (self->private_impl.magic != 0) {
22282 memset(&(self->private_impl), 0, sizeof(self->private_impl));
22286 self->private_impl.magic = WUFFS_BASE__MAGIC;
22287 self->private_impl.vtable_for__wuffs_base__image_decoder.vtable_name =
22289 self->private_impl.vtable_for__wuffs_base__image_decoder.function_pointers =
22336 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
22338 (self->private_impl.magic == WUFFS_BASE__DISABLED)
22343 self->private_impl.magic = WUFFS_BASE__DISABLED;
22346 if ((self->private_impl.active_coroutine != 0) &&
22347 (self->private_impl.active_coroutine != 1)) {
22348 self->private_impl.magic = WUFFS_BASE__DISABLED;
22351 self->private_impl.active_coroutine = 0;
22372 uint32_t coro_susp_point = self->private_impl.p_decode_image_config[0];
22376 if ((self->private_impl.f_call_sequence != 0) || (self->private_impl.f_io_redirect_fourcc == 1)) {
22379 } else if (self->private_impl.f_io_redirect_fourcc != 0) {
22452 self->private_impl.f_padding = t_1;
22454 if (self->private_impl.f_padding < 14) {
22458 self->private_impl.f_padding -= 14;
22459 self->private_impl.f_io_redirect_pos = wuffs_base__u64__sat_add(((uint64_t)(self->private_impl.f_padding)), wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src))));
22487 self->private_impl.f_bitmap_info_len = t_2;
22489 if (self->private_impl.f_padding < self->private_impl.f_bitmap_info_len) {
22493 self->private_impl.f_padding -= self->private_impl.f_bitmap_info_len;
22494 if (self->private_impl.f_bitmap_info_len == 12) {
22522 self->private_impl.f_width = t_3;
22551 self->private_impl.f_height = t_4;
22613 self->private_impl.f_bits_per_pixel = t_6;
22615 } else if (self->private_impl.f_bitmap_info_len == 16) {
22649 self->private_impl.f_width = v_width;
22683 self->private_impl.f_height = v_height;
22744 self->private_impl.f_bits_per_pixel = t_10;
22780 self->private_impl.f_width = v_width;
22814 self->private_impl.f_height = (((uint32_t)(0 - v_height)) & 2147483647);
22815 self->private_impl.f_top_down = true;
22817 self->private_impl.f_height = v_height;
22879 self->private_impl.f_bits_per_pixel = t_14;
22908 self->private_impl.f_compression = t_15;
22910 if (self->private_impl.f_bits_per_pixel == 0) {
22911 if (self->private_impl.f_compression == 4) {
22912 self->private_impl.f_io_redirect_fourcc = 1246774599;
22915 } else if (self->private_impl.f_compression == 5) {
22916 self->private_impl.f_io_redirect_fourcc = 1347307296;
22932 if (self->private_impl.f_bitmap_info_len == 40) {
22933 if (self->private_impl.f_bits_per_pixel >= 16) {
22934 if (self->private_impl.f_padding >= 16) {
22935 self->private_impl.f_bitmap_info_len = 56;
22936 self->private_impl.f_padding -= 16;
22937 } else if (self->private_impl.f_padding >= 12) {
22938 self->private_impl.f_bitmap_info_len = 52;
22939 self->private_impl.f_padding -= 12;
22942 } else if ((self->private_impl.f_bitmap_info_len != 52) &&
22943 (self->private_impl.f_bitmap_info_len != 56) &&
22944 (self->private_impl.f_bitmap_info_len != 64) &&
22945 (self->private_impl.f_bitmap_info_len != 108) &&
22946 (self->private_impl.f_bitmap_info_len != 124)) {
22950 if (self->private_impl.f_compression == 6) {
22951 self->private_impl.f_compression = 3;
22953 if (self->private_impl.f_compression == 3) {
22954 if (self->private_impl.f_bitmap_info_len >= 52) {
22982 self->private_impl.f_channel_masks[2] = t_16;
23011 self->private_impl.f_channel_masks[1] = t_17;
23040 self->private_impl.f_channel_masks[0] = t_18;
23042 if (self->private_impl.f_bitmap_info_len >= 56) {
23070 self->private_impl.f_channel_masks[3] = t_19;
23072 self->private_data.s_decode_image_config[0].scratch = ((uint32_t)(self->private_impl.f_bitmap_info_len - 56));
23082 if ((self->private_impl.f_channel_masks[0] == 255) && (self->private_impl.f_channel_masks[1] == 65280) && (self->private_impl.f_channel_masks[2] == 16711680)) {
23083 if (self->private_impl.f_bits_per_pixel == 24) {
23084 self->private_impl.f_compression = 0;
23085 } else if (self->private_impl.f_bits_per_pixel == 32) {
23086 if ((self->private_impl.f_channel_masks[3] == 0) || (self->private_impl.f_channel_masks[3] == 4278190080)) {
23087 self->private_impl.f_compression = 0;
23097 } else if (self->private_impl.f_bitmap_info_len >= 40) {
23098 self->private_data.s_decode_image_config[0].scratch = (self->private_impl.f_bitmap_info_len - 40);
23112 if (self->private_impl.f_compression != 3) {
23113 if (self->private_impl.f_bits_per_pixel < 16) {
23127 if (self->private_impl.f_compression == 0) {
23128 if ((self->private_impl.f_bits_per_pixel == 1) || (self->private_impl.f_bits_per_pixel == 2) || (self->private_impl.f_bits_per_pixel == 4)) {
23129 self->private_impl.f_src_pixfmt = 2198077448;
23130 self->private_impl.f_compression = 256;
23131 } else if (self->private_impl.f_bits_per_pixel == 8) {
23132 self->private_impl.f_src_pixfmt = 2198077448;
23133 } else if (self->private_impl.f_bits_per_pixel == 16) {
23134 self->private_impl.f_compression = 3;
23135 self->private_impl.f_channel_masks[0] = 31;
23136 self->private_impl.f_channel_masks[1] = 992;
23137 self->private_impl.f_channel_masks[2] = 31744;
23138 self->private_impl.f_channel_masks[3] = 0;
23144 self->private_impl.f_src_pixfmt = 2164308923;
23145 } else if (self->private_impl.f_bits_per_pixel == 24) {
23146 self->private_impl.f_src_pixfmt = 2147485832;
23147 } else if (self->private_impl.f_bits_per_pixel == 32) {
23148 if (self->private_impl.f_channel_masks[3] == 0) {
23149 self->private_impl.f_src_pixfmt = 2415954056;
23151 self->private_impl.f_src_pixfmt = 2164295816;
23157 } else if (self->private_impl.f_compression == 1) {
23158 if (self->private_impl.f_bits_per_pixel == 8) {
23159 self->private_impl.f_src_pixfmt = 2198077448;
23164 } else if (self->private_impl.f_compression == 2) {
23165 if (self->private_impl.f_bits_per_pixel == 4) {
23166 self->private_impl.f_src_pixfmt = 2198077448;
23171 } else if (self->private_impl.f_compression == 3) {
23172 if ((self->private_impl.f_bits_per_pixel == 16) || (self->private_impl.f_bits_per_pixel == 32)) {
23173 self->private_impl.f_src_pixfmt = 2164308923;
23182 if (((self->private_impl.f_bitmap_info_len < 40) || (self->private_impl.f_bitmap_info_len == 64)) &&
23183 (self->private_impl.f_bits_per_pixel != 1) &&
23184 (self->private_impl.f_bits_per_pixel != 4) &&
23185 (self->private_impl.f_bits_per_pixel != 8) &&
23186 (self->private_impl.f_bits_per_pixel != 24)) {
23190 if (self->private_impl.f_bits_per_pixel == 1) {
23191 v_byte_width = ((self->private_impl.f_width >> 3) + (((self->private_impl.f_width & 7) + 7) >> 3));
23192 self->private_impl.f_pad_per_row = ((4 - (v_byte_width & 3)) & 3);
23193 } else if (self->private_impl.f_bits_per_pixel == 2) {
23194 v_byte_width = ((self->private_impl.f_width >> 2) + (((self->private_impl.f_width & 3) + 3) >> 2));
23195 self->private_impl.f_pad_per_row = ((4 - (v_byte_width & 3)) & 3);
23196 } else if (self->private_impl.f_bits_per_pixel == 4) {
23197 v_byte_width = ((self->private_impl.f_width >> 1) + (self->private_impl.f_width & 1));
23198 self->private_impl.f_pad_per_row = ((4 - (v_byte_width & 3)) & 3);
23199 } else if (self->private_impl.f_bits_per_pixel == 8) {
23200 self->private_impl.f_pad_per_row = ((4 - (self->private_impl.f_width & 3)) & 3);
23201 } else if (self->private_impl.f_bits_per_pixel == 16) {
23202 self->private_impl.f_pad_per_row = ((self->private_impl.f_width & 1) * 2);
23203 } else if (self->private_impl.f_bits_per_pixel == 24) {
23204 self->private_impl.f_pad_per_row = (self->private_impl.f_width & 3);
23205 } else if (self->private_impl.f_bits_per_pixel == 32) {
23206 self->private_impl.f_pad_per_row = 0;
23208 self->private_impl.f_frame_config_io_position = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src)));
23211 if ((self->private_impl.f_channel_num_bits[0] > 8) ||
23212 (self->private_impl.f_channel_num_bits[1] > 8) ||
23213 (self->private_impl.f_channel_num_bits[2] > 8) ||
23214 (self->private_impl.f_channel_num_bits[3] > 8)) {
23221 self->private_impl.f_width,
23222 self->private_impl.f_height,
23223 self->private_impl.f_frame_config_io_position,
23224 (self->private_impl.f_channel_masks[3] == 0));
23226 self->private_impl.f_call_sequence = 3;
23229 self->private_impl.p_decode_image_config[0] = 0;
23235 self->private_impl.p_decode_image_config[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
23236 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0;
23245 self->private_impl.magic = WUFFS_BASE__DISABLED;
23260 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
23262 (self->private_impl.magic == WUFFS_BASE__DISABLED)
23267 self->private_impl.magic = WUFFS_BASE__DISABLED;
23270 if ((self->private_impl.active_coroutine != 0) &&
23271 (self->private_impl.active_coroutine != 2)) {
23272 self->private_impl.magic = WUFFS_BASE__DISABLED;
23275 self->private_impl.active_coroutine = 0;
23289 uint32_t coro_susp_point = self->private_impl.p_decode_frame_config[0];
23293 if (self->private_impl.f_call_sequence < 3) {
23305 } else if (self->private_impl.f_call_sequence == 3) {
23306 if (self->private_impl.f_frame_config_io_position != wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src)))) {
23310 } else if (self->private_impl.f_call_sequence == 4) {
23311 self->private_impl.f_call_sequence = 255;
23324 self->private_impl.f_width,
23325 self->private_impl.f_height),
23328 self->private_impl.f_frame_config_io_position,
23334 self->private_impl.f_call_sequence = 4;
23337 self->private_impl.p_decode_frame_config[0] = 0;
23343 self->private_impl.p_decode_frame_config[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
23344 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 2 : 0;
23353 self->private_impl.magic = WUFFS_BASE__DISABLED;
23371 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
23373 (self->private_impl.magic == WUFFS_BASE__DISABLED)
23378 self->private_impl.magic = WUFFS_BASE__DISABLED;
23381 if ((self->private_impl.active_coroutine != 0) &&
23382 (self->private_impl.active_coroutine != 3)) {
23383 self->private_impl.magic = WUFFS_BASE__DISABLED;
23386 self->private_impl.active_coroutine = 0;
23402 uint32_t coro_susp_point = self->private_impl.p_decode_frame[0];
23409 if (self->private_impl.f_call_sequence < 4) {
23421 } else if (self->private_impl.f_call_sequence == 4) {
23426 self->private_data.s_decode_frame[0].scratch = self->private_impl.f_padding;
23435 if ((self->private_impl.f_width > 0) && (self->private_impl.f_height > 0)) {
23436 self->private_impl.f_dst_x = 0;
23437 if (self->private_impl.f_top_down) {
23438 self->private_impl.f_dst_y = 0;
23439 self->private_impl.f_dst_y_inc = 1;
23441 self->private_impl.f_dst_y = ((uint32_t)(self->private_impl.f_height - 1));
23442 self->private_impl.f_dst_y_inc = 4294967295;
23444 v_status = wuffs_base__pixel_swizzler__prepare(&self->private_impl.f_swizzler,
23447 wuffs_base__utility__make_pixel_format(self->private_impl.f_src_pixfmt),
23461 if (self->private_impl.f_compression == 0) {
23469 } else if (self->private_impl.f_compression < 3) {
23477 } else if (self->private_impl.f_compression == 3) {
23510 self->private_data.s_decode_frame[0].scratch = self->private_impl.f_pending_pad;
23519 self->private_impl.f_pending_pad = 0;
23521 self->private_impl.f_call_sequence = 255;
23524 self->private_impl.p_decode_frame[0] = 0;
23530 self->private_impl.p_decode_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
23531 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 3 : 0;
23541 self->private_impl.magic = WUFFS_BASE__DISABLED;
23583 v_dst_bytes_per_row = (((uint64_t)(self->private_impl.f_width)) * v_dst_bytes_per_pixel);
23588 while (self->private_impl.f_pending_pad > 0) {
23593 self->private_impl.f_pending_pad -= 1;
23598 if (self->private_impl.f_dst_x == self->private_impl.f_width) {
23599 self->private_impl.f_dst_x = 0;
23600 self->private_impl.f_dst_y += self->private_impl.f_dst_y_inc;
23601 if (self->private_impl.f_dst_y >= self->private_impl.f_height) {
23602 if (self->private_impl.f_height > 0) {
23603 self->private_impl.f_pending_pad = self->private_impl.f_pad_per_row;
23606 } else if (self->private_impl.f_pad_per_row != 0) {
23607 self->private_impl.f_pending_pad = self->private_impl.f_pad_per_row;
23611 v_dst = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y);
23615 v_i = (((uint64_t)(self->private_impl.f_dst_x)) * v_dst_bytes_per_pixel);
23620 &self->private_impl.f_swizzler,
23629 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)((v_n & 4294967295))));
23690 v_dst_bytes_per_row = (((uint64_t)(self->private_impl.f_width)) * v_dst_bytes_per_pixel);
23693 v_rle_state = self->private_impl.f_rle_state;
23696 v_row = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y);
23702 v_i = (((uint64_t)(self->private_impl.f_dst_x)) * v_dst_bytes_per_pixel);
23721 self->private_impl.f_rle_length = ((uint32_t)(v_code));
23730 if (self->private_impl.f_bits_per_pixel == 8) {
23732 while (v_p0 < self->private_impl.f_rle_length) {
23740 while (v_p0 < self->private_impl.f_rle_length) {
23746 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, v_dst, v_dst_palette, wuffs_base__slice_u8__subslice_j(wuffs_base__make_slice_u8(self->private_data.f_scratch, 2048), self->private_impl.f_rle_length));
23747 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, self->private_impl.f_rle_length);
23757 if ((self->private_impl.f_dst_y >= self->private_impl.f_height) && (v_code == 0)) {
23761 wuffs_base__pixel_swizzler__swizzle_interleaved_transparent_black(&self->private_impl.f_swizzler, v_dst, v_dst_palette, 18446744073709551615u);
23762 self->private_impl.f_dst_x = 0;
23763 self->private_impl.f_dst_y += self->private_impl.f_dst_y_inc;
23773 self->private_impl.f_rle_length = ((uint32_t)(v_code));
23774 self->private_impl.f_rle_padded = ((self->private_impl.f_bits_per_pixel == 8) && ((v_code & 1) != 0));
23778 if (self->private_impl.f_bits_per_pixel == 8) {
23780 &self->private_impl.f_swizzler,
23781 self->private_impl.f_rle_length,
23786 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)((v_n & 4294967295))));
23787 wuffs_base__u32__sat_sub_indirect(&self->private_impl.f_rle_length, ((uint32_t)((v_n & 4294967295))));
23789 v_chunk_count = ((self->private_impl.f_rle_length + 3) / 4);
23801 v_p0 = wuffs_base__u32__min(v_p0, self->private_impl.f_rle_length);
23802 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, v_dst, v_dst_palette, wuffs_base__slice_u8__subslice_j(wuffs_base__make_slice_u8(self->private_data.f_scratch, 2048), v_p0));
23803 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, v_p0);
23804 wuffs_base__u32__sat_sub_indirect(&self->private_impl.f_rle_length, v_p0);
23806 if (self->private_impl.f_rle_length > 0) {
23809 if (self->private_impl.f_rle_padded) {
23814 self->private_impl.f_rle_padded = false;
23822 self->private_impl.f_rle_delta_x = wuffs_base__peek_u8be__no_bounds_check(iop_a_src);
23832 if (self->private_impl.f_rle_delta_x > 0) {
23833 wuffs_base__pixel_swizzler__swizzle_interleaved_transparent_black(&self->private_impl.f_swizzler, v_dst, v_dst_palette, ((uint64_t)(self->private_impl.f_rle_delta_x)));
23834 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)(self->private_impl.f_rle_delta_x)));
23835 self->private_impl.f_rle_delta_x = 0;
23836 if (self->private_impl.f_dst_x > self->private_impl.f_width) {
23851 self->private_impl.f_dst_y += self->private_impl.f_dst_y_inc;
23852 if (self->private_impl.f_dst_y >= self->private_impl.f_height) {
23856 v_row = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y);
23861 wuffs_base__pixel_swizzler__swizzle_interleaved_transparent_black(&self->private_impl.f_swizzler, v_row, v_dst_palette, ((uint64_t)(self->private_impl.f_dst_x)));
23864 wuffs_base__pixel_swizzler__swizzle_interleaved_transparent_black(&self->private_impl.f_swizzler, v_row, v_dst_palette, 18446744073709551615u);
23881 self->private_impl.f_rle_state = v_rle_state;
23887 while (self->private_impl.f_dst_y < self->private_impl.f_height) {
23888 v_row = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y);
23892 wuffs_base__pixel_swizzler__swizzle_interleaved_transparent_black(&self->private_impl.f_swizzler, v_row, v_dst_palette, 18446744073709551615u);
23893 self->private_impl.f_dst_y += self->private_impl.f_dst_y_inc;
23952 v_dst_bytes_per_row = (((uint64_t)(self->private_impl.f_width)) * v_dst_bytes_per_pixel);
23957 while (self->private_impl.f_pending_pad > 0) {
23962 self->private_impl.f_pending_pad -= 1;
23967 if (self->private_impl.f_dst_x == self->private_impl.f_width) {
23968 self->private_impl.f_dst_x = 0;
23969 self->private_impl.f_dst_y += self->private_impl.f_dst_y_inc;
23970 if (self->private_impl.f_dst_y >= self->private_impl.f_height) {
23971 if (self->private_impl.f_height > 0) {
23972 self->private_impl.f_pending_pad = self->private_impl.f_pad_per_row;
23975 } else if (self->private_impl.f_pad_per_row != 0) {
23976 self->private_impl.f_pending_pad = self->private_impl.f_pad_per_row;
23980 v_p1_temp = ((uint32_t)(self->private_impl.f_width - self->private_impl.f_dst_x));
23984 if (self->private_impl.f_bits_per_pixel == 16) {
23999 if (self->private_impl.f_channel_num_bits[v_channel] == 0) {
24003 v_c = ((v_c32 & self->private_impl.f_channel_masks[v_channel]) >> self->private_impl.f_channel_shifts[v_channel]);
24004 v_num_bits = ((uint32_t)(self->private_impl.f_channel_num_bits[v_channel]));
24018 v_dst = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y);
24022 v_i = (((uint64_t)(self->private_impl.f_dst_x)) * v_dst_bytes_per_pixel);
24026 v_n = wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_base__slice_u8__subslice_i(v_dst, v_i), v_dst_palette, wuffs_base__slice_u8__subslice_j(wuffs_base__make_slice_u8(self->private_data.f_scratch, 2048), (8 * v_p0)));
24031 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)((v_n & 4294967295))));
24088 v_dst_bytes_per_row = (((uint64_t)(self->private_impl.f_width)) * v_dst_bytes_per_pixel);
24093 if (self->private_impl.f_dst_x == self->private_impl.f_width) {
24094 self->private_impl.f_dst_x = 0;
24095 self->private_impl.f_dst_y += self->private_impl.f_dst_y_inc;
24096 if (self->private_impl.f_dst_y >= self->private_impl.f_height) {
24100 v_dst = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y);
24104 v_i = (((uint64_t)(self->private_impl.f_dst_x)) * v_dst_bytes_per_pixel);
24110 if (self->private_impl.f_bits_per_pixel == 1) {
24111 v_chunk_count = ((wuffs_base__u32__sat_sub(self->private_impl.f_width, self->private_impl.f_dst_x) + 31) / 32);
24151 } else if (self->private_impl.f_bits_per_pixel == 2) {
24152 v_chunk_count = ((wuffs_base__u32__sat_sub(self->private_impl.f_width, self->private_impl.f_dst_x) + 15) / 16);
24176 } else if (self->private_impl.f_bits_per_pixel == 4) {
24177 v_chunk_count = ((wuffs_base__u32__sat_sub(self->private_impl.f_width, self->private_impl.f_dst_x) + 7) / 8);
24194 v_p0 = wuffs_base__u32__min(v_p0, wuffs_base__u32__sat_sub(self->private_impl.f_width, self->private_impl.f_dst_x));
24195 v_n = wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, v_dst, v_dst_palette, wuffs_base__slice_u8__subslice_j(wuffs_base__make_slice_u8(self->private_data.f_scratch, 2048), v_p0));
24200 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)((v_n & 4294967295))));
24224 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
24225 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
24232 self->private_impl.f_width,
24233 self->private_impl.f_height);
24244 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
24245 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
24260 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
24261 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
24265 if (self->private_impl.f_call_sequence > 3) {
24279 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
24280 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
24284 if (self->private_impl.f_call_sequence > 4) {
24300 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
24302 (self->private_impl.magic == WUFFS_BASE__DISABLED)
24307 if (self->private_impl.f_call_sequence < 3) {
24313 self->private_impl.f_call_sequence = 3;
24314 self->private_impl.f_frame_config_io_position = a_io_position;
24339 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
24341 (self->private_impl.magic == WUFFS_BASE__DISABLED)
24346 self->private_impl.magic = WUFFS_BASE__DISABLED;
24349 if ((self->private_impl.active_coroutine != 0) &&
24350 (self->private_impl.active_coroutine != 4)) {
24351 self->private_impl.magic = WUFFS_BASE__DISABLED;
24354 self->private_impl.active_coroutine = 0;
24357 if (self->private_impl.f_io_redirect_fourcc <= 1) {
24364 self->private_impl.f_io_redirect_fourcc,
24366 self->private_impl.f_io_redirect_pos,
24369 self->private_impl.f_io_redirect_fourcc = 1;
24376 self->private_impl.magic = WUFFS_BASE__DISABLED;
24389 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
24390 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
24419 uint32_t coro_susp_point = self->private_impl.p_read_palette[0];
24426 if (self->private_impl.f_bitmap_info_len == 12) {
24427 while ((v_i < 256) && (self->private_impl.f_padding >= 3)) {
24428 self->private_impl.f_padding -= 3;
24466 while ((v_i < 256) && (self->private_impl.f_padding >= 4)) {
24467 self->private_impl.f_padding -= 4;
24515 self->private_impl.p_read_palette[0] = 0;
24521 self->private_impl.p_read_palette[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
24545 v_mask = self->private_impl.f_channel_masks[v_i];
24552 self->private_impl.f_channel_shifts[v_i] = ((uint8_t)((v_n & 31)));
24562 self->private_impl.f_channel_num_bits[v_i] = ((uint8_t)(v_n));
24647 if (self->private_impl.magic != 0) {
24658 memset(&(self->private_impl), 0, sizeof(self->private_impl));
24662 self->private_impl.magic = WUFFS_BASE__MAGIC;
24663 self->private_impl.vtable_for__wuffs_base__token_decoder.vtable_name =
24665 self->private_impl.vtable_for__wuffs_base__token_decoder.function_pointers =
24710 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
24711 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
24729 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
24731 (self->private_impl.magic == WUFFS_BASE__DISABLED)
24736 self->private_impl.magic = WUFFS_BASE__DISABLED;
24739 if ((self->private_impl.active_coroutine != 0) &&
24740 (self->private_impl.active_coroutine != 1)) {
24741 self->private_impl.magic = WUFFS_BASE__DISABLED;
24744 self->private_impl.active_coroutine = 0;
24787 uint32_t coro_susp_point = self->private_impl.p_decode_tokens[0];
24798 if (self->private_impl.f_end_of_data) {
25289 self->private_impl.f_end_of_data = true;
25292 self->private_impl.p_decode_tokens[0] = 0;
25298 self->private_impl.p_decode_tokens[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
25299 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0;
25316 self->private_impl.magic = WUFFS_BASE__DISABLED;
25959 if (self->private_impl.magic != 0) {
25970 memset(&(self->private_impl), 0, sizeof(self->private_impl));
25974 self->private_impl.choosy_up = &wuffs_crc32__ieee_hasher__up__choosy_default;
25976 self->private_impl.magic = WUFFS_BASE__MAGIC;
25977 self->private_impl.vtable_for__wuffs_base__hasher_u32.vtable_name =
25979 self->private_impl.vtable_for__wuffs_base__hasher_u32.function_pointers =
26025 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
26029 if (self->private_impl.f_state == 0) {
26030 self->private_impl.choosy_up = (
26040 self->private_impl.choosy_up);
26043 return self->private_impl.f_state;
26052 return (*self->private_impl.choosy_up)(self, a_x);
26062 v_s = (4294967295 ^ self->private_impl.f_state);
26145 self->private_impl.f_state = (4294967295 ^ v_s);
26160 v_s = (4294967295 ^ self->private_impl.f_state);
26218 self->private_impl.f_state = (4294967295 ^ v_s);
26246 v_s = (4294967295 ^ self->private_impl.f_state);
26263 self->private_impl.f_state = (4294967295 ^ v_s);
26337 self->private_impl.f_state = (4294967295 ^ v_s);
26365 v_s = (4294967295 ^ self->private_impl.f_state);
26382 self->private_impl.f_state = (4294967295 ^ v_s);
26456 self->private_impl.f_state = (4294967295 ^ v_s);
26656 if (self->private_impl.magic != 0) {
26667 memset(&(self->private_impl), 0, sizeof(self->private_impl));
26671 self->private_impl.choosy_decode_huffman_fast64 = &wuffs_deflate__decoder__decode_huffman_fast64__choosy_default;
26673 self->private_impl.magic = WUFFS_BASE__MAGIC;
26674 self->private_impl.vtable_for__wuffs_base__io_transformer.vtable_name =
26676 self->private_impl.vtable_for__wuffs_base__io_transformer.function_pointers =
26712 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
26724 self->private_impl.f_history_index = 32768;
26726 v_n_copied = wuffs_base__slice_u8__copy_from_slice(wuffs_base__slice_u8__subslice_i(wuffs_base__make_slice_u8(self->private_data.f_history, 32768), (self->private_impl.f_history_index & 32767)), v_s);
26730 self->private_impl.f_history_index = (((uint32_t)((v_n_copied & 32767))) + 32768);
26733 if (self->private_impl.f_history_index >= 32768) {
26736 self->private_impl.f_history_index = ((self->private_impl.f_history_index & 32767) + ((uint32_t)((v_n_copied & 32767))) + v_already_full);
26761 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
26762 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
26780 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
26782 (self->private_impl.magic == WUFFS_BASE__DISABLED)
26787 self->private_impl.magic = WUFFS_BASE__DISABLED;
26790 if ((self->private_impl.active_coroutine != 0) &&
26791 (self->private_impl.active_coroutine != 1)) {
26792 self->private_impl.magic = WUFFS_BASE__DISABLED;
26795 self->private_impl.active_coroutine = 0;
26815 uint32_t coro_susp_point = self->private_impl.p_transform_io[0];
26819 self->private_impl.choosy_decode_huffman_fast64 = (
26823 self->private_impl.choosy_decode_huffman_fast64);
26846 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_transformed_history_count, wuffs_base__io__count_since(v_mark, ((uint64_t)(iop_a_dst - io0_a_dst))));
26853 self->private_impl.p_transform_io[0] = 0;
26859 self->private_impl.p_transform_io[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
26860 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0;
26869 self->private_impl.magic = WUFFS_BASE__DISABLED;
26899 uint32_t coro_susp_point = self->private_impl.p_decode_blocks[0];
26908 while (self->private_impl.f_n_bits < 3) {
26918 self->private_impl.f_bits |= (v_b0 << (self->private_impl.f_n_bits & 3));
26919 self->private_impl.f_n_bits = ((self->private_impl.f_n_bits & 3) + 8);
26921 v_final = (self->private_impl.f_bits & 1);
26922 v_type = ((self->private_impl.f_bits >> 1) & 3);
26923 self->private_impl.f_bits >>= 3;
26924 self->private_impl.f_n_bits -= 3;
26966 self->private_impl.f_end_of_block = false;
26989 if (self->private_impl.f_end_of_block) {
27003 if (self->private_impl.f_end_of_block) {
27010 self->private_impl.p_decode_blocks[0] = 0;
27016 self->private_impl.p_decode_blocks[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
27064 uint32_t coro_susp_point = self->private_impl.p_decode_uncompressed[0];
27071 if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> (self->private_impl.f_n_bits & 7)) != 0)) {
27075 self->private_impl.f_n_bits = 0;
27076 self->private_impl.f_bits = 0;
27129 self->private_impl.p_decode_uncompressed[0] = 0;
27135 self->private_impl.p_decode_uncompressed[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
27234 uint32_t coro_susp_point = self->private_impl.p_init_dynamic_huffman[0];
27251 v_bits = self->private_impl.f_bits;
27252 v_n_bits = self->private_impl.f_n_bits;
27314 v_mask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[0]) - 1);
27424 self->private_impl.f_bits = v_bits;
27425 self->private_impl.f_n_bits = v_n_bits;
27429 self->private_impl.p_init_dynamic_huffman[0] = 0;
27435 self->private_impl.p_init_dynamic_huffman[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
27527 self->private_impl.f_n_huffs_bits[1] = 1;
27594 self->private_impl.f_n_huffs_bits[a_which] = v_max_cl;
27596 self->private_impl.f_n_huffs_bits[a_which] = 9;
27763 if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> (self->private_impl.f_n_bits & 7)) != 0)) {
27767 v_bits = ((uint64_t)(self->private_impl.f_bits));
27768 v_n_bits = self->private_impl.f_n_bits;
27769 v_lmask = ((((uint64_t)(1)) << self->private_impl.f_n_huffs_bits[0]) - 1);
27770 v_dmask = ((((uint64_t)(1)) << self->private_impl.f_n_huffs_bits[1]) - 1);
27771 if (self->private_impl.f_transformed_history_count < (a_dst ? a_dst->meta.pos : 0)) {
27775 v_hdist_adjustment = ((uint32_t)(((self->private_impl.f_transformed_history_count - (a_dst ? a_dst->meta.pos : 0)) & 4294967295)));
27790 self->private_impl.f_end_of_block = true;
27804 self->private_impl.f_end_of_block = true;
27867 if (self->private_impl.f_history_index < v_hdist) {
27872 &iop_a_dst, io2_a_dst,v_hlen, wuffs_base__slice_u8__subslice_i(wuffs_base__make_slice_u8(self->private_data.f_history, 33025), ((self->private_impl.f_history_index - v_hdist) & 32767)));
27909 self->private_impl.f_bits = ((uint32_t)((v_bits & ((((uint64_t)(1)) << v_n_bits) - 1))));
27910 self->private_impl.f_n_bits = v_n_bits;
27911 if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> self->private_impl.f_n_bits) != 0)) {
27976 if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> (self->private_impl.f_n_bits & 7)) != 0)) {
27980 v_bits = self->private_impl.f_bits;
27981 v_n_bits = self->private_impl.f_n_bits;
27982 v_lmask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[0]) - 1);
27983 v_dmask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[1]) - 1);
27984 if (self->private_impl.f_transformed_history_count < (a_dst ? a_dst->meta.pos : 0)) {
27988 v_hdist_adjustment = ((uint32_t)(((self->private_impl.f_transformed_history_count - (a_dst ? a_dst->meta.pos : 0)) & 4294967295)));
28009 self->private_impl.f_end_of_block = true;
28032 self->private_impl.f_end_of_block = true;
28132 if (self->private_impl.f_history_index < v_hdist) {
28137 &iop_a_dst, io2_a_dst,v_hlen, wuffs_base__slice_u8__subslice_i(wuffs_base__make_slice_u8(self->private_data.f_history, 33025), ((self->private_impl.f_history_index - v_hdist) & 32767)));
28167 self->private_impl.f_bits = (v_bits & ((((uint32_t)(1)) << v_n_bits) - 1));
28168 self->private_impl.f_n_bits = v_n_bits;
28169 if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> self->private_impl.f_n_bits) != 0)) {
28192 return (*self->private_impl.choosy_decode_huffman_fast64)(self, a_dst, a_src);
28240 if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> (self->private_impl.f_n_bits & 7)) != 0)) {
28244 v_bits = ((uint64_t)(self->private_impl.f_bits));
28245 v_n_bits = self->private_impl.f_n_bits;
28246 v_lmask = ((((uint64_t)(1)) << self->private_impl.f_n_huffs_bits[0]) - 1);
28247 v_dmask = ((((uint64_t)(1)) << self->private_impl.f_n_huffs_bits[1]) - 1);
28248 if (self->private_impl.f_transformed_history_count < (a_dst ? a_dst->meta.pos : 0)) {
28252 v_hdist_adjustment = ((uint32_t)(((self->private_impl.f_transformed_history_count - (a_dst ? a_dst->meta.pos : 0)) & 4294967295)));
28267 self->private_impl.f_end_of_block = true;
28281 self->private_impl.f_end_of_block = true;
28344 if (self->private_impl.f_history_index < v_hdist) {
28349 &iop_a_dst, io2_a_dst,v_hlen, wuffs_base__slice_u8__subslice_i(wuffs_base__make_slice_u8(self->private_data.f_history, 33025), ((self->private_impl.f_history_index - v_hdist) & 32767)));
28386 self->private_impl.f_bits = ((uint32_t)((v_bits & ((((uint64_t)(1)) << v_n_bits) - 1))));
28387 self->private_impl.f_n_bits = v_n_bits;
28388 if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> self->private_impl.f_n_bits) != 0)) {
28457 uint32_t coro_susp_point = self->private_impl.p_decode_huffman_slow[0];
28474 if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> (self->private_impl.f_n_bits & 7)) != 0)) {
28478 v_bits = self->private_impl.f_bits;
28479 v_n_bits = self->private_impl.f_n_bits;
28480 v_lmask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[0]) - 1);
28481 v_dmask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[1]) - 1);
28483 while ( ! (self->private_impl.p_decode_huffman_slow[0] != 0)) {
28516 self->private_impl.f_end_of_block = true;
28553 self->private_impl.f_end_of_block = true;
28675 v_hdist += ((uint32_t)((((uint64_t)(self->private_impl.f_transformed_history_count - (a_dst ? a_dst->meta.pos : 0))) & 4294967295)));
28676 if (self->private_impl.f_history_index < v_hdist) {
28681 &iop_a_dst, io2_a_dst,v_hlen, wuffs_base__slice_u8__subslice_i(wuffs_base__make_slice_u8(self->private_data.f_history, 33025), ((self->private_impl.f_history_index - v_hdist) & 32767)));
28704 self->private_impl.f_bits = v_bits;
28705 self->private_impl.f_n_bits = v_n_bits;
28706 if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> (self->private_impl.f_n_bits & 7)) != 0)) {
28712 self->private_impl.p_decode_huffman_slow[0] = 0;
28718 self->private_impl.p_decode_huffman_slow[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
28808 if (self->private_impl.magic != 0) {
28819 memset(&(self->private_impl), 0, sizeof(self->private_impl));
28823 self->private_impl.magic = WUFFS_BASE__MAGIC;
28824 self->private_impl.vtable_for__wuffs_base__io_transformer.vtable_name =
28826 self->private_impl.vtable_for__wuffs_base__io_transformer.function_pointers =
28872 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
28876 self->private_impl.magic = WUFFS_BASE__DISABLED;
28880 self->private_impl.f_set_literal_width_arg = (a_lw + 1);
28892 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
28893 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
28911 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
28913 (self->private_impl.magic == WUFFS_BASE__DISABLED)
28918 self->private_impl.magic = WUFFS_BASE__DISABLED;
28921 if ((self->private_impl.active_coroutine != 0) &&
28922 (self->private_impl.active_coroutine != 1)) {
28923 self->private_impl.magic = WUFFS_BASE__DISABLED;
28926 self->private_impl.active_coroutine = 0;
28931 uint32_t coro_susp_point = self->private_impl.p_transform_io[0];
28935 self->private_impl.f_literal_width = 8;
28936 if (self->private_impl.f_set_literal_width_arg > 0) {
28937 self->private_impl.f_literal_width = (self->private_impl.f_set_literal_width_arg - 1);
28939 self->private_impl.f_clear_code = (((uint32_t)(1)) << self->private_impl.f_literal_width);
28940 self->private_impl.f_end_code = (self->private_impl.f_clear_code + 1);
28941 self->private_impl.f_save_code = self->private_impl.f_end_code;
28942 self->private_impl.f_prev_code = self->private_impl.f_end_code;
28943 self->private_impl.f_width = (self->private_impl.f_literal_width + 1);
28944 self->private_impl.f_bits = 0;
28945 self->private_impl.f_n_bits = 0;
28946 self->private_impl.f_output_ri = 0;
28947 self->private_impl.f_output_wi = 0;
28949 while (v_i < self->private_impl.f_clear_code) {
28957 if (self->private_impl.f_output_wi > 0) {
28964 if (self->private_impl.f_read_from_return_value == 0) {
28966 } else if (self->private_impl.f_read_from_return_value == 1) {
28968 } else if (self->private_impl.f_read_from_return_value == 2) {
28971 } else if (self->private_impl.f_read_from_return_value == 3) {
28982 self->private_impl.p_transform_io[0] = 0;
28988 self->private_impl.p_transform_io[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
28989 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0;
28994 self->private_impl.magic = WUFFS_BASE__DISABLED;
29032 v_clear_code = self->private_impl.f_clear_code;
29033 v_end_code = self->private_impl.f_end_code;
29034 v_save_code = self->private_impl.f_save_code;
29035 v_prev_code = self->private_impl.f_prev_code;
29036 v_width = self->private_impl.f_width;
29037 v_bits = self->private_impl.f_bits;
29038 v_n_bits = self->private_impl.f_n_bits;
29039 v_output_wi = self->private_impl.f_output_wi;
29047 self->private_impl.f_read_from_return_value = 2;
29055 self->private_impl.f_read_from_return_value = 2;
29062 self->private_impl.f_read_from_return_value = 4;
29078 self->private_impl.f_prefixes[v_save_code] = self->private_impl.f_prefixes[v_prev_code];
29082 self->private_impl.f_prefixes[v_save_code] = ((uint16_t)(v_prev_code));
29093 self->private_impl.f_read_from_return_value = 0;
29098 v_width = (self->private_impl.f_literal_width + 1);
29114 v_c = ((uint32_t)(self->private_impl.f_prefixes[v_c]));
29126 self->private_impl.f_prefixes[v_save_code] = self->private_impl.f_prefixes[v_prev_code];
29130 self->private_impl.f_prefixes[v_save_code] = ((uint16_t)(v_prev_code));
29140 self->private_impl.f_read_from_return_value = 3;
29144 self->private_impl.f_read_from_return_value = 1;
29149 if (self->private_impl.f_read_from_return_value != 2) {
29155 self->private_impl.f_read_from_return_value = 4;
29161 self->private_impl.f_save_code = v_save_code;
29162 self->private_impl.f_prev_code = v_prev_code;
29163 self->private_impl.f_width = v_width;
29164 self->private_impl.f_bits = v_bits;
29165 self->private_impl.f_n_bits = v_n_bits;
29166 self->private_impl.f_output_wi = v_output_wi;
29199 uint32_t coro_susp_point = self->private_impl.p_write_to[0];
29203 while (self->private_impl.f_output_wi > 0) {
29204 if (self->private_impl.f_output_ri > self->private_impl.f_output_wi) {
29210 self->private_impl.f_output_ri,
29211 self->private_impl.f_output_wi);
29214 self->private_impl.f_output_ri = 0;
29215 self->private_impl.f_output_wi = 0;
29219 self->private_impl.f_output_ri = (((uint32_t)(self->private_impl.f_output_ri + ((uint32_t)((v_n & 4294967295))))) & 8191);
29225 self->private_impl.p_write_to[0] = 0;
29231 self->private_impl.p_write_to[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
29250 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
29256 if (self->private_impl.f_output_ri <= self->private_impl.f_output_wi) {
29259 self->private_impl.f_output_ri,
29260 self->private_impl.f_output_wi);
29262 self->private_impl.f_output_ri = 0;
29263 self->private_impl.f_output_wi = 0;
29461 if (self->private_impl.magic != 0) {
29472 memset(&(self->private_impl), 0, sizeof(self->private_impl));
29483 self->private_impl.magic = WUFFS_BASE__MAGIC;
29484 self->private_impl.vtable_for__wuffs_base__image_decoder.vtable_name =
29486 self->private_impl.vtable_for__wuffs_base__image_decoder.function_pointers =
29523 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
29527 if ((self->private_impl.f_call_sequence == 0) && (a_quirk >= 1041635328)) {
29530 self->private_impl.f_quirks[a_quirk] = a_enabled;
29546 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
29548 (self->private_impl.magic == WUFFS_BASE__DISABLED)
29553 self->private_impl.magic = WUFFS_BASE__DISABLED;
29556 if ((self->private_impl.active_coroutine != 0) &&
29557 (self->private_impl.active_coroutine != 1)) {
29558 self->private_impl.magic = WUFFS_BASE__DISABLED;
29561 self->private_impl.active_coroutine = 0;
29566 uint32_t coro_susp_point = self->private_impl.p_decode_image_config[0];
29570 if (self->private_impl.f_call_sequence == 0) {
29581 } else if (self->private_impl.f_call_sequence != 2) {
29590 v_ffio = ! self->private_impl.f_gc_has_transparent_index;
29591 if ( ! self->private_impl.f_quirks[2]) {
29593 (self->private_impl.f_frame_rect_x0 == 0) &&
29594 (self->private_impl.f_frame_rect_y0 == 0) &&
29595 (self->private_impl.f_frame_rect_x1 == self->private_impl.f_width) &&
29596 (self->private_impl.f_frame_rect_y1 == self->private_impl.f_height));
29598 self->private_impl.f_black_color_u32_argb_premul = 4278190080;
29600 if (self->private_impl.f_background_color_u32_argb_premul == 77) {
29601 self->private_impl.f_background_color_u32_argb_premul = self->private_impl.f_black_color_u32_argb_premul;
29608 self->private_impl.f_width,
29609 self->private_impl.f_height,
29610 self->private_impl.f_frame_config_io_position,
29613 self->private_impl.f_call_sequence = 3;
29617 self->private_impl.p_decode_image_config[0] = 0;
29623 self->private_impl.p_decode_image_config[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
29624 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0;
29629 self->private_impl.magic = WUFFS_BASE__DISABLED;
29644 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
29649 self->private_impl.f_report_metadata_iccp = a_report;
29651 self->private_impl.f_report_metadata_xmp = a_report;
29667 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
29669 (self->private_impl.magic == WUFFS_BASE__DISABLED)
29674 self->private_impl.magic = WUFFS_BASE__DISABLED;
29677 if ((self->private_impl.active_coroutine != 0) &&
29678 (self->private_impl.active_coroutine != 2)) {
29679 self->private_impl.magic = WUFFS_BASE__DISABLED;
29682 self->private_impl.active_coroutine = 0;
29698 uint32_t coro_susp_point = self->private_impl.p_tell_me_more[0];
29702 if (self->private_impl.f_call_sequence != 1) {
29706 if (self->private_impl.f_metadata_fourcc == 0) {
29713 if (wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src))) != self->private_impl.f_metadata_io_position) {
29718 self->private_impl.f_metadata_io_position,
29747 if (self->private_impl.f_metadata_fourcc == 1481461792) {
29752 self->private_impl.f_metadata_io_position = wuffs_base__u64__sat_add(wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src))), v_chunk_length);
29756 self->private_impl.f_metadata_fourcc,
29759 self->private_impl.f_metadata_io_position);
29768 self->private_impl.f_metadata_fourcc,
29770 self->private_impl.f_metadata_io_position,
29771 self->private_impl.f_metadata_io_position);
29773 self->private_impl.f_call_sequence = 2;
29774 self->private_impl.f_metadata_fourcc = 0;
29775 self->private_impl.f_metadata_io_position = 0;
29780 self->private_impl.p_tell_me_more[0] = 0;
29786 self->private_impl.p_tell_me_more[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
29787 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 2 : 0;
29796 self->private_impl.magic = WUFFS_BASE__DISABLED;
29809 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
29810 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
29814 if (self->private_impl.f_seen_num_animation_loops_value) {
29815 return self->private_impl.f_num_animation_loops_value;
29817 if (self->private_impl.f_num_decoded_frame_configs_value > 1) {
29831 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
29832 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
29836 return self->private_impl.f_num_decoded_frame_configs_value;
29847 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
29848 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
29852 return self->private_impl.f_num_decoded_frames_value;
29863 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
29864 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
29869 wuffs_base__u32__min(self->private_impl.f_frame_rect_x0, self->private_impl.f_width),
29870 wuffs_base__u32__min(self->private_impl.f_frame_rect_y0, self->private_impl.f_height),
29871 wuffs_base__u32__min(self->private_impl.f_frame_rect_x1, self->private_impl.f_width),
29872 wuffs_base__u32__min(self->private_impl.f_dirty_max_excl_y, self->private_impl.f_height));
29883 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
29884 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
29901 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
29903 (self->private_impl.magic == WUFFS_BASE__DISABLED)
29908 if (self->private_impl.f_call_sequence < 3) {
29911 self->private_impl.f_delayed_num_decoded_frames = false;
29912 self->private_impl.f_end_of_data = false;
29913 self->private_impl.f_restarted = true;
29914 self->private_impl.f_frame_config_io_position = a_io_position;
29915 self->private_impl.f_num_decoded_frame_configs_value = a_index;
29916 self->private_impl.f_num_decoded_frames_value = a_index;
29931 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
29933 (self->private_impl.magic == WUFFS_BASE__DISABLED)
29938 self->private_impl.magic = WUFFS_BASE__DISABLED;
29941 if ((self->private_impl.active_coroutine != 0) &&
29942 (self->private_impl.active_coroutine != 3)) {
29943 self->private_impl.magic = WUFFS_BASE__DISABLED;
29946 self->private_impl.active_coroutine = 0;
29963 uint32_t coro_susp_point = self->private_impl.p_decode_frame_config[0];
29970 self->private_impl.f_ignore_metadata = true;
29971 self->private_impl.f_dirty_max_excl_y = 0;
29972 if ( ! self->private_impl.f_end_of_data) {
29973 if (self->private_impl.f_call_sequence == 0) {
29985 } else if (self->private_impl.f_call_sequence != 3) {
29986 if (self->private_impl.f_call_sequence == 4) {
30012 if (self->private_impl.f_end_of_data) {
30016 v_background_color = self->private_impl.f_black_color_u32_argb_premul;
30017 if ( ! self->private_impl.f_gc_has_transparent_index) {
30018 v_background_color = self->private_impl.f_background_color_u32_argb_premul;
30019 if (self->private_impl.f_quirks[1] && (self->private_impl.f_num_decoded_frame_configs_value == 0)) {
30026 v_background_color = self->private_impl.f_black_color_u32_argb_premul;
30034 wuffs_base__u32__min(self->private_impl.f_frame_rect_x0, self->private_impl.f_width),
30035 wuffs_base__u32__min(self->private_impl.f_frame_rect_y0, self->private_impl.f_height),
30036 wuffs_base__u32__min(self->private_impl.f_frame_rect_x1, self->private_impl.f_width),
30037 wuffs_base__u32__min(self->private_impl.f_frame_rect_y1, self->private_impl.f_height)),
30038 ((wuffs_base__flicks)(self->private_impl.f_gc_duration)),
30039 self->private_impl.f_num_decoded_frame_configs_value,
30040 self->private_impl.f_frame_config_io_position,
30041 self->private_impl.f_gc_disposal,
30042 ! self->private_impl.f_gc_has_transparent_index,
30046 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_num_decoded_frame_configs_value, 1);
30047 self->private_impl.f_call_sequence = 4;
30050 self->private_impl.p_decode_frame_config[0] = 0;
30056 self->private_impl.p_decode_frame_config[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
30057 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 3 : 0;
30067 self->private_impl.magic = WUFFS_BASE__DISABLED;
30094 uint32_t coro_susp_point = self->private_impl.p_skip_frame[0];
30142 if (self->private_impl.f_quirks[0]) {
30143 self->private_impl.f_delayed_num_decoded_frames = true;
30145 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_num_decoded_frames_value, 1);
30151 self->private_impl.p_skip_frame[0] = 0;
30157 self->private_impl.p_skip_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
30181 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
30183 (self->private_impl.magic == WUFFS_BASE__DISABLED)
30188 self->private_impl.magic = WUFFS_BASE__DISABLED;
30191 if ((self->private_impl.active_coroutine != 0) &&
30192 (self->private_impl.active_coroutine != 4)) {
30193 self->private_impl.magic = WUFFS_BASE__DISABLED;
30196 self->private_impl.active_coroutine = 0;
30199 uint32_t coro_susp_point = self->private_impl.p_decode_frame[0];
30203 self->private_impl.f_ignore_metadata = true;
30204 if (self->private_impl.f_call_sequence != 4) {
30211 if (self->private_impl.f_quirks[5] && ((self->private_impl.f_frame_rect_x0 == self->private_impl.f_frame_rect_x1) || (self->private_impl.f_frame_rect_y0 == self->private_impl.f_frame_rect_y1))) {
30225 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_num_decoded_frames_value, 1);
30230 self->private_impl.p_decode_frame[0] = 0;
30236 self->private_impl.p_decode_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
30237 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 4 : 0;
30242 self->private_impl.magic = WUFFS_BASE__DISABLED;
30252 self->private_impl.f_call_sequence = 5;
30253 self->private_impl.f_gc_has_transparent_index = false;
30254 self->private_impl.f_gc_transparent_index = 0;
30255 self->private_impl.f_gc_disposal = 0;
30256 self->private_impl.f_gc_duration = 0;
30281 uint32_t coro_susp_point = self->private_impl.p_decode_up_to_id_part1[0];
30285 if ( ! self->private_impl.f_restarted) {
30286 if (self->private_impl.f_call_sequence != 2) {
30287 self->private_impl.f_frame_config_io_position = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src)));
30289 } else if (self->private_impl.f_frame_config_io_position != wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src)))) {
30293 self->private_impl.f_restarted = false;
30318 if (self->private_impl.f_delayed_num_decoded_frames) {
30319 self->private_impl.f_delayed_num_decoded_frames = false;
30320 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_num_decoded_frames_value, 1);
30335 if (self->private_impl.f_delayed_num_decoded_frames) {
30336 self->private_impl.f_delayed_num_decoded_frames = false;
30337 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_num_decoded_frames_value, 1);
30339 self->private_impl.f_end_of_data = true;
30347 self->private_impl.p_decode_up_to_id_part1[0] = 0;
30353 self->private_impl.p_decode_up_to_id_part1[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
30386 uint32_t coro_susp_point = self->private_impl.p_decode_header[0];
30418 self->private_impl.p_decode_header[0] = 0;
30424 self->private_impl.p_decode_header[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
30463 uint32_t coro_susp_point = self->private_impl.p_decode_lsd[0];
30500 self->private_impl.f_width = t_0;
30529 self->private_impl.f_height = t_1;
30556 self->private_impl.f_has_global_palette = ((v_flags & 128) != 0);
30557 if (self->private_impl.f_has_global_palette) {
30596 if (self->private_impl.f_quirks[2]) {
30599 self->private_impl.f_background_color_u32_argb_premul = ((((uint32_t)(self->private_data.f_palettes[0][(v_j + 0)])) << 0) |
30604 self->private_impl.f_background_color_u32_argb_premul = 77;
30618 self->private_impl.p_decode_lsd[0] = 0;
30624 self->private_impl.p_decode_lsd[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
30660 uint32_t coro_susp_point = self->private_impl.p_decode_extension[0];
30715 self->private_impl.p_decode_extension[0] = 0;
30721 self->private_impl.p_decode_extension[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
30753 uint32_t coro_susp_point = self->private_impl.p_skip_blocks[0];
30783 self->private_impl.p_skip_blocks[0] = 0;
30789 self->private_impl.p_skip_blocks[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
30826 uint32_t coro_susp_point = self->private_impl.p_decode_ae[0];
30838 if (self->private_impl.f_metadata_fourcc != 0) {
30965 self->private_impl.f_num_animation_loops_value = t_4;
30967 self->private_impl.f_seen_num_animation_loops_value = true;
30968 if ((0 < self->private_impl.f_num_animation_loops_value) && (self->private_impl.f_num_animation_loops_value <= 65535)) {
30969 self->private_impl.f_num_animation_loops_value += 1;
30971 } else if (self->private_impl.f_ignore_metadata) {
30972 } else if (v_is_iccp && self->private_impl.f_report_metadata_iccp) {
30973 self->private_impl.f_metadata_fourcc = 1229144912;
30974 self->private_impl.f_metadata_io_position = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src)));
30975 self->private_impl.f_call_sequence = 1;
30978 } else if (v_is_xmp && self->private_impl.f_report_metadata_xmp) {
30979 self->private_impl.f_metadata_fourcc = 1481461792;
30980 self->private_impl.f_metadata_io_position = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src)));
30981 self->private_impl.f_call_sequence = 1;
31001 self->private_impl.p_decode_ae[0] = 0;
31007 self->private_impl.p_decode_ae[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
31046 uint32_t coro_susp_point = self->private_impl.p_decode_gc[0];
31072 self->private_impl.f_gc_has_transparent_index = ((v_flags & 1) != 0);
31075 self->private_impl.f_gc_disposal = 1;
31077 self->private_impl.f_gc_disposal = 2;
31079 self->private_impl.f_gc_disposal = 0;
31110 self->private_impl.f_gc_duration = (((uint64_t)(v_gc_duration_centiseconds)) * 7056000);
31118 self->private_impl.f_gc_transparent_index = t_3;
31136 self->private_impl.p_decode_gc[0] = 0;
31142 self->private_impl.p_decode_gc[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
31172 uint32_t coro_susp_point = self->private_impl.p_decode_id_part0[0];
31203 self->private_impl.f_frame_rect_x0 = t_0;
31232 self->private_impl.f_frame_rect_y0 = t_1;
31261 self->private_impl.f_frame_rect_x1 = t_2;
31263 self->private_impl.f_frame_rect_x1 += self->private_impl.f_frame_rect_x0;
31291 self->private_impl.f_frame_rect_y1 = t_3;
31293 self->private_impl.f_frame_rect_y1 += self->private_impl.f_frame_rect_y0;
31294 self->private_impl.f_dst_x = self->private_impl.f_frame_rect_x0;
31295 self->private_impl.f_dst_y = self->private_impl.f_frame_rect_y0;
31296 if ((self->private_impl.f_call_sequence == 0) && ! self->private_impl.f_quirks[4]) {
31297 self->private_impl.f_width = wuffs_base__u32__max(self->private_impl.f_width, self->private_impl.f_frame_rect_x1);
31298 self->private_impl.f_height = wuffs_base__u32__max(self->private_impl.f_height, self->private_impl.f_frame_rect_y1);
31303 self->private_impl.p_decode_id_part0[0] = 0;
31309 self->private_impl.p_decode_id_part0[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
31349 uint32_t coro_susp_point = self->private_impl.p_decode_id_part1[0];
31368 self->private_impl.f_interlace = 4;
31370 self->private_impl.f_interlace = 0;
31420 } else if (self->private_impl.f_quirks[6] && ! self->private_impl.f_has_global_palette) {
31423 } else if (self->private_impl.f_gc_has_transparent_index) {
31428 if (self->private_impl.f_gc_has_transparent_index) {
31429 self->private_data.f_palettes[1][((4 * ((uint32_t)(self->private_impl.f_gc_transparent_index))) + 0)] = 0;
31430 self->private_data.f_palettes[1][((4 * ((uint32_t)(self->private_impl.f_gc_transparent_index))) + 1)] = 0;
31431 self->private_data.f_palettes[1][((4 * ((uint32_t)(self->private_impl.f_gc_transparent_index))) + 2)] = 0;
31432 self->private_data.f_palettes[1][((4 * ((uint32_t)(self->private_impl.f_gc_transparent_index))) + 3)] = 0;
31434 v_status = wuffs_base__pixel_swizzler__prepare(&self->private_impl.f_swizzler,
31450 if (self->private_impl.f_previous_lzw_decode_ended_abruptly) {
31468 self->private_impl.f_previous_lzw_decode_ended_abruptly = true;
31471 self->private_impl.p_decode_id_part1[0] = 0;
31477 self->private_impl.p_decode_id_part1[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
31529 uint32_t coro_susp_point = self->private_impl.p_decode_id_part2[0];
31560 if (self->private_impl.f_compressed_ri == self->private_impl.f_compressed_wi) {
31561 self->private_impl.f_compressed_ri = 0;
31562 self->private_impl.f_compressed_wi = 0;
31564 while (self->private_impl.f_compressed_wi <= 3841) {
31570 &iop_a_src, io2_a_src,((uint32_t)((v_n_compressed & 4294967295))), wuffs_base__slice_u8__subslice_i(wuffs_base__make_slice_u8(self->private_data.f_compressed, 4096), self->private_impl.f_compressed_wi));
31571 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_compressed_wi, ((uint64_t)(v_n_copied)));
31586 if ((self->private_impl.f_compressed_ri > self->private_impl.f_compressed_wi) || (self->private_impl.f_compressed_wi > 4096)) {
31604 self->private_impl.f_compressed_ri,
31605 self->private_impl.f_compressed_wi),
31614 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_compressed_ri, wuffs_base__io__count_since(v_mark, ((uint64_t)(iop_v_r - io0_v_r))));
31630 self->private_impl.f_previous_lzw_decode_ended_abruptly = false;
31658 } else if (self->private_impl.f_quirks[3] && (self->private_impl.f_dst_y >= self->private_impl.f_frame_rect_y1) && (self->private_impl.f_interlace == 0)) {
31694 self->private_impl.f_compressed_ri = 0;
31695 self->private_impl.f_compressed_wi = 0;
31696 if ((self->private_impl.f_dst_y < self->private_impl.f_frame_rect_y1) && (self->private_impl.f_frame_rect_x0 != self->private_impl.f_frame_rect_x1) && (self->private_impl.f_frame_rect_y0 != self->private_impl.f_frame_rect_y1)) {
31702 self->private_impl.p_decode_id_part2[0] = 0;
31708 self->private_impl.p_decode_id_part2[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
31751 v_width_in_bytes = (((uint64_t)(self->private_impl.f_width)) * ((uint64_t)(v_bytes_per_pixel)));
31756 if (self->private_impl.f_dst_y >= self->private_impl.f_frame_rect_y1) {
31757 if (self->private_impl.f_quirks[3]) {
31762 v_dst = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y);
31763 if (self->private_impl.f_dst_y >= self->private_impl.f_height) {
31768 v_i = (((uint64_t)(self->private_impl.f_dst_x)) * ((uint64_t)(v_bytes_per_pixel)));
31770 v_j = (((uint64_t)(self->private_impl.f_frame_rect_x1)) * ((uint64_t)(v_bytes_per_pixel)));
31776 v_n = wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, v_dst, wuffs_base__make_slice_u8(self->private_data.f_dst_palette, 1024), v_src);
31778 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)((v_n & 4294967295))));
31779 self->private_impl.f_dirty_max_excl_y = wuffs_base__u32__max(self->private_impl.f_dirty_max_excl_y, wuffs_base__u32__sat_add(self->private_impl.f_dst_y, 1));
31781 if (self->private_impl.f_frame_rect_x1 <= self->private_impl.f_dst_x) {
31782 self->private_impl.f_dst_x = self->private_impl.f_frame_rect_x0;
31783 if (self->private_impl.f_interlace == 0) {
31784 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_y, 1);
31787 if ((self->private_impl.f_num_decoded_frames_value == 0) && ! self->private_impl.f_gc_has_transparent_index && (self->private_impl.f_interlace > 1)) {
31788 v_replicate_src = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y);
31789 v_replicate_y0 = wuffs_base__u32__sat_add(self->private_impl.f_dst_y, 1);
31790 v_replicate_y1 = wuffs_base__u32__sat_add(self->private_impl.f_dst_y, ((uint32_t)(WUFFS_GIF__INTERLACE_COUNT[self->private_impl.f_interlace])));
31791 v_replicate_y1 = wuffs_base__u32__min(v_replicate_y1, self->private_impl.f_frame_rect_y1);
31797 self->private_impl.f_dirty_max_excl_y = wuffs_base__u32__max(self->private_impl.f_dirty_max_excl_y, v_replicate_y1);
31799 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_y, ((uint32_t)(WUFFS_GIF__INTERLACE_DELTA[self->private_impl.f_interlace])));
31800 while ((self->private_impl.f_interlace > 0) && (self->private_impl.f_dst_y >= self->private_impl.f_frame_rect_y1)) {
31805 self->private_impl.f_interlace -= 1;
31809 self->private_impl.f_dst_y = wuffs_base__u32__sat_add(self->private_impl.f_frame_rect_y0, WUFFS_GIF__INTERLACE_START[self->private_impl.f_interlace]);
31818 v_n = ((uint64_t)((self->private_impl.f_frame_rect_x1 - self->private_impl.f_dst_x)));
31821 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)((v_n & 4294967295))));
31822 if (self->private_impl.f_frame_rect_x1 <= self->private_impl.f_dst_x) {
31823 self->private_impl.f_dst_x = self->private_impl.f_frame_rect_x0;
31824 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_y, ((uint32_t)(WUFFS_GIF__INTERLACE_DELTA[self->private_impl.f_interlace])));
31825 while ((self->private_impl.f_interlace > 0) && (self->private_impl.f_dst_y >= self->private_impl.f_frame_rect_y1)) {
31830 self->private_impl.f_interlace -= 1;
31834 self->private_impl.f_dst_y = wuffs_base__u32__sat_add(self->private_impl.f_frame_rect_y0, WUFFS_GIF__INTERLACE_START[self->private_impl.f_interlace]);
31904 if (self->private_impl.magic != 0) {
31915 memset(&(self->private_impl), 0, sizeof(self->private_impl));
31933 self->private_impl.magic = WUFFS_BASE__MAGIC;
31934 self->private_impl.vtable_for__wuffs_base__io_transformer.vtable_name =
31936 self->private_impl.vtable_for__wuffs_base__io_transformer.function_pointers =
31973 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
31978 self->private_impl.f_ignore_checksum = a_enabled;
31991 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
31992 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
32010 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
32012 (self->private_impl.magic == WUFFS_BASE__DISABLED)
32017 self->private_impl.magic = WUFFS_BASE__DISABLED;
32020 if ((self->private_impl.active_coroutine != 0) &&
32021 (self->private_impl.active_coroutine != 1)) {
32022 self->private_impl.magic = WUFFS_BASE__DISABLED;
32025 self->private_impl.active_coroutine = 0;
32062 uint32_t coro_susp_point = self->private_impl.p_transform_io[0];
32236 if ( ! self->private_impl.f_ignore_checksum) {
32305 if ( ! self->private_impl.f_ignore_checksum && ((v_checksum_got != v_checksum_want) || (v_decoded_length_got != v_decoded_length_want))) {
32311 self->private_impl.p_transform_io[0] = 0;
32317 self->private_impl.p_transform_io[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
32318 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0;
32334 self->private_impl.magic = WUFFS_BASE__DISABLED;
32674 if (self->private_impl.magic != 0) {
32685 memset(&(self->private_impl), 0, sizeof(self->private_impl));
32689 self->private_impl.magic = WUFFS_BASE__MAGIC;
32690 self->private_impl.vtable_for__wuffs_base__token_decoder.vtable_name =
32692 self->private_impl.vtable_for__wuffs_base__token_decoder.function_pointers =
32729 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
32736 self->private_impl.f_quirks[a_quirk] = a_enabled;
32750 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
32751 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
32769 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
32771 (self->private_impl.magic == WUFFS_BASE__DISABLED)
32776 self->private_impl.magic = WUFFS_BASE__DISABLED;
32779 if ((self->private_impl.active_coroutine != 0) &&
32780 (self->private_impl.active_coroutine != 1)) {
32781 self->private_impl.magic = WUFFS_BASE__DISABLED;
32784 self->private_impl.active_coroutine = 0;
32839 uint32_t coro_susp_point = self->private_impl.p_decode_tokens[0];
32848 if (self->private_impl.f_end_of_data) {
32852 if (self->private_impl.f_quirks[18]) {
32853 if (self->private_impl.f_quirks[11] || self->private_impl.f_quirks[12] || self->private_impl.f_quirks[17]) {
32858 if (self->private_impl.f_quirks[15] || self->private_impl.f_quirks[16]) {
33043 if (self->private_impl.f_quirks[WUFFS_JSON__LUT_QUIRKY_BACKSLASHES_QUIRKS[(v_backslash & 7)]]) {
33090 if (self->private_impl.f_quirks[20]) {
33141 if (self->private_impl.f_quirks[20]) {
33153 } else if ((v_c == 85) && self->private_impl.f_quirks[2]) {
33200 } else if (self->private_impl.f_quirks[20]) {
33208 } else if ((v_c == 120) && self->private_impl.f_quirks[9]) {
33254 if (self->private_impl.f_quirks[20]) {
33299 if (self->private_impl.f_quirks[20]) {
33346 if (self->private_impl.f_quirks[20]) {
33395 if (self->private_impl.f_quirks[0]) {
33410 if (self->private_impl.f_quirks[20]) {
33457 if (self->private_impl.f_quirks[13]) {
33463 if (self->private_impl.f_quirks[13]) {
33508 if (self->private_impl.f_quirks[14]) {
33691 if (self->private_impl.f_quirks[14]) {
33712 if (self->private_impl.f_quirks[11] || self->private_impl.f_quirks[12]) {
33730 if (self->private_impl.f_comment_type > 0) {
33745 if (self->private_impl.f_quirks[17] || self->private_impl.f_quirks[18]) {
33764 self->private_impl.f_end_of_data = true;
33767 self->private_impl.p_decode_tokens[0] = 0;
33773 self->private_impl.p_decode_tokens[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
33774 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0;
33789 self->private_impl.magic = WUFFS_BASE__DISABLED;
34015 uint32_t coro_susp_point = self->private_impl.p_decode_leading[0];
34019 self->private_impl.f_allow_leading_ars = self->private_impl.f_quirks[15];
34020 self->private_impl.f_allow_leading_ubom = self->private_impl.f_quirks[16];
34022 while (self->private_impl.f_allow_leading_ars || self->private_impl.f_allow_leading_ubom) {
34037 if ((v_c == 30) && self->private_impl.f_allow_leading_ars) {
34038 self->private_impl.f_allow_leading_ars = false;
34044 } else if ((v_c == 239) && self->private_impl.f_allow_leading_ubom) {
34055 self->private_impl.f_allow_leading_ubom = false;
34068 self->private_impl.p_decode_leading[0] = 0;
34074 self->private_impl.p_decode_leading[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
34125 uint32_t coro_susp_point = self->private_impl.p_decode_comment[0];
34129 self->private_impl.f_comment_type = 0;
34145 if ((v_c2 == 10799) && self->private_impl.f_quirks[11]) {
34179 self->private_impl.f_comment_type = 1;
34195 } else if ((v_c2 == 12079) && self->private_impl.f_quirks[12]) {
34212 self->private_impl.f_comment_type = 2;
34231 self->private_impl.f_comment_type = 2;
34250 self->private_impl.p_decode_comment[0] = 0;
34256 self->private_impl.p_decode_comment[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
34306 uint32_t coro_susp_point = self->private_impl.p_decode_inf_nan[0];
34410 self->private_impl.p_decode_inf_nan[0] = 0;
34416 self->private_impl.p_decode_inf_nan[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
34467 uint32_t coro_susp_point = self->private_impl.p_decode_trailer[0];
34471 if (self->private_impl.f_quirks[18]) {
34472 self->private_impl.f_trailer_stop = 10;
34474 self->private_impl.f_trailer_stop = 0;
34508 if (self->private_impl.f_trailer_stop > 0) {
34531 if (self->private_impl.f_comment_type > 0) {
34538 if ((v_whitespace_length >= 65534) || (v_c == self->private_impl.f_trailer_stop)) {
34543 if (v_c == self->private_impl.f_trailer_stop) {
34555 self->private_impl.p_decode_trailer[0] = 0;
34561 self->private_impl.p_decode_trailer[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
34659 if (self->private_impl.magic != 0) {
34670 memset(&(self->private_impl), 0, sizeof(self->private_impl));
34674 self->private_impl.magic = WUFFS_BASE__MAGIC;
34675 self->private_impl.vtable_for__wuffs_base__image_decoder.vtable_name =
34677 self->private_impl.vtable_for__wuffs_base__image_decoder.function_pointers =
34724 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
34726 (self->private_impl.magic == WUFFS_BASE__DISABLED)
34731 self->private_impl.magic = WUFFS_BASE__DISABLED;
34734 if ((self->private_impl.active_coroutine != 0) &&
34735 (self->private_impl.active_coroutine != 1)) {
34736 self->private_impl.magic = WUFFS_BASE__DISABLED;
34739 self->private_impl.active_coroutine = 0;
34755 uint32_t coro_susp_point = self->private_impl.p_decode_image_config[0];
34759 if (self->private_impl.f_call_sequence != 0) {
34826 self->private_impl.f_pixfmt = 2164295816;
34828 self->private_impl.f_pixfmt = 2164308923;
34872 self->private_impl.f_width = v_a;
34906 self->private_impl.f_height = v_a;
34910 self->private_impl.f_pixfmt,
34912 self->private_impl.f_width,
34913 self->private_impl.f_height,
34917 self->private_impl.f_call_sequence = 3;
34921 self->private_impl.p_decode_image_config[0] = 0;
34927 self->private_impl.p_decode_image_config[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
34928 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0;
34937 self->private_impl.magic = WUFFS_BASE__DISABLED;
34952 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
34954 (self->private_impl.magic == WUFFS_BASE__DISABLED)
34959 self->private_impl.magic = WUFFS_BASE__DISABLED;
34962 if ((self->private_impl.active_coroutine != 0) &&
34963 (self->private_impl.active_coroutine != 2)) {
34964 self->private_impl.magic = WUFFS_BASE__DISABLED;
34967 self->private_impl.active_coroutine = 0;
34981 uint32_t coro_susp_point = self->private_impl.p_decode_frame_config[0];
34985 if (self->private_impl.f_call_sequence < 3) {
34997 } else if (self->private_impl.f_call_sequence == 3) {
35002 } else if (self->private_impl.f_call_sequence == 4) {
35003 self->private_impl.f_call_sequence = 255;
35016 self->private_impl.f_width,
35017 self->private_impl.f_height),
35026 self->private_impl.f_call_sequence = 4;
35029 self->private_impl.p_decode_frame_config[0] = 0;
35035 self->private_impl.p_decode_frame_config[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
35036 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 2 : 0;
35045 self->private_impl.magic = WUFFS_BASE__DISABLED;
35063 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
35065 (self->private_impl.magic == WUFFS_BASE__DISABLED)
35070 self->private_impl.magic = WUFFS_BASE__DISABLED;
35073 if ((self->private_impl.active_coroutine != 0) &&
35074 (self->private_impl.active_coroutine != 3)) {
35075 self->private_impl.magic = WUFFS_BASE__DISABLED;
35078 self->private_impl.active_coroutine = 0;
35083 uint32_t coro_susp_point = self->private_impl.p_decode_frame[0];
35087 if (self->private_impl.f_call_sequence < 4) {
35093 } else if (self->private_impl.f_call_sequence == 4) {
35098 self->private_impl.f_dst_x = 0;
35099 self->private_impl.f_dst_y = 0;
35100 v_status = wuffs_base__pixel_swizzler__prepare(&self->private_impl.f_swizzler,
35103 wuffs_base__utility__make_pixel_format(self->private_impl.f_pixfmt),
35134 self->private_impl.f_call_sequence = 255;
35137 self->private_impl.p_decode_frame[0] = 0;
35143 self->private_impl.p_decode_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
35144 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 3 : 0;
35149 self->private_impl.magic = WUFFS_BASE__DISABLED;
35190 v_dst_bytes_per_row = (((uint64_t)(self->private_impl.f_width)) * v_dst_bytes_per_pixel);
35194 if (self->private_impl.f_dst_x == self->private_impl.f_width) {
35195 self->private_impl.f_dst_x = 0;
35196 self->private_impl.f_dst_y += 1;
35197 if (self->private_impl.f_dst_y >= self->private_impl.f_height) {
35201 v_dst = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y);
35205 v_i = (((uint64_t)(self->private_impl.f_dst_x)) * v_dst_bytes_per_pixel);
35210 &self->private_impl.f_swizzler,
35219 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)((v_n & 4294967295))));
35243 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
35244 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
35251 self->private_impl.f_width,
35252 self->private_impl.f_height);
35263 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
35264 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
35279 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
35280 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
35284 if (self->private_impl.f_call_sequence > 3) {
35298 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
35299 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
35303 if (self->private_impl.f_call_sequence > 4) {
35319 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
35321 (self->private_impl.magic == WUFFS_BASE__DISABLED)
35326 if (self->private_impl.f_call_sequence < 3) {
35332 self->private_impl.f_call_sequence = 3;
35357 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
35359 (self->private_impl.magic == WUFFS_BASE__DISABLED)
35364 self->private_impl.magic = WUFFS_BASE__DISABLED;
35367 if ((self->private_impl.active_coroutine != 0) &&
35368 (self->private_impl.active_coroutine != 4)) {
35369 self->private_impl.magic = WUFFS_BASE__DISABLED;
35372 self->private_impl.active_coroutine = 0;
35383 self->private_impl.magic = WUFFS_BASE__DISABLED;
35396 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
35397 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
35467 if (self->private_impl.magic != 0) {
35478 memset(&(self->private_impl), 0, sizeof(self->private_impl));
35503 self->private_impl.magic = WUFFS_BASE__MAGIC;
35504 self->private_impl.vtable_for__wuffs_base__io_transformer.vtable_name =
35506 self->private_impl.vtable_for__wuffs_base__io_transformer.function_pointers =
35541 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
35542 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
35546 return self->private_impl.f_dict_id_want;
35558 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
35562 if (self->private_impl.f_header_complete) {
35563 self->private_impl.f_bad_call_sequence = true;
35565 self->private_impl.f_dict_id_got = wuffs_adler32__hasher__update_u32(&self->private_data.f_dict_id_hasher, a_dict);
35568 self->private_impl.f_got_dictionary = true;
35582 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
35586 if (self->private_impl.f_header_complete) {
35587 self->private_impl.f_bad_call_sequence = true;
35589 self->private_impl.f_ignore_checksum = a_enabled;
35593 self->private_impl.f_quirks[a_quirk] = a_enabled;
35607 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
35608 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
35626 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
35628 (self->private_impl.magic == WUFFS_BASE__DISABLED)
35633 self->private_impl.magic = WUFFS_BASE__DISABLED;
35636 if ((self->private_impl.active_coroutine != 0) &&
35637 (self->private_impl.active_coroutine != 1)) {
35638 self->private_impl.magic = WUFFS_BASE__DISABLED;
35641 self->private_impl.active_coroutine = 0;
35674 uint32_t coro_susp_point = self->private_impl.p_transform_io[0];
35681 if (self->private_impl.f_bad_call_sequence) {
35684 } else if (self->private_impl.f_quirks[0]) {
35685 } else if ( ! self->private_impl.f_want_dictionary) {
35727 self->private_impl.f_want_dictionary = ((v_x & 32) != 0);
35728 if (self->private_impl.f_want_dictionary) {
35729 self->private_impl.f_dict_id_got = 1;
35757 self->private_impl.f_dict_id_want = t_1;
35761 } else if (self->private_impl.f_got_dictionary) {
35765 } else if (self->private_impl.f_dict_id_got != self->private_impl.f_dict_id_want) {
35766 if (self->private_impl.f_got_dictionary) {
35773 self->private_impl.f_header_complete = true;
35792 if ( ! self->private_impl.f_ignore_checksum && ! self->private_impl.f_quirks[0]) {
35802 if ( ! self->private_impl.f_quirks[0]) {
35832 if ( ! self->private_impl.f_ignore_checksum && (v_checksum_got != v_checksum_want)) {
35839 self->private_impl.p_transform_io[0] = 0;
35845 self->private_impl.p_transform_io[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
35846 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0;
35859 self->private_impl.magic = WUFFS_BASE__DISABLED;
36260 if (self->private_impl.magic != 0) {
36271 memset(&(self->private_impl), 0, sizeof(self->private_impl));
36275 self->private_impl.choosy_filter_1 = &wuffs_png__decoder__filter_1__choosy_default;
36276 self->private_impl.choosy_filter_3 = &wuffs_png__decoder__filter_3__choosy_default;
36277 self->private_impl.choosy_filter_4 = &wuffs_png__decoder__filter_4__choosy_default;
36278 self->private_impl.choosy_filter_and_swizzle = &wuffs_png__decoder__filter_and_swizzle__choosy_default;
36294 self->private_impl.magic = WUFFS_BASE__MAGIC;
36295 self->private_impl.vtable_for__wuffs_base__image_decoder.vtable_name =
36297 self->private_impl.vtable_for__wuffs_base__image_decoder.function_pointers =
36686 return (*self->private_impl.choosy_filter_1)(self, a_curr);
36698 v_filter_distance = ((uint64_t)(self->private_impl.f_filter_distance));
36820 return (*self->private_impl.choosy_filter_3)(self, a_curr, a_prev);
36832 v_filter_distance = ((uint64_t)(self->private_impl.f_filter_distance));
37020 return (*self->private_impl.choosy_filter_4)(self, a_curr, a_prev);
37039 v_filter_distance = ((uint64_t)(self->private_impl.f_filter_distance));
37735 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
37740 self->private_impl.f_ignore_checksum = a_enabled;
37756 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
37758 (self->private_impl.magic == WUFFS_BASE__DISABLED)
37763 self->private_impl.magic = WUFFS_BASE__DISABLED;
37766 if ((self->private_impl.active_coroutine != 0) &&
37767 (self->private_impl.active_coroutine != 1)) {
37768 self->private_impl.magic = WUFFS_BASE__DISABLED;
37771 self->private_impl.active_coroutine = 0;
37791 uint32_t coro_susp_point = self->private_impl.p_decode_image_config[0];
37798 if (self->private_impl.f_call_sequence == 2) {
37799 if (self->private_impl.f_metadata_fourcc != 0) {
37800 self->private_impl.f_call_sequence = 1;
37804 } else if (self->private_impl.f_call_sequence != 0) {
37874 self->private_impl.f_chunk_type_array[0] = 73;
37875 self->private_impl.f_chunk_type_array[1] = 72;
37876 self->private_impl.f_chunk_type_array[2] = 68;
37877 self->private_impl.f_chunk_type_array[3] = 82;
37880 wuffs_crc32__ieee_hasher__update_u32(&self->private_data.f_crc32, wuffs_base__make_slice_u8(self->private_impl.f_chunk_type_array, 4));
37893 if ( ! self->private_impl.f_ignore_checksum) {
37932 if ( ! self->private_impl.f_ignore_checksum && (v_checksum_have != v_checksum_want)) {
37946 self->private_impl.f_chunk_length = wuffs_base__peek_u32be__no_bounds_check(iop_a_src);
37947 self->private_impl.f_chunk_type = ((uint32_t)((wuffs_base__peek_u64le__no_bounds_check(iop_a_src) >> 32)));
37948 if (self->private_impl.f_chunk_type == 1413563465) {
37949 if ( ! self->private_impl.f_seen_actl || self->private_impl.f_seen_fctl) {
37952 self->private_impl.f_seen_idat = true;
37953 } else if (self->private_impl.f_chunk_type == 1413571686) {
37954 if (self->private_impl.f_seen_idat && self->private_impl.f_seen_fctl) {
37961 if ( ! self->private_impl.f_ignore_checksum && ((self->private_impl.f_chunk_type & 32) == 0)) {
37962 self->private_impl.f_chunk_type_array[0] = ((uint8_t)(((self->private_impl.f_chunk_type >> 0) & 255)));
37963 self->private_impl.f_chunk_type_array[1] = ((uint8_t)(((self->private_impl.f_chunk_type >> 8) & 255)));
37964 self->private_impl.f_chunk_type_array[2] = ((uint8_t)(((self->private_impl.f_chunk_type >> 16) & 255)));
37965 self->private_impl.f_chunk_type_array[3] = ((uint8_t)(((self->private_impl.f_chunk_type >> 24) & 255)));
37968 wuffs_crc32__ieee_hasher__update_u32(&self->private_data.f_crc32, wuffs_base__make_slice_u8(self->private_impl.f_chunk_type_array, 4));
37982 if ( ! self->private_impl.f_ignore_checksum && ((self->private_impl.f_chunk_type & 32) == 0)) {
37992 if (self->private_impl.f_metadata_fourcc != 0) {
37993 self->private_impl.f_call_sequence = 1;
38026 if ( ! self->private_impl.f_ignore_checksum && ((self->private_impl.f_chunk_type & 32) == 0) && (v_checksum_have != v_checksum_want)) {
38032 if ((self->private_impl.f_color_type == 3) && ! self->private_impl.f_seen_plte) {
38036 self->private_impl.f_frame_config_io_position = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src)));
38037 self->private_impl.f_first_config_io_position = self->private_impl.f_frame_config_io_position;
38041 self->private_impl.f_dst_pixfmt,
38043 self->private_impl.f_width,
38044 self->private_impl.f_height,
38045 self->private_impl.f_first_config_io_position,
38046 ((self->private_impl.f_color_type <= 3) && ! self->private_impl.f_seen_trns));
38048 if ( ! self->private_impl.f_seen_actl) {
38049 self->private_impl.f_num_animation_frames_value = 1;
38050 self->private_impl.f_first_rect_x0 = 0;
38051 self->private_impl.f_first_rect_y0 = 0;
38052 self->private_impl.f_first_rect_x1 = self->private_impl.f_width;
38053 self->private_impl.f_first_rect_y1 = self->private_impl.f_height;
38054 self->private_impl.f_first_duration = 0;
38055 self->private_impl.f_first_disposal = 0;
38056 self->private_impl.f_first_overwrite_instead_of_blend = false;
38058 self->private_impl.f_call_sequence = 3;
38061 self->private_impl.p_decode_image_config[0] = 0;
38067 self->private_impl.p_decode_image_config[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
38068 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0;
38078 self->private_impl.magic = WUFFS_BASE__DISABLED;
38105 uint32_t coro_susp_point = self->private_impl.p_decode_ihdr[0];
38145 self->private_impl.f_width = v_a32;
38182 self->private_impl.f_height = v_a32;
38196 self->private_impl.f_depth = v_a8;
38210 self->private_impl.f_color_type = v_a8;
38247 self->private_impl.f_interlace_pass = 0;
38249 self->private_impl.f_interlace_pass = 1;
38250 self->private_impl.choosy_filter_and_swizzle = (
38256 self->private_impl.f_filter_distance = 0;
38258 if (self->private_impl.f_filter_distance == 0) {
38262 self->private_impl.f_overall_workbuf_length = (((uint64_t)(self->private_impl.f_height)) * (1 + wuffs_png__decoder__calculate_bytes_per_row(self, self->private_impl.f_width)));
38267 self->private_impl.p_decode_ihdr[0] = 0;
38273 self->private_impl.p_decode_ihdr[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
38289 if (self->private_impl.f_depth < 8) {
38290 if ((self->private_impl.f_depth != 1) && (self->private_impl.f_depth != 2) && (self->private_impl.f_depth != 4)) {
38292 } else if (self->private_impl.f_color_type == 0) {
38293 self->private_impl.f_dst_pixfmt = 536870920;
38294 self->private_impl.f_src_pixfmt = 536870920;
38295 } else if (self->private_impl.f_color_type == 3) {
38296 self->private_impl.f_dst_pixfmt = 2198077448;
38297 self->private_impl.f_src_pixfmt = 2198077448;
38301 self->private_impl.f_filter_distance = 1;
38302 self->private_impl.choosy_filter_and_swizzle = (
38304 } else if (self->private_impl.f_color_type == 0) {
38305 if (self->private_impl.f_depth == 8) {
38306 self->private_impl.f_dst_pixfmt = 536870920;
38307 self->private_impl.f_src_pixfmt = 536870920;
38308 self->private_impl.f_filter_distance = 1;
38309 } else if (self->private_impl.f_depth == 16) {
38310 if (self->private_impl.f_interlace_pass == 0) {
38311 self->private_impl.f_dst_pixfmt = 536870923;
38312 self->private_impl.f_src_pixfmt = 537919499;
38314 self->private_impl.f_dst_pixfmt = 2164308923;
38315 self->private_impl.f_src_pixfmt = 2164308923;
38317 self->private_impl.f_filter_distance = 2;
38319 } else if (self->private_impl.f_color_type == 2) {
38320 if (self->private_impl.f_depth == 8) {
38321 self->private_impl.f_dst_pixfmt = 2147485832;
38322 self->private_impl.f_src_pixfmt = 2684356744;
38323 self->private_impl.f_filter_distance = 3;
38324 } else if (self->private_impl.f_depth == 16) {
38325 self->private_impl.f_dst_pixfmt = 2164308923;
38326 self->private_impl.f_src_pixfmt = 2164308923;
38327 self->private_impl.f_filter_distance = 6;
38328 self->private_impl.choosy_filter_and_swizzle = (
38331 } else if (self->private_impl.f_color_type == 3) {
38332 if (self->private_impl.f_depth == 8) {
38333 self->private_impl.f_dst_pixfmt = 2198077448;
38334 self->private_impl.f_src_pixfmt = 2198077448;
38335 self->private_impl.f_filter_distance = 1;
38337 } else if (self->private_impl.f_color_type == 4) {
38338 if (self->private_impl.f_depth == 8) {
38339 self->private_impl.f_dst_pixfmt = 2164295816;
38340 self->private_impl.f_src_pixfmt = 2164295816;
38341 self->private_impl.f_filter_distance = 2;
38342 self->private_impl.choosy_filter_and_swizzle = (
38344 } else if (self->private_impl.f_depth == 16) {
38345 self->private_impl.f_dst_pixfmt = 2164308923;
38346 self->private_impl.f_src_pixfmt = 2164308923;
38347 self->private_impl.f_filter_distance = 4;
38348 self->private_impl.choosy_filter_and_swizzle = (
38351 } else if (self->private_impl.f_color_type == 6) {
38352 if (self->private_impl.f_depth == 8) {
38353 self->private_impl.f_dst_pixfmt = 2164295816;
38354 self->private_impl.f_src_pixfmt = 2701166728;
38355 self->private_impl.f_filter_distance = 4;
38356 } else if (self->private_impl.f_depth == 16) {
38357 self->private_impl.f_dst_pixfmt = 2164308923;
38358 self->private_impl.f_src_pixfmt = 2164308923;
38359 self->private_impl.f_filter_distance = 8;
38360 self->private_impl.choosy_filter_and_swizzle = (
38375 if (self->private_impl.f_depth == 1) {
38377 } else if (self->private_impl.f_depth == 2) {
38379 } else if (self->private_impl.f_depth == 4) {
38382 v_bytes_per_channel = ((uint64_t)((self->private_impl.f_depth >> 3)));
38383 return (((uint64_t)(a_width)) * v_bytes_per_channel * ((uint64_t)(WUFFS_PNG__NUM_CHANNELS[self->private_impl.f_color_type])));
38391 if (self->private_impl.f_filter_distance == 3) {
38392 self->private_impl.choosy_filter_1 = (
38394 self->private_impl.choosy_filter_3 = (
38396 self->private_impl.choosy_filter_4 = (
38404 } else if (self->private_impl.f_filter_distance == 4) {
38405 self->private_impl.choosy_filter_1 = (
38413 self->private_impl.choosy_filter_3 = (
38421 self->private_impl.choosy_filter_4 = (
38452 uint32_t coro_susp_point = self->private_impl.p_decode_other_chunk[0];
38456 if (self->private_impl.f_chunk_type == 1163152464) {
38457 if (self->private_impl.f_seen_plte) {
38460 } else if (self->private_impl.f_color_type == 3) {
38472 } else if ((self->private_impl.f_color_type == 2) || (self->private_impl.f_color_type == 6)) {
38477 self->private_impl.f_seen_plte = true;
38478 } else if ((self->private_impl.f_chunk_type & 32) == 0) {
38479 if (self->private_impl.f_chunk_type != 1413563465) {
38483 } else if (self->private_impl.f_chunk_type == 1280598881) {
38484 if (self->private_impl.f_seen_actl) {
38499 self->private_impl.f_seen_actl = true;
38500 } else if (self->private_impl.f_chunk_type == 1297238115) {
38501 if (self->private_impl.f_report_metadata_chrm) {
38502 if (self->private_impl.f_seen_chrm) {
38517 self->private_impl.f_seen_chrm = true;
38519 } else if (self->private_impl.f_chunk_type == 1716082789) {
38520 if (self->private_impl.f_report_metadata_exif) {
38521 if (self->private_impl.f_seen_exif) {
38536 self->private_impl.f_seen_exif = true;
38538 } else if (self->private_impl.f_chunk_type == 1280598886) {
38539 if (self->private_impl.f_seen_fctl) {
38554 self->private_impl.f_seen_fctl = true;
38555 } else if (self->private_impl.f_chunk_type == 1095582055) {
38556 if (self->private_impl.f_report_metadata_gama) {
38557 if (self->private_impl.f_seen_gama) {
38572 self->private_impl.f_seen_gama = true;
38574 } else if (self->private_impl.f_chunk_type == 1346585449) {
38575 if (self->private_impl.f_report_metadata_iccp) {
38576 if (self->private_impl.f_seen_iccp) {
38591 self->private_impl.f_seen_iccp = true;
38593 } else if (self->private_impl.f_chunk_type == 1111970419) {
38594 if (self->private_impl.f_report_metadata_srgb) {
38595 if (self->private_impl.f_seen_srgb) {
38610 self->private_impl.f_seen_srgb = true;
38612 } else if (self->private_impl.f_chunk_type == 1397641844) {
38613 if (self->private_impl.f_seen_trns || (self->private_impl.f_color_type > 3) || ((self->private_impl.f_color_type == 3) && ! self->private_impl.f_seen_plte)) {
38628 self->private_impl.f_seen_trns = true;
38629 } else if ((self->private_impl.f_chunk_type == 1951945833) || (self->private_impl.f_chunk_type == 1951942004) || (self->private_impl.f_chunk_type == 1951945850)) {
38630 if (self->private_impl.f_report_metadata_kvp) {
38631 self->private_impl.f_metadata_flavor = 4;
38632 self->private_impl.f_metadata_fourcc = 1263947851;
38633 self->private_impl.f_metadata_x = 0;
38634 self->private_impl.f_metadata_y = 0;
38635 self->private_impl.f_metadata_z = 0;
38638 if (self->private_impl.f_metadata_fourcc == 0) {
38639 self->private_data.s_decode_other_chunk[0].scratch = self->private_impl.f_chunk_length;
38652 self->private_impl.p_decode_other_chunk[0] = 0;
38658 self->private_impl.p_decode_other_chunk[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
38688 uint32_t coro_susp_point = self->private_impl.p_decode_actl[0];
38692 if (self->private_impl.f_chunk_length != 8) {
38695 } else if (self->private_impl.f_interlace_pass > 0) {
38699 self->private_impl.f_chunk_length = 0;
38727 self->private_impl.f_num_animation_frames_value = t_0;
38729 if (self->private_impl.f_num_animation_frames_value == 0) {
38760 self->private_impl.f_num_animation_loops_value = t_1;
38765 self->private_impl.p_decode_actl[0] = 0;
38771 self->private_impl.p_decode_actl[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
38803 uint32_t coro_susp_point = self->private_impl.p_decode_chrm[0];
38807 if (self->private_impl.f_chunk_length != 32) {
38811 self->private_impl.f_chunk_length = 0;
38812 self->private_impl.f_metadata_flavor = 5;
38813 self->private_impl.f_metadata_fourcc = 1128813133;
38814 self->private_impl.f_metadata_x = 0;
38815 self->private_impl.f_metadata_y = 0;
38816 self->private_impl.f_metadata_z = 0;
38846 self->private_impl.f_metadata_x |= ((16777215 & v_u) << 0);
38876 self->private_impl.f_metadata_x |= ((16777215 & v_u) << 24);
38906 self->private_impl.f_metadata_x |= ((uint64_t)((16777215 & v_u) << 48));
38907 self->private_impl.f_metadata_y |= ((16777215 & v_u) >> 16);
38937 self->private_impl.f_metadata_y |= ((16777215 & v_u) << 8);
38967 self->private_impl.f_metadata_y |= ((16777215 & v_u) << 32);
38997 self->private_impl.f_metadata_y |= ((uint64_t)((16777215 & v_u) << 56));
38998 self->private_impl.f_metadata_z |= ((16777215 & v_u) >> 8);
39028 self->private_impl.f_metadata_z |= ((16777215 & v_u) << 16);
39058 self->private_impl.f_metadata_z |= ((16777215 & v_u) << 40);
39062 self->private_impl.p_decode_chrm[0] = 0;
39068 self->private_impl.p_decode_chrm[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
39098 if (self->private_impl.f_chunk_length < 4) {
39102 self->private_impl.f_metadata_flavor = 3;
39103 self->private_impl.f_metadata_fourcc = 1163413830;
39104 self->private_impl.f_metadata_x = 0;
39105 self->private_impl.f_metadata_y = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src)));
39106 self->private_impl.f_metadata_z = wuffs_base__u64__sat_add(self->private_impl.f_metadata_y, ((uint64_t)(self->private_impl.f_chunk_length)));
39107 self->private_impl.f_chunk_length = 0;
39144 uint32_t coro_susp_point = self->private_impl.p_decode_fctl[0];
39153 if (self->private_impl.f_chunk_length != 26) {
39157 self->private_impl.f_chunk_length = 0;
39187 if (v_x0 != self->private_impl.f_next_animation_seq_num) {
39190 } else if (self->private_impl.f_next_animation_seq_num >= 4294967295) {
39194 self->private_impl.f_next_animation_seq_num += 1;
39314 (v_x0 > self->private_impl.f_width) ||
39315 (v_x1 > self->private_impl.f_width) ||
39317 (v_y0 > self->private_impl.f_height) ||
39318 (v_y1 > self->private_impl.f_height)) {
39322 self->private_impl.f_frame_rect_x0 = v_x0;
39323 self->private_impl.f_frame_rect_y0 = v_y0;
39324 self->private_impl.f_frame_rect_x1 = v_x1;
39325 self->private_impl.f_frame_rect_y1 = v_y1;
39385 self->private_impl.f_frame_duration = (((uint64_t)(v_x0)) * 7056000);
39387 self->private_impl.f_frame_duration = ((((uint64_t)(v_x0)) * 705600000) / ((uint64_t)(v_x1)));
39399 self->private_impl.f_frame_disposal = 0;
39401 self->private_impl.f_frame_disposal = 1;
39403 self->private_impl.f_frame_disposal = 2;
39418 self->private_impl.f_frame_overwrite_instead_of_blend = true;
39420 self->private_impl.f_frame_overwrite_instead_of_blend = false;
39425 if (self->private_impl.f_num_decoded_frame_configs_value == 0) {
39426 self->private_impl.f_first_rect_x0 = self->private_impl.f_frame_rect_x0;
39427 self->private_impl.f_first_rect_y0 = self->private_impl.f_frame_rect_y0;
39428 self->private_impl.f_first_rect_x1 = self->private_impl.f_frame_rect_x1;
39429 self->private_impl.f_first_rect_y1 = self->private_impl.f_frame_rect_y1;
39430 self->private_impl.f_first_duration = self->private_impl.f_frame_duration;
39431 self->private_impl.f_first_disposal = self->private_impl.f_frame_disposal;
39432 self->private_impl.f_first_overwrite_instead_of_blend = self->private_impl.f_frame_overwrite_instead_of_blend;
39437 self->private_impl.p_decode_fctl[0] = 0;
39443 self->private_impl.p_decode_fctl[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
39476 uint32_t coro_susp_point = self->private_impl.p_decode_gama[0];
39480 if (self->private_impl.f_chunk_length != 4) {
39484 self->private_impl.f_chunk_length = 0;
39485 self->private_impl.f_metadata_flavor = 5;
39486 self->private_impl.f_metadata_fourcc = 1195461953;
39514 self->private_impl.f_metadata_x = t_0;
39516 self->private_impl.f_metadata_y = 0;
39517 self->private_impl.f_metadata_z = 0;
39521 self->private_impl.p_decode_gama[0] = 0;
39527 self->private_impl.p_decode_gama[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
39559 uint32_t coro_susp_point = self->private_impl.p_decode_iccp[0];
39564 if (self->private_impl.f_chunk_length <= 0) {
39568 self->private_impl.f_chunk_length -= 1;
39583 if (self->private_impl.f_chunk_length <= 0) {
39587 self->private_impl.f_chunk_length -= 1;
39601 self->private_impl.f_metadata_is_zlib_compressed = true;
39602 self->private_impl.f_metadata_flavor = 4;
39603 self->private_impl.f_metadata_fourcc = 1229144912;
39604 self->private_impl.f_metadata_x = 0;
39605 self->private_impl.f_metadata_y = 0;
39606 self->private_impl.f_metadata_z = 0;
39610 self->private_impl.p_decode_iccp[0] = 0;
39616 self->private_impl.p_decode_iccp[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
39650 uint32_t coro_susp_point = self->private_impl.p_decode_plte[0];
39658 if ((self->private_impl.f_chunk_length > 768) || ((self->private_impl.f_chunk_length % 3) != 0)) {
39662 v_num_entries = (((uint32_t)(self->private_impl.f_chunk_length)) / 3);
39663 self->private_impl.f_chunk_length = 0;
39711 self->private_impl.p_decode_plte[0] = 0;
39717 self->private_impl.p_decode_plte[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
39749 uint32_t coro_susp_point = self->private_impl.p_decode_srgb[0];
39753 if (self->private_impl.f_chunk_length != 1) {
39757 self->private_impl.f_chunk_length = 0;
39758 self->private_impl.f_metadata_flavor = 5;
39759 self->private_impl.f_metadata_fourcc = 1397901122;
39767 self->private_impl.f_metadata_x = t_0;
39769 self->private_impl.f_metadata_y = 0;
39770 self->private_impl.f_metadata_z = 0;
39774 self->private_impl.p_decode_srgb[0] = 0;
39780 self->private_impl.p_decode_srgb[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
39814 uint32_t coro_susp_point = self->private_impl.p_decode_trns[0];
39822 if (self->private_impl.f_color_type == 0) {
39823 self->private_impl.choosy_filter_and_swizzle = (
39825 if (self->private_impl.f_depth <= 8) {
39826 self->private_impl.f_dst_pixfmt = 2164295816;
39827 self->private_impl.f_src_pixfmt = 2164295816;
39829 self->private_impl.f_dst_pixfmt = 2164308923;
39830 self->private_impl.f_src_pixfmt = 2164308923;
39832 if (self->private_impl.f_chunk_length != 2) {
39836 self->private_impl.f_chunk_length = 0;
39866 if (self->private_impl.f_depth <= 1) {
39867 self->private_impl.f_remap_transparency = (((v_u & 1) * 16777215) | 4278190080);
39868 } else if (self->private_impl.f_depth <= 2) {
39869 self->private_impl.f_remap_transparency = (((v_u & 3) * 5592405) | 4278190080);
39870 } else if (self->private_impl.f_depth <= 4) {
39871 self->private_impl.f_remap_transparency = (((v_u & 15) * 1118481) | 4278190080);
39872 } else if (self->private_impl.f_depth <= 8) {
39873 self->private_impl.f_remap_transparency = (((v_u & 255) * 65793) | 4278190080);
39875 self->private_impl.f_remap_transparency = ((v_u * 4295032833) | 18446462598732840960u);
39877 } else if (self->private_impl.f_color_type == 2) {
39878 self->private_impl.choosy_filter_and_swizzle = (
39880 if (self->private_impl.f_depth <= 8) {
39881 self->private_impl.f_dst_pixfmt = 2164295816;
39882 self->private_impl.f_src_pixfmt = 2164295816;
39884 self->private_impl.f_dst_pixfmt = 2164308923;
39885 self->private_impl.f_src_pixfmt = 2164308923;
39887 if (self->private_impl.f_chunk_length != 6) {
39891 self->private_impl.f_chunk_length = 0;
39921 if (self->private_impl.f_depth <= 8) {
39922 self->private_impl.f_remap_transparency = ((255 & (v_u >> 0)) |
39927 self->private_impl.f_remap_transparency = (v_u | 18446462598732840960u);
39929 } else if (self->private_impl.f_color_type == 3) {
39930 self->private_impl.f_dst_pixfmt = 2164523016;
39931 self->private_impl.f_src_pixfmt = 2164523016;
39932 if (self->private_impl.f_chunk_length > 256) {
39936 v_n = ((uint32_t)(self->private_impl.f_chunk_length));
39937 self->private_impl.f_chunk_length = 0;
39957 self->private_impl.p_decode_trns[0] = 0;
39963 self->private_impl.p_decode_trns[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
39986 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
39988 (self->private_impl.magic == WUFFS_BASE__DISABLED)
39993 self->private_impl.magic = WUFFS_BASE__DISABLED;
39996 if ((self->private_impl.active_coroutine != 0) &&
39997 (self->private_impl.active_coroutine != 2)) {
39998 self->private_impl.magic = WUFFS_BASE__DISABLED;
40001 self->private_impl.active_coroutine = 0;
40015 uint32_t coro_susp_point = self->private_impl.p_decode_frame_config[0];
40019 if (self->private_impl.f_call_sequence == 255) {
40022 } else if (self->private_impl.f_call_sequence < 3) {
40034 } else if (self->private_impl.f_call_sequence == 3) {
40035 if (self->private_impl.f_frame_config_io_position != wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src)))) {
40039 } else if (self->private_impl.f_call_sequence == 4) {
40051 if (self->private_impl.f_call_sequence == 255) {
40056 if (self->private_impl.f_num_decoded_frame_configs_value == 0) {
40057 self->private_impl.f_frame_rect_x0 = self->private_impl.f_first_rect_x0;
40058 self->private_impl.f_frame_rect_y0 = self->private_impl.f_first_rect_y0;
40059 self->private_impl.f_frame_rect_x1 = self->private_impl.f_first_rect_x1;
40060 self->private_impl.f_frame_rect_y1 = self->private_impl.f_first_rect_y1;
40061 self->private_impl.f_frame_config_io_position = self->private_impl.f_first_config_io_position;
40062 self->private_impl.f_frame_duration = self->private_impl.f_first_duration;
40063 self->private_impl.f_frame_disposal = self->private_impl.f_first_disposal;
40064 self->private_impl.f_frame_overwrite_instead_of_blend = self->private_impl.f_first_overwrite_instead_of_blend;
40094 self->private_impl.f_chunk_length = t_0;
40123 self->private_impl.f_chunk_type = t_1;
40125 if (self->private_impl.f_chunk_type == 1413571686) {
40128 } else if (self->private_impl.f_chunk_type == 1280598886) {
40129 self->private_impl.f_frame_config_io_position = ((uint64_t)(wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src))) - 8));
40152 self->private_data.s_decode_frame_config[0].scratch = (((uint64_t)(self->private_impl.f_chunk_length)) + 4);
40161 self->private_impl.f_chunk_length = 0;
40169 self->private_impl.f_frame_rect_x0,
40170 self->private_impl.f_frame_rect_y0,
40171 self->private_impl.f_frame_rect_x1,
40172 self->private_impl.f_frame_rect_y1),
40173 ((wuffs_base__flicks)(self->private_impl.f_frame_duration)),
40174 ((uint64_t)(self->private_impl.f_num_decoded_frame_configs_value)),
40175 self->private_impl.f_frame_config_io_position,
40176 self->private_impl.f_frame_disposal,
40177 ((self->private_impl.f_color_type <= 3) && ! self->private_impl.f_seen_trns),
40178 self->private_impl.f_frame_overwrite_instead_of_blend,
40181 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_num_decoded_frame_configs_value, 1);
40182 self->private_impl.f_call_sequence = 4;
40185 self->private_impl.p_decode_frame_config[0] = 0;
40191 self->private_impl.p_decode_frame_config[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
40192 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 2 : 0;
40201 self->private_impl.magic = WUFFS_BASE__DISABLED;
40227 uint32_t coro_susp_point = self->private_impl.p_skip_frame[0];
40231 self->private_impl.f_chunk_type_array[0] = 0;
40232 self->private_impl.f_chunk_type_array[1] = 0;
40233 self->private_impl.f_chunk_type_array[2] = 0;
40234 self->private_impl.f_chunk_type_array[3] = 0;
40245 self->private_impl.f_chunk_length = wuffs_base__peek_u32be__no_bounds_check(iop_a_src);
40246 self->private_impl.f_chunk_type = ((uint32_t)((wuffs_base__peek_u64le__no_bounds_check(iop_a_src) >> 32)));
40247 if (self->private_impl.f_chunk_type == 1413563465) {
40248 if (self->private_impl.f_chunk_type_array[0] == 102) {
40252 self->private_impl.f_chunk_type_array[0] = 73;
40253 self->private_impl.f_chunk_type_array[1] = 68;
40254 self->private_impl.f_chunk_type_array[2] = 65;
40255 self->private_impl.f_chunk_type_array[3] = 84;
40256 } else if (self->private_impl.f_chunk_type == 1413571686) {
40257 if (self->private_impl.f_chunk_type_array[0] == 73) {
40261 self->private_impl.f_chunk_type_array[0] = 102;
40262 self->private_impl.f_chunk_type_array[1] = 100;
40263 self->private_impl.f_chunk_type_array[2] = 65;
40264 self->private_impl.f_chunk_type_array[3] = 84;
40265 if (self->private_impl.f_chunk_length < 4) {
40269 self->private_impl.f_chunk_length -= 4;
40300 if (v_seq_num != self->private_impl.f_next_animation_seq_num) {
40303 } else if (self->private_impl.f_next_animation_seq_num >= 4294967295) {
40307 self->private_impl.f_next_animation_seq_num += 1;
40308 self->private_data.s_skip_frame[0].scratch = (((uint64_t)(self->private_impl.f_chunk_length)) + 4);
40317 self->private_impl.f_chunk_length = 0;
40319 } else if (self->private_impl.f_chunk_type_array[0] != 0) {
40321 } else if (self->private_impl.f_chunk_type == 1280598886) {
40325 self->private_data.s_skip_frame[0].scratch = (((uint64_t)(self->private_impl.f_chunk_length)) + 12);
40334 self->private_impl.f_chunk_length = 0;
40337 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_num_decoded_frames_value, 1);
40338 if (self->private_impl.f_num_decoded_frames_value < self->private_impl.f_num_animation_frames_value) {
40339 self->private_impl.f_call_sequence = 5;
40341 self->private_impl.f_call_sequence = 255;
40345 self->private_impl.p_skip_frame[0] = 0;
40351 self->private_impl.p_skip_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
40375 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
40377 (self->private_impl.magic == WUFFS_BASE__DISABLED)
40382 self->private_impl.magic = WUFFS_BASE__DISABLED;
40385 if ((self->private_impl.active_coroutine != 0) &&
40386 (self->private_impl.active_coroutine != 3)) {
40387 self->private_impl.magic = WUFFS_BASE__DISABLED;
40390 self->private_impl.active_coroutine = 0;
40409 uint32_t coro_susp_point = self->private_impl.p_decode_frame[0];
40413 if (self->private_impl.f_call_sequence == 255) {
40416 } else if (self->private_impl.f_call_sequence != 4) {
40438 self->private_impl.f_chunk_length = wuffs_base__peek_u32be__no_bounds_check(iop_a_src);
40439 self->private_impl.f_chunk_type = ((uint32_t)((wuffs_base__peek_u64le__no_bounds_check(iop_a_src) >> 32)));
40440 if (self->private_impl.f_chunk_type == 1413563465) {
40441 self->private_impl.f_chunk_type_array[0] = 73;
40442 self->private_impl.f_chunk_type_array[1] = 68;
40443 self->private_impl.f_chunk_type_array[2] = 65;
40444 self->private_impl.f_chunk_type_array[3] = 84;
40446 if ( ! self->private_impl.f_ignore_checksum) {
40449 wuffs_crc32__ieee_hasher__update_u32(&self->private_data.f_crc32, wuffs_base__make_slice_u8(self->private_impl.f_chunk_type_array, 4));
40452 } else if (self->private_impl.f_chunk_type == 1413571686) {
40453 self->private_impl.f_chunk_type_array[0] = 102;
40454 self->private_impl.f_chunk_type_array[1] = 100;
40455 self->private_impl.f_chunk_type_array[2] = 65;
40456 self->private_impl.f_chunk_type_array[3] = 84;
40457 if (self->private_impl.f_chunk_length < 4) {
40461 self->private_impl.f_chunk_length -= 4;
40492 if (v_seq_num != self->private_impl.f_next_animation_seq_num) {
40495 } else if (self->private_impl.f_next_animation_seq_num >= 4294967295) {
40499 self->private_impl.f_next_animation_seq_num += 1;
40501 } else if (self->private_impl.f_chunk_type == 1280598886) {
40505 self->private_data.s_decode_frame[0].scratch = (((uint64_t)(self->private_impl.f_chunk_length)) + 12);
40514 self->private_impl.f_chunk_length = 0;
40517 if (self->private_impl.f_zlib_is_dirty) {
40520 if (self->private_impl.f_ignore_checksum) {
40524 self->private_impl.f_zlib_is_dirty = true;
40525 v_status = wuffs_base__pixel_swizzler__prepare(&self->private_impl.f_swizzler,
40528 wuffs_base__utility__make_pixel_format(self->private_impl.f_src_pixfmt),
40541 self->private_impl.f_workbuf_hist_pos_base = 0;
40543 if (self->private_impl.f_chunk_type_array[0] == 73) {
40544 v_pass_width = (16777215 & ((((uint32_t)(WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][1])) + self->private_impl.f_width) >> WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][0]));
40545 v_pass_height = (16777215 & ((((uint32_t)(WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][4])) + self->private_impl.f_height) >> WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][3]));
40547 v_pass_width = (16777215 & ((uint32_t)(self->private_impl.f_frame_rect_x1 - self->private_impl.f_frame_rect_x0)));
40548 v_pass_height = (16777215 & ((uint32_t)(self->private_impl.f_frame_rect_y1 - self->private_impl.f_frame_rect_y0)));
40551 self->private_impl.f_pass_bytes_per_row = wuffs_png__decoder__calculate_bytes_per_row(self, v_pass_width);
40552 self->private_impl.f_pass_workbuf_length = (((uint64_t)(v_pass_height)) * (1 + self->private_impl.f_pass_bytes_per_row));
40575 self->private_impl.f_workbuf_hist_pos_base += self->private_impl.f_pass_workbuf_length;
40577 if ((self->private_impl.f_interlace_pass == 0) || (self->private_impl.f_interlace_pass >= 7)) {
40584 self->private_impl.f_interlace_pass += 1;
40590 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_num_decoded_frames_value, 1);
40591 if (self->private_impl.f_num_decoded_frames_value < self->private_impl.f_num_animation_frames_value) {
40592 self->private_impl.f_call_sequence = 5;
40594 self->private_impl.f_call_sequence = 255;
40598 self->private_impl.p_decode_frame[0] = 0;
40604 self->private_impl.p_decode_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
40605 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 3 : 0;
40614 self->private_impl.magic = WUFFS_BASE__DISABLED;
40652 uint32_t coro_susp_point = self->private_impl.p_decode_pass[0];
40656 self->private_impl.f_workbuf_wi = 0;
40659 if ((self->private_impl.f_workbuf_wi > self->private_impl.f_pass_workbuf_length) || (self->private_impl.f_pass_workbuf_length > ((uint64_t)(a_workbuf.len)))) {
40676 self->private_impl.f_workbuf_wi,
40677 self->private_impl.f_pass_workbuf_length),
40678 ((uint64_t)(self->private_impl.f_workbuf_hist_pos_base + self->private_impl.f_workbuf_wi)));
40682 ((uint64_t)(self->private_impl.f_chunk_length)));
40700 if ( ! self->private_impl.f_ignore_checksum) {
40703 wuffs_base__u32__sat_sub_indirect(&self->private_impl.f_chunk_length, ((uint32_t)((wuffs_base__io__count_since(v_r_mark, ((uint64_t)(iop_a_src - io0_a_src))) & 4294967295))));
40704 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_workbuf_wi, wuffs_base__io__count_since(v_w_mark, ((uint64_t)(iop_v_w - io0_v_w))));
40717 if (self->private_impl.f_chunk_length > 0) {
40750 if ( ! self->private_impl.f_ignore_checksum && (self->private_impl.f_chunk_type_array[0] == 73)) {
40759 if ((1 <= self->private_impl.f_interlace_pass) && (self->private_impl.f_interlace_pass <= 6)) {
40773 } else if (self->private_impl.f_chunk_length == 0) {
40803 if ( ! self->private_impl.f_ignore_checksum && (self->private_impl.f_chunk_type_array[0] == 73)) {
40837 self->private_impl.f_chunk_length = t_3;
40866 self->private_impl.f_chunk_type = t_4;
40868 if (self->private_impl.f_chunk_type_array[0] == 73) {
40869 if (self->private_impl.f_chunk_type != 1413563465) {
40873 if ( ! self->private_impl.f_ignore_checksum) {
40876 wuffs_crc32__ieee_hasher__update_u32(&self->private_data.f_crc32, wuffs_base__make_slice_u8(self->private_impl.f_chunk_type_array, 4));
40879 if ((self->private_impl.f_chunk_type != 1413571686) || (self->private_impl.f_chunk_length < 4)) {
40883 self->private_impl.f_chunk_length -= 4;
40913 if (v_seq_num != self->private_impl.f_next_animation_seq_num) {
40916 } else if (self->private_impl.f_next_animation_seq_num >= 4294967295) {
40920 self->private_impl.f_next_animation_seq_num += 1;
40931 if (self->private_impl.f_workbuf_wi != self->private_impl.f_pass_workbuf_length) {
40941 self->private_impl.p_decode_pass[0] = 0;
40947 self->private_impl.p_decode_pass[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
40966 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
40967 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
40972 self->private_impl.f_frame_rect_x0,
40973 self->private_impl.f_frame_rect_y0,
40974 self->private_impl.f_frame_rect_x1,
40975 self->private_impl.f_frame_rect_y1);
40986 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
40987 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
40991 return self->private_impl.f_num_animation_loops_value;
41002 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
41003 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
41007 return ((uint64_t)(self->private_impl.f_num_decoded_frame_configs_value));
41018 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
41019 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
41023 return ((uint64_t)(self->private_impl.f_num_decoded_frames_value));
41036 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
41038 (self->private_impl.magic == WUFFS_BASE__DISABLED)
41043 if (self->private_impl.f_call_sequence < 3) {
41045 } else if ((a_index >= ((uint64_t)(self->private_impl.f_num_animation_frames_value))) || ((a_index == 0) && (a_io_position != self->private_impl.f_first_config_io_position))) {
41048 self->private_impl.f_call_sequence = 3;
41049 if (self->private_impl.f_interlace_pass >= 1) {
41050 self->private_impl.f_interlace_pass = 1;
41052 self->private_impl.f_frame_config_io_position = a_io_position;
41053 self->private_impl.f_num_decoded_frame_configs_value = ((uint32_t)((a_index & 4294967295)));
41054 self->private_impl.f_num_decoded_frames_value = self->private_impl.f_num_decoded_frame_configs_value;
41068 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
41073 self->private_impl.f_report_metadata_chrm = a_report;
41075 self->private_impl.f_report_metadata_exif = a_report;
41077 self->private_impl.f_report_metadata_gama = a_report;
41079 self->private_impl.f_report_metadata_iccp = a_report;
41081 self->private_impl.f_report_metadata_kvp = a_report;
41083 self->private_impl.f_report_metadata_srgb = a_report;
41099 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
41101 (self->private_impl.magic == WUFFS_BASE__DISABLED)
41106 self->private_impl.magic = WUFFS_BASE__DISABLED;
41109 if ((self->private_impl.active_coroutine != 0) &&
41110 (self->private_impl.active_coroutine != 4)) {
41111 self->private_impl.magic = WUFFS_BASE__DISABLED;
41114 self->private_impl.active_coroutine = 0;
41154 uint32_t coro_susp_point = self->private_impl.p_tell_me_more[0];
41161 if (self->private_impl.f_call_sequence != 1) {
41165 if (self->private_impl.f_metadata_fourcc == 0) {
41170 if (self->private_impl.f_metadata_flavor == 3) {
41172 if (wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src))) != self->private_impl.f_metadata_y) {
41177 self->private_impl.f_metadata_flavor,
41178 self->private_impl.f_metadata_fourcc,
41179 self->private_impl.f_metadata_x,
41180 self->private_impl.f_metadata_y,
41181 self->private_impl.f_metadata_z);
41183 if (self->private_impl.f_metadata_y >= self->private_impl.f_metadata_z) {
41186 self->private_impl.f_metadata_y = self->private_impl.f_metadata_z;
41191 if (self->private_impl.f_metadata_is_zlib_compressed) {
41192 if (self->private_impl.f_zlib_is_dirty) {
41195 if (self->private_impl.f_ignore_checksum) {
41199 self->private_impl.f_zlib_is_dirty = true;
41200 self->private_impl.f_ztxt_hist_pos = 0;
41206 self->private_impl.f_metadata_flavor,
41207 self->private_impl.f_metadata_fourcc,
41208 self->private_impl.f_metadata_x,
41209 self->private_impl.f_metadata_y,
41210 self->private_impl.f_metadata_z);
41212 if (self->private_impl.f_metadata_flavor != 4) {
41215 if (self->private_impl.f_metadata_is_zlib_compressed) {
41216 if (self->private_impl.f_chunk_type == 1346585449) {
41220 ((uint64_t)(self->private_impl.f_chunk_length)));
41241 wuffs_base__u32__sat_sub_indirect(&self->private_impl.f_chunk_length, ((uint32_t)((wuffs_base__io__count_since(v_r_mark, ((uint64_t)(iop_a_src - io0_a_src))) & 4294967295))));
41248 self->private_impl.f_metadata_is_zlib_compressed = false;
41262 } else if (self->private_impl.f_chunk_type == 1951945833) {
41266 ((uint64_t)(self->private_impl.f_chunk_length)));
41287 wuffs_base__u32__sat_sub_indirect(&self->private_impl.f_chunk_length, ((uint32_t)((wuffs_base__io__count_since(v_r_mark, ((uint64_t)(iop_a_src - io0_a_src))) & 4294967295))));
41294 self->private_impl.f_metadata_is_zlib_compressed = false;
41308 } else if (self->private_impl.f_chunk_type == 1951945850) {
41309 if (self->private_impl.f_ztxt_ri == self->private_impl.f_ztxt_wi) {
41323 self->private_impl.f_ztxt_hist_pos);
41327 ((uint64_t)(self->private_impl.f_chunk_length)));
41345 wuffs_base__u32__sat_sub_indirect(&self->private_impl.f_chunk_length, ((uint32_t)((wuffs_base__io__count_since(v_r_mark, ((uint64_t)(iop_a_src - io0_a_src))) & 4294967295))));
41362 self->private_impl.f_ztxt_ri = 0;
41363 self->private_impl.f_ztxt_wi = ((uint32_t)(v_num_written));
41364 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_ztxt_hist_pos, v_num_written);
41366 while (self->private_impl.f_ztxt_ri < self->private_impl.f_ztxt_wi) {
41367 v_c2 = WUFFS_PNG__LATIN_1[self->private_data.f_dst_palette[self->private_impl.f_ztxt_ri]];
41378 self->private_impl.f_ztxt_ri += 1;
41387 self->private_impl.f_ztxt_ri += 1;
41392 self->private_impl.f_metadata_is_zlib_compressed = false;
41411 } else if ((self->private_impl.f_chunk_type == 1951945833) && (self->private_impl.f_metadata_fourcc == 1263947862)) {
41413 if (self->private_impl.f_chunk_length <= 0) {
41424 self->private_impl.f_chunk_length -= 1;
41431 if (self->private_impl.f_chunk_length <= 0) {
41432 if (self->private_impl.f_metadata_fourcc == 1263947851) {
41444 self->private_impl.f_chunk_length -= 1;
41459 self->private_impl.f_chunk_length -= 1;
41469 self->private_impl.f_chunk_length -= 1;
41477 if (self->private_impl.f_metadata_fourcc == 1263947851) {
41478 self->private_impl.f_metadata_fourcc = 1263947862;
41479 if (self->private_impl.f_chunk_type == 1951945833) {
41480 if (self->private_impl.f_chunk_length <= 1) {
41484 self->private_impl.f_chunk_length -= 2;
41495 self->private_impl.f_metadata_is_zlib_compressed = false;
41497 self->private_impl.f_metadata_is_zlib_compressed = true;
41511 if ((v_c != 0) && self->private_impl.f_metadata_is_zlib_compressed) {
41515 self->private_impl.f_metadata_fourcc -= 2;
41516 while (self->private_impl.f_metadata_fourcc != 1263947862) {
41517 self->private_impl.f_metadata_fourcc += 1;
41519 if (self->private_impl.f_chunk_length <= 0) {
41523 self->private_impl.f_chunk_length -= 1;
41539 } else if (self->private_impl.f_chunk_type == 1951945850) {
41540 if (self->private_impl.f_chunk_length <= 0) {
41544 self->private_impl.f_chunk_length -= 1;
41558 self->private_impl.f_metadata_is_zlib_compressed = true;
41560 self->private_impl.f_call_sequence = 2;
41567 if (self->private_impl.f_chunk_length != 0) {
41580 self->private_impl.f_metadata_flavor = 0;
41581 self->private_impl.f_metadata_fourcc = 0;
41582 self->private_impl.f_metadata_x = 0;
41583 self->private_impl.f_metadata_y = 0;
41584 self->private_impl.f_metadata_z = 0;
41585 self->private_impl.f_call_sequence = 2;
41590 self->private_impl.p_tell_me_more[0] = 0;
41596 self->private_impl.p_tell_me_more[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
41597 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 4 : 0;
41610 self->private_impl.magic = WUFFS_BASE__DISABLED;
41623 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
41624 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
41628 return wuffs_base__utility__make_range_ii_u64(self->private_impl.f_overall_workbuf_length, self->private_impl.f_overall_workbuf_length);
41638 return (*self->private_impl.choosy_filter_and_swizzle)(self, a_dst, a_workbuf);
41665 v_dst_bytes_per_row0 = (((uint64_t)(self->private_impl.f_frame_rect_x0)) * v_dst_bytes_per_pixel);
41666 v_dst_bytes_per_row1 = (((uint64_t)(self->private_impl.f_frame_rect_x1)) * v_dst_bytes_per_pixel);
41689 v_y = self->private_impl.f_frame_rect_y0;
41690 while (v_y < self->private_impl.f_frame_rect_y1) {
41697 if (self->private_impl.f_pass_bytes_per_row > ((uint64_t)(a_workbuf.len))) {
41700 v_curr_row = wuffs_base__slice_u8__subslice_j(a_workbuf, self->private_impl.f_pass_bytes_per_row);
41701 a_workbuf = wuffs_base__slice_u8__subslice_i(a_workbuf, self->private_impl.f_pass_bytes_per_row);
41714 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, v_dst, v_dst_palette, v_curr_row);
41755 v_dst_bytes_per_row1 = (((uint64_t)(self->private_impl.f_frame_rect_x1)) * v_dst_bytes_per_pixel);
41759 if (self->private_impl.f_depth >= 8) {
41760 v_src_bytes_per_pixel = (((uint64_t)(WUFFS_PNG__NUM_CHANNELS[self->private_impl.f_color_type])) * ((uint64_t)((self->private_impl.f_depth >> 3))));
41762 if (self->private_impl.f_chunk_type_array[0] == 73) {
41763 v_y = ((uint32_t)(WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][5]));
41765 v_y = self->private_impl.f_frame_rect_y0;
41767 while (v_y < self->private_impl.f_frame_rect_y1) {
41777 if (self->private_impl.f_pass_bytes_per_row > ((uint64_t)(a_workbuf.len))) {
41780 v_curr_row = wuffs_base__slice_u8__subslice_j(a_workbuf, self->private_impl.f_pass_bytes_per_row);
41781 a_workbuf = wuffs_base__slice_u8__subslice_i(a_workbuf, self->private_impl.f_pass_bytes_per_row);
41795 if (self->private_impl.f_chunk_type_array[0] == 73) {
41796 v_x = ((uint32_t)(WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][2]));
41798 v_x = self->private_impl.f_frame_rect_x0;
41800 if (self->private_impl.f_depth == 8) {
41801 while (v_x < self->private_impl.f_frame_rect_x1) {
41804 if (self->private_impl.f_color_type == 4) {
41811 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_base__slice_u8__subslice_i(v_dst, v_i), v_dst_palette, wuffs_base__make_slice_u8(v_bits_unpacked, 4));
41813 } else if (((uint32_t)((self->private_impl.f_remap_transparency & 4294967295))) != 0) {
41814 if (self->private_impl.f_color_type == 0) {
41821 if (((uint32_t)((self->private_impl.f_remap_transparency & 4294967295))) == ((((uint32_t)(v_bits_unpacked[0])) << 0) |
41830 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_base__slice_u8__subslice_i(v_dst, v_i), v_dst_palette, wuffs_base__make_slice_u8(v_bits_unpacked, 4));
41839 if (((uint32_t)((self->private_impl.f_remap_transparency & 4294967295))) == ((((uint32_t)(v_bits_unpacked[0])) << 0) |
41848 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_base__slice_u8__subslice_i(v_dst, v_i), v_dst_palette, wuffs_base__make_slice_u8(v_bits_unpacked, 4));
41852 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_base__slice_u8__subslice_i(v_dst, v_i), v_dst_palette, wuffs_base__slice_u8__subslice_j(v_s, v_src_bytes_per_pixel));
41856 v_x += (((uint32_t)(1)) << WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][0]);
41858 } else if (self->private_impl.f_depth < 8) {
41860 if (self->private_impl.f_color_type == 0) {
41861 v_multiplier = WUFFS_PNG__LOW_BIT_DEPTH_MULTIPLIERS[self->private_impl.f_depth];
41863 v_shift = ((8 - self->private_impl.f_depth) & 7);
41865 while (v_x < self->private_impl.f_frame_rect_x1) {
41869 v_packs_remaining = WUFFS_PNG__LOW_BIT_DEPTH_NUM_PACKS[self->private_impl.f_depth];
41874 v_bits_packed = ((uint8_t)(v_bits_packed << self->private_impl.f_depth));
41876 if (((uint32_t)((self->private_impl.f_remap_transparency & 4294967295))) != 0) {
41880 if (((uint32_t)((self->private_impl.f_remap_transparency & 4294967295))) == ((((uint32_t)(v_bits_unpacked[0])) << 0) |
41889 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_base__slice_u8__subslice_i(v_dst, v_i), v_dst_palette, wuffs_base__make_slice_u8(v_bits_unpacked, 4));
41891 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_base__slice_u8__subslice_i(v_dst, v_i), v_dst_palette, wuffs_base__make_slice_u8(v_bits_unpacked, 1));
41894 v_x += (((uint32_t)(1)) << WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][0]);
41897 while (v_x < self->private_impl.f_frame_rect_x1) {
41900 if (self->private_impl.f_color_type == 0) {
41911 if (self->private_impl.f_remap_transparency == ((((uint64_t)(v_bits_unpacked[0])) << 0) |
41929 } else if (self->private_impl.f_color_type == 2) {
41940 if (self->private_impl.f_remap_transparency == ((((uint64_t)(v_bits_unpacked[0])) << 0) |
41958 } else if (self->private_impl.f_color_type == 4) {
41983 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_base__slice_u8__subslice_i(v_dst, v_i), v_dst_palette, wuffs_base__make_slice_u8(v_bits_unpacked, 8));
41985 v_x += (((uint32_t)(1)) << WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][0]);
41989 v_y += (((uint32_t)(1)) << WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][3]);
42072 if (self->private_impl.magic != 0) {
42083 memset(&(self->private_impl), 0, sizeof(self->private_impl));
42087 self->private_impl.magic = WUFFS_BASE__MAGIC;
42088 self->private_impl.vtable_for__wuffs_base__image_decoder.vtable_name =
42090 self->private_impl.vtable_for__wuffs_base__image_decoder.function_pointers =
42137 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
42139 (self->private_impl.magic == WUFFS_BASE__DISABLED)
42144 self->private_impl.magic = WUFFS_BASE__DISABLED;
42147 if ((self->private_impl.active_coroutine != 0) &&
42148 (self->private_impl.active_coroutine != 1)) {
42149 self->private_impl.magic = WUFFS_BASE__DISABLED;
42152 self->private_impl.active_coroutine = 0;
42170 uint32_t coro_susp_point = self->private_impl.p_decode_image_config[0];
42177 if (self->private_impl.f_call_sequence != 0) {
42188 self->private_impl.f_header_id_length = t_0;
42197 self->private_impl.f_header_color_map_type = t_1;
42199 if (self->private_impl.f_header_color_map_type > 1) {
42210 self->private_impl.f_header_image_type = t_2;
42212 if ((self->private_impl.f_header_image_type == 1) ||
42213 (self->private_impl.f_header_image_type == 2) ||
42214 (self->private_impl.f_header_image_type == 3) ||
42215 (self->private_impl.f_header_image_type == 9) ||
42216 (self->private_impl.f_header_image_type == 10) ||
42217 (self->private_impl.f_header_image_type == 11)) {
42249 self->private_impl.f_header_color_map_first_entry_index = t_3;
42278 self->private_impl.f_header_color_map_length = t_4;
42287 self->private_impl.f_header_color_map_entry_size = t_5;
42289 if (self->private_impl.f_header_color_map_type != 0) {
42290 if ((self->private_impl.f_header_color_map_first_entry_index != 0) || (self->private_impl.f_header_color_map_length > 256)) {
42293 } else if ((self->private_impl.f_header_color_map_entry_size != 15) &&
42294 (self->private_impl.f_header_color_map_entry_size != 16) &&
42295 (self->private_impl.f_header_color_map_entry_size != 24) &&
42296 (self->private_impl.f_header_color_map_entry_size != 32)) {
42301 if ((self->private_impl.f_header_color_map_first_entry_index != 0) || (self->private_impl.f_header_color_map_length != 0) || (self->private_impl.f_header_color_map_entry_size != 0)) {
42342 self->private_impl.f_width = t_6;
42371 self->private_impl.f_height = t_7;
42380 self->private_impl.f_header_pixel_depth = t_8;
42382 if ((self->private_impl.f_header_pixel_depth != 1) &&
42383 (self->private_impl.f_header_pixel_depth != 8) &&
42384 (self->private_impl.f_header_pixel_depth != 15) &&
42385 (self->private_impl.f_header_pixel_depth != 16) &&
42386 (self->private_impl.f_header_pixel_depth != 24) &&
42387 (self->private_impl.f_header_pixel_depth != 32)) {
42391 if ((self->private_impl.f_header_image_type | 8) == 9) {
42392 self->private_impl.f_scratch_bytes_per_pixel = 1;
42393 self->private_impl.f_src_bytes_per_pixel = 1;
42394 self->private_impl.f_src_pixfmt = 2164523016;
42395 self->private_impl.f_opaque = ((self->private_impl.f_header_color_map_entry_size == 15) || (self->private_impl.f_header_color_map_entry_size == 24));
42396 } else if ((self->private_impl.f_header_image_type | 8) == 10) {
42397 if ((self->private_impl.f_header_pixel_depth == 15) || (self->private_impl.f_header_pixel_depth == 16)) {
42398 self->private_impl.f_scratch_bytes_per_pixel = 4;
42399 self->private_impl.f_src_bytes_per_pixel = 0;
42400 self->private_impl.f_src_pixfmt = 2164295816;
42401 } else if (self->private_impl.f_header_pixel_depth == 24) {
42402 self->private_impl.f_scratch_bytes_per_pixel = 3;
42403 self->private_impl.f_src_bytes_per_pixel = 3;
42404 self->private_impl.f_src_pixfmt = 2147485832;
42405 self->private_impl.f_opaque = true;
42406 } else if (self->private_impl.f_header_pixel_depth == 32) {
42407 self->private_impl.f_scratch_bytes_per_pixel = 4;
42408 self->private_impl.f_src_bytes_per_pixel = 4;
42409 self->private_impl.f_src_pixfmt = 2164295816;
42415 if (self->private_impl.f_header_pixel_depth == 8) {
42416 self->private_impl.f_scratch_bytes_per_pixel = 1;
42417 self->private_impl.f_src_bytes_per_pixel = 1;
42418 self->private_impl.f_src_pixfmt = 536870920;
42419 self->private_impl.f_opaque = true;
42432 self->private_impl.f_header_image_descriptor = t_9;
42434 if ((self->private_impl.f_header_image_descriptor & 16) != 0) {
42438 self->private_data.s_decode_image_config[0].scratch = ((uint32_t)(self->private_impl.f_header_id_length));
42447 if (self->private_impl.f_header_color_map_type != 0) {
42448 while (v_i < ((uint32_t)(self->private_impl.f_header_color_map_length))) {
42449 if (self->private_impl.f_header_color_map_entry_size == 24) {
42483 } else if (self->private_impl.f_header_color_map_entry_size == 32) {
42565 self->private_impl.f_frame_config_io_position = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src)));
42569 self->private_impl.f_src_pixfmt,
42571 self->private_impl.f_width,
42572 self->private_impl.f_height,
42573 self->private_impl.f_frame_config_io_position,
42574 self->private_impl.f_opaque);
42576 self->private_impl.f_call_sequence = 3;
42580 self->private_impl.p_decode_image_config[0] = 0;
42586 self->private_impl.p_decode_image_config[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
42587 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0;
42597 self->private_impl.magic = WUFFS_BASE__DISABLED;
42612 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
42614 (self->private_impl.magic == WUFFS_BASE__DISABLED)
42619 self->private_impl.magic = WUFFS_BASE__DISABLED;
42622 if ((self->private_impl.active_coroutine != 0) &&
42623 (self->private_impl.active_coroutine != 2)) {
42624 self->private_impl.magic = WUFFS_BASE__DISABLED;
42627 self->private_impl.active_coroutine = 0;
42641 uint32_t coro_susp_point = self->private_impl.p_decode_frame_config[0];
42645 if (self->private_impl.f_call_sequence < 3) {
42657 } else if (self->private_impl.f_call_sequence == 3) {
42658 if (self->private_impl.f_frame_config_io_position != wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src)))) {
42662 } else if (self->private_impl.f_call_sequence == 4) {
42663 self->private_impl.f_call_sequence = 255;
42676 self->private_impl.f_width,
42677 self->private_impl.f_height),
42680 self->private_impl.f_frame_config_io_position,
42682 self->private_impl.f_opaque,
42686 self->private_impl.f_call_sequence = 4;
42689 self->private_impl.p_decode_frame_config[0] = 0;
42695 self->private_impl.p_decode_frame_config[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
42696 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 2 : 0;
42705 self->private_impl.magic = WUFFS_BASE__DISABLED;
42723 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
42725 (self->private_impl.magic == WUFFS_BASE__DISABLED)
42730 self->private_impl.magic = WUFFS_BASE__DISABLED;
42733 if ((self->private_impl.active_coroutine != 0) &&
42734 (self->private_impl.active_coroutine != 3)) {
42735 self->private_impl.magic = WUFFS_BASE__DISABLED;
42738 self->private_impl.active_coroutine = 0;
42773 uint32_t coro_susp_point = self->private_impl.p_decode_frame[0];
42787 if (self->private_impl.f_call_sequence < 4) {
42799 } else if (self->private_impl.f_call_sequence == 4) {
42804 if (self->private_impl.f_header_color_map_type != 0) {
42807 v_status = wuffs_base__pixel_swizzler__prepare(&self->private_impl.f_swizzler,
42810 wuffs_base__utility__make_pixel_format(self->private_impl.f_src_pixfmt),
42830 if ((self->private_impl.f_header_image_descriptor & 32) == 0) {
42831 v_dst_y = ((uint32_t)(self->private_impl.f_height - 1));
42833 if ((self->private_impl.f_header_image_type & 8) == 0) {
42834 v_lit_length = self->private_impl.f_width;
42840 while (v_dst_y < self->private_impl.f_height) {
42848 while (v_dst_x < self->private_impl.f_width) {
42849 if (self->private_impl.f_src_bytes_per_pixel > 0) {
42852 v_num_pixels64 = (((uint64_t)(io2_a_src - iop_a_src)) / ((uint64_t)(self->private_impl.f_src_bytes_per_pixel)));
42855 v_num_src_bytes = (v_num_pixels32 * self->private_impl.f_src_bytes_per_pixel);
42865 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, v_dst, v_dst_palette, wuffs_base__io__since(v_mark, ((uint64_t)(iop_a_src - io0_a_src)), io0_a_src));
42880 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, v_dst, v_dst_palette, wuffs_base__slice_u8__subslice_j(wuffs_base__make_slice_u8(self->private_data.f_scratch, 4), self->private_impl.f_scratch_bytes_per_pixel));
42894 if ((v_lit_length + v_dst_x) > self->private_impl.f_width) {
42899 if (self->private_impl.f_src_bytes_per_pixel == 1) {
42909 } else if (self->private_impl.f_src_bytes_per_pixel == 3) {
42940 if ((v_run_length + v_dst_x) > self->private_impl.f_width) {
42962 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, v_dst, v_dst_palette, wuffs_base__make_slice_u8(self->private_data.f_scratch, 4));
42970 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, v_dst, v_dst_palette, wuffs_base__slice_u8__subslice_j(wuffs_base__make_slice_u8(self->private_data.f_scratch, 4), self->private_impl.f_scratch_bytes_per_pixel));
42984 if ((v_lit_length + v_dst_x) > self->private_impl.f_width) {
43005 if ((v_run_length + v_dst_x) > self->private_impl.f_width) {
43014 if ((self->private_impl.f_header_image_descriptor & 32) == 0) {
43019 if ((self->private_impl.f_header_image_type & 8) == 0) {
43020 v_lit_length = self->private_impl.f_width;
43026 self->private_impl.f_call_sequence = 255;
43029 self->private_impl.p_decode_frame[0] = 0;
43035 self->private_impl.p_decode_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
43036 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 3 : 0;
43053 self->private_impl.magic = WUFFS_BASE__DISABLED;
43066 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
43067 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
43074 self->private_impl.f_width,
43075 self->private_impl.f_height);
43086 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
43087 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
43102 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
43103 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
43107 if (self->private_impl.f_call_sequence > 3) {
43121 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
43122 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
43126 if (self->private_impl.f_call_sequence > 4) {
43142 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
43144 (self->private_impl.magic == WUFFS_BASE__DISABLED)
43149 if (self->private_impl.f_call_sequence < 3) {
43155 self->private_impl.f_call_sequence = 3;
43156 self->private_impl.f_frame_config_io_position = a_io_position;
43181 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
43183 (self->private_impl.magic == WUFFS_BASE__DISABLED)
43188 self->private_impl.magic = WUFFS_BASE__DISABLED;
43191 if ((self->private_impl.active_coroutine != 0) &&
43192 (self->private_impl.active_coroutine != 4)) {
43193 self->private_impl.magic = WUFFS_BASE__DISABLED;
43196 self->private_impl.active_coroutine = 0;
43207 self->private_impl.magic = WUFFS_BASE__DISABLED;
43220 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
43221 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
43304 if (self->private_impl.magic != 0) {
43315 memset(&(self->private_impl), 0, sizeof(self->private_impl));
43319 self->private_impl.magic = WUFFS_BASE__MAGIC;
43320 self->private_impl.vtable_for__wuffs_base__image_decoder.vtable_name =
43322 self->private_impl.vtable_for__wuffs_base__image_decoder.function_pointers =
43369 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
43371 (self->private_impl.magic == WUFFS_BASE__DISABLED)
43376 self->private_impl.magic = WUFFS_BASE__DISABLED;
43379 if ((self->private_impl.active_coroutine != 0) &&
43380 (self->private_impl.active_coroutine != 1)) {
43381 self->private_impl.magic = WUFFS_BASE__DISABLED;
43384 self->private_impl.active_coroutine = 0;
43403 uint32_t coro_susp_point = self->private_impl.p_decode_image_config[0];
43411 if (self->private_impl.f_call_sequence != 0) {
43458 self->private_impl.f_width = v_x32;
43460 self->private_impl.f_height = v_x32;
43464 self->private_impl.f_frame_config_io_position = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src)));
43470 self->private_impl.f_width,
43471 self->private_impl.f_height,
43472 self->private_impl.f_frame_config_io_position,
43475 self->private_impl.f_call_sequence = 3;
43479 self->private_impl.p_decode_image_config[0] = 0;
43485 self->private_impl.p_decode_image_config[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
43486 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0;
43497 self->private_impl.magic = WUFFS_BASE__DISABLED;
43512 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
43514 (self->private_impl.magic == WUFFS_BASE__DISABLED)
43519 self->private_impl.magic = WUFFS_BASE__DISABLED;
43522 if ((self->private_impl.active_coroutine != 0) &&
43523 (self->private_impl.active_coroutine != 2)) {
43524 self->private_impl.magic = WUFFS_BASE__DISABLED;
43527 self->private_impl.active_coroutine = 0;
43541 uint32_t coro_susp_point = self->private_impl.p_decode_frame_config[0];
43545 if (self->private_impl.f_call_sequence < 3) {
43557 } else if (self->private_impl.f_call_sequence == 3) {
43558 if (self->private_impl.f_frame_config_io_position != wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src)))) {
43562 } else if (self->private_impl.f_call_sequence == 4) {
43563 self->private_impl.f_call_sequence = 255;
43576 self->private_impl.f_width,
43577 self->private_impl.f_height),
43580 self->private_impl.f_frame_config_io_position,
43586 self->private_impl.f_call_sequence = 4;
43589 self->private_impl.p_decode_frame_config[0] = 0;
43595 self->private_impl.p_decode_frame_config[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
43596 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 2 : 0;
43605 self->private_impl.magic = WUFFS_BASE__DISABLED;
43623 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
43625 (self->private_impl.magic == WUFFS_BASE__DISABLED)
43630 self->private_impl.magic = WUFFS_BASE__DISABLED;
43633 if ((self->private_impl.active_coroutine != 0) &&
43634 (self->private_impl.active_coroutine != 3)) {
43635 self->private_impl.magic = WUFFS_BASE__DISABLED;
43638 self->private_impl.active_coroutine = 0;
43664 uint32_t coro_susp_point = self->private_impl.p_decode_frame[0];
43675 if (self->private_impl.f_call_sequence < 4) {
43687 } else if (self->private_impl.f_call_sequence == 4) {
43692 v_status = wuffs_base__pixel_swizzler__prepare(&self->private_impl.f_swizzler,
43715 if (self->private_impl.f_width > 0) {
43717 while (v_dst_y < self->private_impl.f_height) {
43720 while (v_dst_x < self->private_impl.f_width) {
43741 wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, v_dst, wuffs_base__utility__empty_slice_u8(), wuffs_base__make_slice_u8(v_src, 1));
43750 self->private_impl.f_call_sequence = 255;
43753 self->private_impl.p_decode_frame[0] = 0;
43759 self->private_impl.p_decode_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
43760 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 3 : 0;
43774 self->private_impl.magic = WUFFS_BASE__DISABLED;
43787 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
43788 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
43795 self->private_impl.f_width,
43796 self->private_impl.f_height);
43807 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
43808 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
43823 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
43824 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
43828 if (self->private_impl.f_call_sequence > 3) {
43842 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
43843 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
43847 if (self->private_impl.f_call_sequence > 4) {
43863 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
43865 (self->private_impl.magic == WUFFS_BASE__DISABLED)
43870 if (self->private_impl.f_call_sequence < 3) {
43876 self->private_impl.f_call_sequence = 3;
43877 self->private_impl.f_frame_config_io_position = a_io_position;
43902 if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
43904 (self->private_impl.magic == WUFFS_BASE__DISABLED)
43909 self->private_impl.magic = WUFFS_BASE__DISABLED;
43912 if ((self->private_impl.active_coroutine != 0) &&
43913 (self->private_impl.active_coroutine != 4)) {
43914 self->private_impl.magic = WUFFS_BASE__DISABLED;
43917 self->private_impl.active_coroutine = 0;
43928 self->private_impl.magic = WUFFS_BASE__DISABLED;
43941 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
43942 (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
44105 namespace private_impl {
44116 // all of the "const private_impl::ErrorMessages FooBarErrorMessages" values
44120 return s ? s : "wuffs_aux::private_impl: unknown error";
44261 } // namespace private_impl
44861 const private_impl::ErrorMessages DecodeImageErrorMessages = {
44873 return private_impl::AdvanceIOBufferTo(DecodeImageErrorMessages, input,
44899 return private_impl::HandleMetadata(DecodeImageErrorMessages, input, io_buf,