VP8
Supported Codecs

## Modules

| WebM VP8/VP9 Encoder
| WebM VP8/VP9 Decoder

## Files

file | vp8.h
| Provides controls common to both the VP8 encoder and decoder.

## Data Structures

struct | vp8_postproc_cfg
| post process flags More...
struct | vpx_ref_frame
| reference frame data struct More...
struct | vp9_ref_frame
| VP9 specific reference frame data struct. More...

## Typedefs

typedef struct vp8_postproc_cfg | vp8_postproc_cfg_t
| post process flags
typedef enum vpx_ref_frame_type | vpx_ref_frame_type_t
| reference frame type
typedef struct vpx_ref_frame | vpx_ref_frame_t
| reference frame data struct
typedef struct vp9_ref_frame | vp9_ref_frame_t
| VP9 specific reference frame data struct.

## Enumerations

enum | vp8_com_control_id { VP8_SET_REFERENCE = 1 , VP8_COPY_REFERENCE = 2 , VP8_SET_POSTPROC = 3 , VP9_GET_REFERENCE = 128 , VP8_COMMON_CTRL_ID_MAX , VP8_DECODER_CTRL_ID_START = 256 }
| Control functions. More...
enum | vp8_postproc_level { VP8_NOFILTERING = 0 , VP8_DEBLOCK = 1 << 0 , VP8_DEMACROBLOCK = 1 << 1 , VP8_ADDNOISE = 1 << 2 , VP8_MFQE = 1 << 3 }
| post process flags More...
enum | vpx_ref_frame_type { VP8_LAST_FRAME = 1 , VP8_GOLD_FRAME = 2 , VP8_ALTR_FRAME = 4 }
| reference frame type More...

## Detailed Description

VP8 is a video compression algorithm that uses motion compensated prediction, Discrete Cosine Transform (DCT) coding of the prediction error signal and context dependent entropy coding techniques based on arithmetic principles. It features:

- YUV 4:2:0 image format
- Macro-block based coding (16x16 luma plus two 8x8 chroma)
- 1/4 (1/8) pixel accuracy motion compensated prediction
- 4x4 DCT transform
- 128 level linear quantizer
- In loop deblocking filter
- Context-based entropy coding

## Typedef Documentation

## vp8_postproc_cfg_t

typedef struct vp8_postproc_cfg vp8_postproc_cfg_t

post process flags

This define a structure that describe the post processing settings. For the best objective measure (using the PSNR metric) set post_proc_flag to VP8_DEBLOCK and deblocking_level to 1.

## vpx_ref_frame_type_t

typedef enum vpx_ref_frame_type vpx_ref_frame_type_t

reference frame type

The set of macros define the type of VP8 reference frames

## vpx_ref_frame_t

typedef struct vpx_ref_frame vpx_ref_frame_t

reference frame data struct

Define the data struct to access vp8 reference frames.

## vp9_ref_frame_t

typedef struct vp9_ref_frame vp9_ref_frame_t

VP9 specific reference frame data struct.

Define the data struct to access vp9 reference frames.

## Enumeration Type Documentation

## vp8_com_control_id

enum vp8_com_control_id

Control functions.

The set of macros define the control functions of VP8 interface

Enumerator
VP8_SET_REFERENCE | pass in an external frame into decoder to be used as reference frame
VP8_COPY_REFERENCE | get a copy of reference frame from the decoder
VP8_SET_POSTPROC | set the decoder's post processing settings
VP9_GET_REFERENCE | get a pointer to a reference frame

## vp8_postproc_level

enum vp8_postproc_level

post process flags

The set of macros define VP8 decoder post processing flags

## vpx_ref_frame_type

enum vpx_ref_frame_type

reference frame type

The set of macros define the type of VP8 reference frames