FFmpeg
Classes | Macros | Typedefs | Enumerations | Variables
webp.c File Reference

WebP image decoder. More...

#include "libavutil/imgutils.h"
#include "avcodec.h"
#include "bytestream.h"
#include "exif.h"
#include "get_bits.h"
#include "internal.h"
#include "thread.h"
#include "vp8.h"

Classes

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)   ((frame)->data[0] + (y) * frame->linesize[0] + 4 * (x))
 
#define GET_PIXEL_COMP(frame, x, y, c)   (*((frame)->data[0] + (y) * frame->linesize[0] + 4 * (x) + c))
 
#define PARSE_BLOCK_SIZE(w, h)
 

Typedefs

typedef struct HuffReader HuffReader
 
typedef struct ImageContext ImageContext
 
typedef struct WebPContext WebPContext
 
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
}
 

Variables

AVCodec 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

Unimplemented:

Macro Definition Documentation

§ PARSE_BLOCK_SIZE

#define PARSE_BLOCK_SIZE (   w,
 
)
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)

Variable Documentation

§ ff_webp_decoder

AVCodec ff_webp_decoder
Initial value:
= {
.name = "webp",
.long_name = NULL_IF_CONFIG_SMALL("WebP image"),
.type = AVMEDIA_TYPE_VIDEO,
.id = AV_CODEC_ID_WEBP,
.priv_data_size = sizeof(WebPContext),
.decode = webp_decode_frame,
.close = webp_decode_close,
}
Definition: webp.c:188
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
#define AV_CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
Definition: avcodec.h:1015
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
Definition: avcodec.h:959