FFmpeg
Loading...
Searching...
No Matches
webp.c File Reference

WebP image decoder. More...

#include "config_components.h"
#include "libavutil/colorspace.h"
#include "libavutil/imgutils.h"
#include "libavutil/mem.h"
#include "avcodec.h"
#include "bytestream.h"
#include "codec_internal.h"
#include "decode.h"
#include "exif_internal.h"
#include "get_bits.h"
#include "thread.h"
#include "tiff_common.h"
#include "vp8.h"

Go to the source code of this file.

Data Structures

struct  HuffReader
 
struct  ImageContext
 
struct  WebPContext
 

Macros

#define BITSTREAM_READER_LE
 
#define VP8X_FLAG_ANIMATION   0x02
 
#define VP8X_FLAG_XMP_METADATA   0x04
 
#define VP8X_FLAG_EXIF_METADATA   0x08
 
#define VP8X_FLAG_ALPHA   0x10
 
#define VP8X_FLAG_ICC   0x20
 
#define MAX_PALETTE_SIZE   256
 
#define MAX_CACHE_BITS   11
 
#define NUM_CODE_LENGTH_CODES   19
 
#define HUFFMAN_CODES_PER_META_CODE   5
 
#define NUM_LITERAL_CODES   256
 
#define NUM_LENGTH_CODES   24
 
#define NUM_DISTANCE_CODES   40
 
#define NUM_SHORT_DISTANCES   120
 
#define MAX_HUFFMAN_CODE_LENGTH   15
 
#define GET_PIXEL(frame, x, y)
 
#define GET_PIXEL_COMP(frame, x, y, c)
 
#define PARSE_BLOCK_SIZE(w, h)
 

Typedefs

