Lines Matching defs:img
226 static void image_ctx_free(ImageContext *img)
230 av_free(img->color_cache);
231 if (img->role != IMAGE_ROLE_ARGB && !img->is_alpha_primary)
232 av_frame_free(&img->frame);
233 if (img->huffman_groups) {
234 for (i = 0; i < img->nb_huffman_groups; i++) {
236 ff_free_vlc(&img->huffman_groups[i * HUFFMAN_CODES_PER_META_CODE + j].vlc);
238 av_free(img->huffman_groups);
240 memset(img, 0, sizeof(*img));
434 ImageContext *img;
443 img = &s->image[IMAGE_ROLE_ENTROPY];
444 img->size_reduction = block_bits;
449 for (y = 0; y < img->frame->height; y++) {
450 for (x = 0; x < img->frame->width; x++) {
451 int p0 = GET_PIXEL_COMP(img->frame, x, y, 1);
452 int p1 = GET_PIXEL_COMP(img->frame, x, y, 2);
496 ImageContext *img;
516 img = &s->image[IMAGE_ROLE_COLOR_INDEXING];
517 img->size_reduction = width_bits;
522 ct = img->frame->data[0] + 4;
523 for (x = 4; x < img->frame->width * 4; x++, ct++)
529 static HuffReader *get_huffman_group(WebPContext *s, ImageContext *img,
543 return &img->huffman_groups[group * HUFFMAN_CODES_PER_META_CODE];
546 static av_always_inline void color_cache_put(ImageContext *img, uint32_t c)
548 uint32_t cache_idx = (0x1E35A7BD * c) >> (32 - img->color_cache_bits);
549 img->color_cache[cache_idx] = c;
555 ImageContext *img;
559 img = &s->image[role];
560 img->role = role;
562 if (!img->frame) {
563 img->frame = av_frame_alloc();
564 if (!img->frame)
568 img->frame->format = AV_PIX_FMT_ARGB;
569 img->frame->width = w;
570 img->frame->height = h;
572 if (role == IMAGE_ROLE_ARGB && !img->is_alpha_primary) {
573 ret = ff_thread_get_buffer(s->avctx, img->frame, 0);
575 ret = av_frame_get_buffer(img->frame, 1);
580 img->color_cache_bits = get_bits(&s->gb, 4);
581 if (img->color_cache_bits < 1 || img->color_cache_bits > 11) {
583 img->color_cache_bits);
586 img->color_cache = av_calloc(1 << img->color_cache_bits,
587 sizeof(*img->color_cache));
588 if (!img->color_cache)
591 img->color_cache_bits = 0;
594 img->nb_huffman_groups = 1;
599 img->nb_huffman_groups = s->nb_huffman_groups;
601 img->huffman_groups = av_calloc(img->nb_huffman_groups,
603 sizeof(*img->huffman_groups));
604 if (!img->huffman_groups)
607 for (i = 0; i < img->nb_huffman_groups; i++) {
608 hg = &img->huffman_groups[i * HUFFMAN_CODES_PER_META_CODE];
611 if (!j && img->color_cache_bits > 0)
612 alphabet_size += 1 << img->color_cache_bits;
624 width = img->frame->width;
629 while (y < img->frame->height) {
635 hg = get_huffman_group(s, img, x, y);
639 uint8_t *p = GET_PIXEL(img->frame, x, y);
644 if (img->color_cache_bits)
645 color_cache_put(img, AV_RB32(p));
710 uint8_t *p_ref = GET_PIXEL(img->frame, ref_x, ref_y);
711 uint8_t *p = GET_PIXEL(img->frame, x, y);
714 if (img->color_cache_bits)
715 color_cache_put(img, AV_RB32(p));
726 if (y == img->frame->height || ref_y == img->frame->height)
731 uint8_t *p = GET_PIXEL(img->frame, x, y);
734 if (!img->color_cache_bits) {
738 if (cache_idx >= 1 << img->color_cache_bits) {
743 AV_WB32(p, img->color_cache[cache_idx]);
925 ImageContext *img = &s->image[IMAGE_ROLE_ARGB];
929 for (y = 0; y < img->frame->height; y++) {
948 inverse_prediction(img->frame, m, x, y);
962 ImageContext *img, *cimg;
966 img = &s->image[IMAGE_ROLE_ARGB];
969 for (y = 0; y < img->frame->height; y++) {
974 p = GET_PIXEL(img->frame, x, y);
987 ImageContext *img = &s->image[IMAGE_ROLE_ARGB];
989 for (y = 0; y < img->frame->height; y++) {
991 uint8_t *p = GET_PIXEL(img->frame, x, y);
1001 ImageContext *img;
1006 img = &s->image[IMAGE_ROLE_ARGB];
1014 line = av_malloc(img->frame->linesize[0] + AV_INPUT_BUFFER_PADDING_SIZE);
1018 for (y = 0; y < img->frame->height; y++) {
1019 p = GET_PIXEL(img->frame, 0, y);
1020 memcpy(line, p, img->frame->linesize[0]);
1021 init_get_bits(&gb_g, line, img->frame->linesize[0] * 8);
1024 for (x = 0; x < img->frame->width; x++) {
1025 p = GET_PIXEL(img->frame, x, y);
1039 if (img->frame->height * img->frame->width > 300) {
1046 for (y = 0; y < img->frame->height; y++) {
1047 for (x = 0; x < img->frame->width; x++) {
1048 p = GET_PIXEL(img->frame, x, y);
1054 for (y = 0; y < img->frame->height; y++) {
1055 for (x = 0; x < img->frame->width; x++) {
1056 p = GET_PIXEL(img->frame, x, y);