typedef void(* inv_predict_func) (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 

Enumerations

enum  AlphaCompression { ALPHA_COMPRESSION_NONE , ALPHA_COMPRESSION_VP8L }
 
enum  AlphaFilter { ALPHA_FILTER_NONE , ALPHA_FILTER_HORIZONTAL , ALPHA_FILTER_VERTICAL , ALPHA_FILTER_GRADIENT }
 
enum  TransformType { PREDICTOR_TRANSFORM = 0 , COLOR_TRANSFORM = 1 , SUBTRACT_GREEN = 2 , COLOR_INDEXING_TRANSFORM = 3 }
 
enum  PredictionMode {
  PRED_MODE_BLACK , PRED_MODE_L , PRED_MODE_T , PRED_MODE_TR ,
  PRED_MODE_TL , PRED_MODE_AVG_T_AVG_L_TR , PRED_MODE_AVG_L_TL , PRED_MODE_AVG_L_T ,
  PRED_MODE_AVG_TL_T , PRED_MODE_AVG_T_TR , PRED_MODE_AVG_AVG_L_TL_AVG_T_TR , PRED_MODE_SELECT ,
  PRED_MODE_ADD_SUBTRACT_FULL , PRED_MODE_ADD_SUBTRACT_HALF
}
 
enum  HuffmanIndex {
  HUFF_IDX_GREEN = 0 , HUFF_IDX_RED = 1 , HUFF_IDX_BLUE = 2 , HUFF_IDX_ALPHA = 3 ,
  HUFF_IDX_DIST = 4
}
 
enum  ImageRole {
  IMAGE_ROLE_ARGB , IMAGE_ROLE_ENTROPY , IMAGE_ROLE_PREDICTOR , IMAGE_ROLE_COLOR_TRANSFORM ,
  IMAGE_ROLE_COLOR_INDEXING , IMAGE_ROLE_NB
}
 

Functions

static void image_ctx_free (ImageContext *img)
 
static int huff_reader_get_symbol (HuffReader *r, GetBitContext *gb)
 
static int huff_reader_build_canonical (HuffReader *r, const uint8_t *code_lengths, uint16_t len_counts[MAX_HUFFMAN_CODE_LENGTH+1], uint8_t lens[], uint16_t syms[], int alphabet_size, void *logctx)
 
static void read_huffman_code_simple (WebPContext *s, HuffReader *hc)
 
static int read_huffman_code_normal (WebPContext *s, HuffReader *hc, int alphabet_size)
 
static int decode_entropy_coded_image (WebPContext *s, enum ImageRole role, int w, int h)
 
static int decode_entropy_image (WebPContext *s)
 
static int parse_transform_predictor (WebPContext *s)
 
static int parse_transform_color (WebPContext *s)
 
static int parse_transform_color_indexing (WebPContext *s)
 
static HuffReaderget_huffman_group (WebPContext *s, ImageContext *img, int x, int y)
 
static av_always_inline void color_cache_put (ImageContext *img, uint32_t c)
 
static void inv_predict_0 (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 
static void inv_predict_1 (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 
static void inv_predict_2 (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 
static void inv_predict_3 (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 
static void inv_predict_4 (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 
static void inv_predict_5 (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 
static void inv_predict_6 (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 
static void inv_predict_7 (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 
static void inv_predict_8 (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 
static void inv_predict_9 (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 
static void inv_predict_10 (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 
static void inv_predict_11 (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 
static void inv_predict_12 (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 
static av_always_inline uint8_t clamp_add_subtract_half (int a, int b, int c)
 
static void inv_predict_13 (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
 
static void inverse_prediction (AVFrame *frame, enum PredictionMode m, int x, int y)
 
static int apply_predictor_transform (WebPContext *s)
 
static av_always_inline uint8_t color_transform_delta (uint8_t color_pred, uint8_t color)
 
static int apply_color_transform (WebPContext *s)
 
static int apply_subtract_green_transform (WebPContext *s)
 
static int apply_color_indexing_transform (WebPContext *s)
 
static void update_canvas_size (AVCodecContext *avctx, int w, int h)
 
static int vp8_lossless_decode_frame (AVCodecContext *avctx, AVFrame *p, int *got_frame, const uint8_t *data_start, unsigned int data_size, int is_alpha_chunk)
 
static void alpha_inverse_prediction (AVFrame *frame, enum AlphaFilter m)
 
static int vp8_lossy_decode_alpha (AVCodecContext *avctx, AVFrame *p, const uint8_t *data_start, unsigned int data_size)
 
static int vp8_lossy_decode_frame (AVCodecContext *avctx, AVFrame *p, int *got_frame, uint8_t *data_start, unsigned int data_size)
 
static int webp_decode_frame (AVCodecContext *avctx, AVFrame *p, int *got_frame, AVPacket *avpkt)
 
static av_cold int webp_decode_init (AVCodecContext *avctx)
 
static av_cold int webp_decode_close (AVCodecContext *avctx)
 

Variables

static const uint16_t alphabet_sizes [HUFFMAN_CODES_PER_META_CODE]
 
static const uint8_t code_length_code_order [NUM_CODE_LENGTH_CODES]
 
static const int8_t lz77_distance_offsets [NUM_SHORT_DISTANCES][2]
 
static const inv_predict_func inverse_predict [14]
 
const FFCodec ff_webp_decoder
 

Detailed Description

WebP image decoder.

Author
Aneesh Dogra anees.nosp@m.h@su.nosp@m.garla.nosp@m.bs.o.nosp@m.rg Container and Lossy decoding
Justin Ruggles justi.nosp@m.n.ru.nosp@m.ggles.nosp@m.@gma.nosp@m.il.co.nosp@m.m Lossless decoder Compressed alpha for lossy
James Almer jamri.nosp@m.al@g.nosp@m.mail..nosp@m.com Exif metadata ICC profile
Thilo Borgmann <thilo.borgmann at mail.de> XMP metadata
Josef Zlomek, Pexeso Inc. josef.nosp@m.@pex.nosp@m..com Animation

Definition in file webp.c.

Macro Definition Documentation

◆ BITSTREAM_READER_LE

#define BITSTREAM_READER_LE

Definition at line 52 of file webp.c.

◆ VP8X_FLAG_ANIMATION

#define VP8X_FLAG_ANIMATION   0x02

Definition at line 63 of file webp.c.

Referenced by webp_anim_probe(), and webp_anim_read_header().

◆ VP8X_FLAG_XMP_METADATA

#define VP8X_FLAG_XMP_METADATA   0x04

Definition at line 64 of file webp.c.

Referenced by webp_anim_read_packet(), and webp_decode_frame().

◆ VP8X_FLAG_EXIF_METADATA

#define VP8X_FLAG_EXIF_METADATA   0x08

Definition at line 65 of file webp.c.

Referenced by webp_anim_read_packet(), and webp_decode_frame().

◆ VP8X_FLAG_ALPHA

#define VP8X_FLAG_ALPHA   0x10

Definition at line 66 of file webp.c.

Referenced by webp_decode_frame().

◆ VP8X_FLAG_ICC

#define VP8X_FLAG_ICC   0x20

Definition at line 67 of file webp.c.

Referenced by webp_anim_read_header(), and webp_decode_frame().

◆ MAX_PALETTE_SIZE

#define MAX_PALETTE_SIZE   256

Definition at line 69 of file webp.c.

◆ MAX_CACHE_BITS

#define MAX_CACHE_BITS   11

Definition at line 70 of file webp.c.

◆ NUM_CODE_LENGTH_CODES

#define NUM_CODE_LENGTH_CODES   19

Definition at line 71 of file webp.c.

Referenced by read_huffman_code_normal().

◆ HUFFMAN_CODES_PER_META_CODE

#define HUFFMAN_CODES_PER_META_CODE   5

Definition at line 72 of file webp.c.

Referenced by decode_entropy_coded_image(), get_huffman_group(), and image_ctx_free().

◆ NUM_LITERAL_CODES

#define NUM_LITERAL_CODES   256

Definition at line 73 of file webp.c.

Referenced by decode_entropy_coded_image().

◆ NUM_LENGTH_CODES

#define NUM_LENGTH_CODES   24

Definition at line 74 of file webp.c.

Referenced by decode_entropy_coded_image().

◆ NUM_DISTANCE_CODES

#define NUM_DISTANCE_CODES   40

Definition at line 75 of file webp.c.

◆ NUM_SHORT_DISTANCES

#define NUM_SHORT_DISTANCES   120

Definition at line 76 of file webp.c.

Referenced by decode_entropy_coded_image().

◆ MAX_HUFFMAN_CODE_LENGTH

#define MAX_HUFFMAN_CODE_LENGTH   15

Definition at line 77 of file webp.c.

Referenced by huff_reader_build_canonical(), and read_huffman_code_normal().

◆ GET_PIXEL

#define GET_PIXEL ( frame,
x,
y )
Value:
((frame)->data[0] + (y) * frame->linesize[0] + 4 * (x))
static AVFrame * frame

Definition at line 227 of file webp.c.

Referenced by apply_color_indexing_transform(), apply_color_transform(), apply_subtract_green_transform(), decode_entropy_coded_image(), inverse_prediction(), and vp8_lossy_decode_alpha().

◆ GET_PIXEL_COMP

#define GET_PIXEL_COMP ( frame,
x,
y,
c )
Value:
(*((frame)->data[0] + (y) * frame->linesize[0] + 4 * (x) + c))
static double c[64]

Definition at line 230 of file webp.c.

Referenced by apply_predictor_transform(), decode_entropy_image(), and get_huffman_group().

◆ PARSE_BLOCK_SIZE

#define PARSE_BLOCK_SIZE ( w,
h )
Value:
do { \
block_bits = get_bits(&s->gb, 3) + 2; \
blocks_w = FFALIGN((w), 1 << block_bits) >> block_bits; \
blocks_h = FFALIGN((h), 1 << block_bits) >> block_bits; \
} while (0)
#define s(width, name)
Definition cbs_vp9.c:198
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
Definition get_bits.h:337
static const uint8_t block_bits[]
Definition imm4.c:104
uint8_t w
Definition llvidencdsp.c:39
#define FFALIGN(x, a)
Definition macros.h:78

Definition at line 432 of file webp.c.

Referenced by decode_entropy_image(), parse_transform_color(), and parse_transform_predictor().

Typedef Documentation

◆ inv_predict_func

typedef void(* inv_predict_func) (uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)

Definition at line 899 of file webp.c.

Enumeration Type Documentation

◆ AlphaCompression

Enumerator
ALPHA_COMPRESSION_NONE 
ALPHA_COMPRESSION_VP8L 

Definition at line 107 of file webp.c.

◆ AlphaFilter

Enumerator
ALPHA_FILTER_NONE 
ALPHA_FILTER_HORIZONTAL 
ALPHA_FILTER_VERTICAL 
ALPHA_FILTER_GRADIENT 

Definition at line 112 of file webp.c.

◆ TransformType

Enumerator
PREDICTOR_TRANSFORM 
COLOR_TRANSFORM 
SUBTRACT_GREEN 
COLOR_INDEXING_TRANSFORM 

Definition at line 119 of file webp.c.

◆ PredictionMode

Enumerator
PRED_MODE_BLACK 
PRED_MODE_L 
PRED_MODE_T 
PRED_MODE_TR 
PRED_MODE_TL 
PRED_MODE_AVG_T_AVG_L_TR 
PRED_MODE_AVG_L_TL 
PRED_MODE_AVG_L_T 
PRED_MODE_AVG_TL_T 
PRED_MODE_AVG_T_TR 
PRED_MODE_AVG_AVG_L_TL_AVG_T_TR 
PRED_MODE_SELECT 
PRED_MODE_ADD_SUBTRACT_FULL 
PRED_MODE_ADD_SUBTRACT_HALF 

Definition at line 126 of file webp.c.

◆ HuffmanIndex

Enumerator
HUFF_IDX_GREEN 
HUFF_IDX_RED 
HUFF_IDX_BLUE 
HUFF_IDX_ALPHA 
HUFF_IDX_DIST 

Definition at line 143 of file webp.c.

◆ ImageRole

enum ImageRole
Enumerator
IMAGE_ROLE_ARGB 
IMAGE_ROLE_ENTROPY 
IMAGE_ROLE_PREDICTOR 
IMAGE_ROLE_COLOR_TRANSFORM 
IMAGE_ROLE_COLOR_INDEXING 
IMAGE_ROLE_NB 

Definition at line 157 of file webp.c.

Function Documentation

◆ image_ctx_free()

static void image_ctx_free ( ImageContext * img)
static

Definition at line 233 of file webp.c.

Referenced by vp8_lossless_decode_frame().

◆ huff_reader_get_symbol()

static int huff_reader_get_symbol ( HuffReader * r,
GetBitContext * gb )
static

Definition at line 250 of file webp.c.

Referenced by decode_entropy_coded_image(), and read_huffman_code_normal().

◆ huff_reader_build_canonical()

static int huff_reader_build_canonical ( HuffReader * r,
const uint8_t * code_lengths,
uint16_t len_counts[MAX_HUFFMAN_CODE_LENGTH+1],
uint8_t lens[],
uint16_t syms[],
int alphabet_size,
void * logctx )
static

Definition at line 261 of file webp.c.

Referenced by read_huffman_code_normal().

◆ read_huffman_code_simple()

static void read_huffman_code_simple ( WebPContext * s,
HuffReader * hc )
static

Definition at line 306 of file webp.c.

Referenced by decode_entropy_coded_image().

◆ read_huffman_code_normal()

static int read_huffman_code_normal ( WebPContext * s,
HuffReader * hc,
int alphabet_size )
static

Definition at line 321 of file webp.c.

Referenced by decode_entropy_coded_image().

◆ decode_entropy_coded_image()

static int decode_entropy_coded_image ( WebPContext * s,
enum ImageRole role,
int w,
int h )
static

◆ decode_entropy_image()

static int decode_entropy_image ( WebPContext * s)
static

Definition at line 438 of file webp.c.

Referenced by decode_entropy_coded_image().

◆ parse_transform_predictor()

static int parse_transform_predictor ( WebPContext * s)
static

Definition at line 468 of file webp.c.

Referenced by vp8_lossless_decode_frame().

◆ parse_transform_color()

static int parse_transform_color ( WebPContext * s)
static

Definition at line 484 of file webp.c.

Referenced by vp8_lossless_decode_frame().

◆ parse_transform_color_indexing()

static int parse_transform_color_indexing ( WebPContext * s)
static

Definition at line 500 of file webp.c.

Referenced by vp8_lossless_decode_frame().

◆ get_huffman_group()

static HuffReader * get_huffman_group ( WebPContext * s,
ImageContext * img,
int x,
int y )
static

Definition at line 535 of file webp.c.

Referenced by decode_entropy_coded_image().

◆ color_cache_put()

static av_always_inline void color_cache_put ( ImageContext * img,
uint32_t c )
static

Definition at line 552 of file webp.c.

Referenced by decode_entropy_coded_image().

◆ inv_predict_0()

static void inv_predict_0 ( uint8_t * p,
const uint8_t * p_l,
const uint8_t * p_tl,
const uint8_t * p_t,
const uint8_t * p_tr )
static

Definition at line 765 of file webp.c.

◆ inv_predict_1()

static void inv_predict_1 ( uint8_t * p,
const uint8_t * p_l,
const uint8_t * p_tl,
const uint8_t * p_t,
const uint8_t * p_tr )
static

Definition at line 772 of file webp.c.

◆ inv_predict_2()

static void inv_predict_2 ( uint8_t * p,
const uint8_t * p_l,
const uint8_t * p_tl,
const uint8_t * p_t,
const uint8_t * p_tr )
static

Definition at line 779 of file webp.c.

◆ inv_predict_3()

static void inv_predict_3 ( uint8_t * p,
const uint8_t * p_l,
const uint8_t * p_tl,
const uint8_t * p_t,
const uint8_t * p_tr )
static

Definition at line 786 of file webp.c.

◆ inv_predict_4()

static void inv_predict_4 ( uint8_t * p,
const uint8_t * p_l,
const uint8_t * p_tl,
const uint8_t * p_t,
const uint8_t * p_tr )
static

Definition at line 793 of file webp.c.

◆ inv_predict_5()

static void inv_predict_5 ( uint8_t * p,
const uint8_t * p_l,
const uint8_t * p_tl,
const uint8_t * p_t,
const uint8_t * p_tr )
static

Definition at line 800 of file webp.c.

◆ inv_predict_6()

static void inv_predict_6 ( uint8_t * p,
const uint8_t * p_l,
const uint8_t * p_tl,
const uint8_t * p_t,
const uint8_t * p_tr )
static

Definition at line 810 of file webp.c.

◆ inv_predict_7()

static void inv_predict_7 ( uint8_t * p,
const uint8_t * p_l,
const uint8_t * p_tl,
const uint8_t * p_t,
const uint8_t * p_tr )
static

Definition at line 820 of file webp.c.

◆ inv_predict_8()

static void inv_predict_8 ( uint8_t * p,
const uint8_t * p_l,
const uint8_t * p_tl,
const uint8_t * p_t,
const uint8_t * p_tr )
static

Definition at line 830 of file webp.c.

◆ inv_predict_9()

static void inv_predict_9 ( uint8_t * p,
const uint8_t * p_l,
const uint8_t * p_tl,
const uint8_t * p_t,
const uint8_t * p_tr )
static

Definition at line 840 of file webp.c.

◆ inv_predict_10()

static void inv_predict_10 ( uint8_t * p,
const uint8_t * p_l,
const uint8_t * p_tl,
const uint8_t * p_t,
const uint8_t * p_tr )
static

Definition at line 850 of file webp.c.

◆ inv_predict_11()

static void inv_predict_11 ( uint8_t * p,
const uint8_t * p_l,
const uint8_t * p_tl,
const uint8_t * p_t,
const uint8_t * p_tr )
static

Definition at line 860 of file webp.c.

◆ inv_predict_12()

static void inv_predict_12 ( uint8_t * p,
const uint8_t * p_l,
const uint8_t * p_tl,
const uint8_t * p_t,
const uint8_t * p_tr )
static

Definition at line 874 of file webp.c.

◆ clamp_add_subtract_half()

static av_always_inline uint8_t clamp_add_subtract_half ( int a,
int b,
int c )
static

Definition at line 883 of file webp.c.

Referenced by inv_predict_13().

◆ inv_predict_13()

static void inv_predict_13 ( uint8_t * p,
const uint8_t * p_l,
const uint8_t * p_tl,
const uint8_t * p_t,
const uint8_t * p_tr )
static

Definition at line 890 of file webp.c.

◆ inverse_prediction()

static void inverse_prediction ( AVFrame * frame,
enum PredictionMode m,
int x,
int y )
static

Definition at line 910 of file webp.c.

Referenced by apply_predictor_transform().

◆ apply_predictor_transform()

static int apply_predictor_transform ( WebPContext * s)
static

Definition at line 932 of file webp.c.

Referenced by vp8_lossless_decode_frame().

◆ color_transform_delta()

static av_always_inline uint8_t color_transform_delta ( uint8_t color_pred,
uint8_t color )
static

Definition at line 963 of file webp.c.

Referenced by apply_color_transform().

◆ apply_color_transform()

static int apply_color_transform ( WebPContext * s)
static

Definition at line 969 of file webp.c.

Referenced by vp8_lossless_decode_frame().

◆ apply_subtract_green_transform()

static int apply_subtract_green_transform ( WebPContext * s)
static

Definition at line 993 of file webp.c.

Referenced by vp8_lossless_decode_frame().

◆ apply_color_indexing_transform()

static int apply_color_indexing_transform ( WebPContext * s)
static

Definition at line 1008 of file webp.c.

Referenced by vp8_lossless_decode_frame().

◆ update_canvas_size()

static void update_canvas_size ( AVCodecContext * avctx,
int w,
int h )
static

Definition at line 1080 of file webp.c.

Referenced by vp8_lossless_decode_frame(), and vp8_lossy_decode_frame().

◆ vp8_lossless_decode_frame()

static int vp8_lossless_decode_frame ( AVCodecContext * avctx,
AVFrame * p,
int * got_frame,
const uint8_t * data_start,
unsigned int data_size,
int is_alpha_chunk )
static

Definition at line 1095 of file webp.c.

Referenced by vp8_lossy_decode_alpha(), and webp_decode_frame().

◆ alpha_inverse_prediction()

static void alpha_inverse_prediction ( AVFrame * frame,
enum AlphaFilter m )
static

Definition at line 1207 of file webp.c.

Referenced by vp8_lossy_decode_alpha().

◆ vp8_lossy_decode_alpha()

static int vp8_lossy_decode_alpha ( AVCodecContext * avctx,
AVFrame * p,
const uint8_t * data_start,
unsigned int data_size )
static

Definition at line 1250 of file webp.c.

Referenced by vp8_lossy_decode_frame().

◆ vp8_lossy_decode_frame()

static int vp8_lossy_decode_frame ( AVCodecContext * avctx,
AVFrame * p,
int * got_frame,
uint8_t * data_start,
unsigned int data_size )
static

Definition at line 1303 of file webp.c.

Referenced by webp_decode_frame().

◆ webp_decode_frame()

static int webp_decode_frame ( AVCodecContext * avctx,
AVFrame * p,
int * got_frame,
AVPacket * avpkt )
static

Definition at line 1344 of file webp.c.

◆ webp_decode_init()

static av_cold int webp_decode_init ( AVCodecContext * avctx)
static

Definition at line 1559 of file webp.c.

◆ webp_decode_close()

static av_cold int webp_decode_close ( AVCodecContext * avctx)
static

Definition at line 1570 of file webp.c.

Variable Documentation

◆ alphabet_sizes

const uint16_t alphabet_sizes[HUFFMAN_CODES_PER_META_CODE]
static
Initial value:
= {
}
#define NUM_LITERAL_CODES
Definition webp.c:73
#define NUM_LENGTH_CODES
Definition webp.c:74
#define NUM_DISTANCE_CODES
Definition webp.c:75

Definition at line 79 of file webp.c.

Referenced by decode_entropy_coded_image().

◆ code_length_code_order

const uint8_t code_length_code_order[NUM_CODE_LENGTH_CODES]
static
Initial value:
= {
17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
}

Definition at line 85 of file webp.c.

Referenced by read_huffman_code_normal().

◆ lz77_distance_offsets

const int8_t lz77_distance_offsets[NUM_SHORT_DISTANCES][2]
static
Initial value:
= {
{ 0, 1 }, { 1, 0 }, { 1, 1 }, { -1, 1 }, { 0, 2 }, { 2, 0 }, { 1, 2 }, { -1, 2 },
{ 2, 1 }, { -2, 1 }, { 2, 2 }, { -2, 2 }, { 0, 3 }, { 3, 0 }, { 1, 3 }, { -1, 3 },
{ 3, 1 }, { -3, 1 }, { 2, 3 }, { -2, 3 }, { 3, 2 }, { -3, 2 }, { 0, 4 }, { 4, 0 },
{ 1, 4 }, { -1, 4 }, { 4, 1 }, { -4, 1 }, { 3, 3 }, { -3, 3 }, { 2, 4 }, { -2, 4 },
{ 4, 2 }, { -4, 2 }, { 0, 5 }, { 3, 4 }, { -3, 4 }, { 4, 3 }, { -4, 3 }, { 5, 0 },
{ 1, 5 }, { -1, 5 }, { 5, 1 }, { -5, 1 }, { 2, 5 }, { -2, 5 }, { 5, 2 }, { -5, 2 },
{ 4, 4 }, { -4, 4 }, { 3, 5 }, { -3, 5 }, { 5, 3 }, { -5, 3 }, { 0, 6 }, { 6, 0 },
{ 1, 6 }, { -1, 6 }, { 6, 1 }, { -6, 1 }, { 2, 6 }, { -2, 6 }, { 6, 2 }, { -6, 2 },
{ 4, 5 }, { -4, 5 }, { 5, 4 }, { -5, 4 }, { 3, 6 }, { -3, 6 }, { 6, 3 }, { -6, 3 },
{ 0, 7 }, { 7, 0 }, { 1, 7 }, { -1, 7 }, { 5, 5 }, { -5, 5 }, { 7, 1 }, { -7, 1 },
{ 4, 6 }, { -4, 6 }, { 6, 4 }, { -6, 4 }, { 2, 7 }, { -2, 7 }, { 7, 2 }, { -7, 2 },
{ 3, 7 }, { -3, 7 }, { 7, 3 }, { -7, 3 }, { 5, 6 }, { -5, 6 }, { 6, 5 }, { -6, 5 },
{ 8, 0 }, { 4, 7 }, { -4, 7 }, { 7, 4 }, { -7, 4 }, { 8, 1 }, { 8, 2 }, { 6, 6 },
{ -6, 6 }, { 8, 3 }, { 5, 7 }, { -5, 7 }, { 7, 5 }, { -7, 5 }, { 8, 4 }, { 6, 7 },
{ -6, 7 }, { 7, 6 }, { -7, 6 }, { 8, 5 }, { 7, 7 }, { -7, 7 }, { 8, 6 }, { 8, 7 }
}

Definition at line 89 of file webp.c.

Referenced by decode_entropy_coded_image().

◆ inverse_predict

const inv_predict_func inverse_predict[14]
static
Initial value:
= {
}
static void inv_predict_10(uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
Definition webp.c:850
static void inv_predict_8(uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
Definition webp.c:830
static void inv_predict_7(uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
Definition webp.c:820
static void inv_predict_4(uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
Definition webp.c:793
static void inv_predict_0(uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
Definition webp.c:765
static void inv_predict_11(uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
Definition webp.c:860
static void inv_predict_9(uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
Definition webp.c:840
static void inv_predict_3(uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
Definition webp.c:786
static void inv_predict_6(uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
Definition webp.c:810
static void inv_predict_2(uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
Definition webp.c:779
static void inv_predict_13(uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
Definition webp.c:890
static void inv_predict_1(uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
Definition webp.c:772
static void inv_predict_12(uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
Definition webp.c:874
static void inv_predict_5(uint8_t *p, const uint8_t *p_l, const uint8_t *p_tl, const uint8_t *p_t, const uint8_t *p_tr)
Definition webp.c:800

Definition at line 903 of file webp.c.

Referenced by inverse_prediction().

◆ ff_webp_decoder

const FFCodec ff_webp_decoder
Initial value:
= {
.p.name = "webp",
CODEC_LONG_NAME("WebP image"),
.p.type = AVMEDIA_TYPE_VIDEO,
.priv_data_size = sizeof(WebPContext),
.caps_internal = FF_CODEC_CAP_ICC_PROFILES |
}
#define FF_CODEC_CAP_USES_PROGRESSFRAMES
The decoder might make use of the ProgressFrame API.
#define FF_CODEC_CAP_ICC_PROFILES
Codec supports embedded ICC profiles (AV_FRAME_DATA_ICC_PROFILE).
#define FF_CODEC_DECODE_CB(func)
#define CODEC_LONG_NAME(str)
int(* init)(AVBSFContext *ctx)
Definition dts2pts.c:608
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
Definition codec.h:49
#define AV_CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
Definition codec.h:98
@ AV_CODEC_ID_WEBP
Definition codec_id.h:221
@ AVMEDIA_TYPE_VIDEO
Definition avutil.h:200
static int webp_decode_frame(AVCodecContext *avctx, AVFrame *p, int *got_frame, AVPacket *avpkt)
Definition webp.c:1344
static av_cold int webp_decode_close(AVCodecContext *avctx)
Definition webp.c:1570
static av_cold int webp_decode_init(AVCodecContext *avctx)
Definition webp.c:1559

Definition at line 1582 of file webp.c.