#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "avcodec.h"
#include "dsputil.h"
#include "mpegvideo.h"
#include "vp3data.h"
#include "xiph.h"
Go to the source code of this file.
Data Structures | |
struct | Coeff |
struct | Vp3Fragment |
struct | Vp3DecodeContext |
Defines | |
#define | FRAGMENT_PIXELS 8 |
#define | KEYFRAMES_ONLY 0 |
#define | DEBUG_VP3 0 |
#define | DEBUG_INIT 0 |
#define | DEBUG_DEQUANTIZERS 0 |
#define | DEBUG_BLOCK_CODING 0 |
#define | DEBUG_MODES 0 |
#define | DEBUG_VECTORS 0 |
#define | DEBUG_TOKEN 0 |
#define | DEBUG_VLC 0 |
#define | DEBUG_DC_PRED 0 |
#define | DEBUG_IDCT 0 |
#define | SB_NOT_CODED 0 |
#define | SB_PARTIALLY_CODED 1 |
#define | SB_FULLY_CODED 2 |
#define | MODE_INTER_NO_MV 0 |
#define | MODE_INTRA 1 |
#define | MODE_INTER_PLUS_MV 2 |
#define | MODE_INTER_LAST_MV 3 |
#define | MODE_INTER_PRIOR_LAST 4 |
#define | MODE_USING_GOLDEN 5 |
#define | MODE_GOLDEN_MV 6 |
#define | MODE_INTER_FOURMV 7 |
#define | CODING_MODE_COUNT 8 |
#define | MODE_COPY 8 |
#define | MIN_DEQUANT_VAL 2 |
#define | COMPATIBLE_FRAME(x) (compatible_frame[s->all_fragments[x].coding_method] == current_frame_type) |
#define | FRAME_CODED(x) (s->all_fragments[x].coding_method != MODE_COPY) |
#define | DC_COEFF(u) (s->coeffs[u].index ? 0 : s->coeffs[u].coeff) |
#define | PUL 8 |
#define | PU 4 |
#define | PUR 2 |
#define | PL 1 |
Functions | |
static int | vp3_decode_end (AVCodecContext *avctx) |
static void | debug_vp3 (const char *format,...) |
static void | debug_init (const char *format,...) |
static void | debug_dequantizers (const char *format,...) |
static void | debug_block_coding (const char *format,...) |
static void | debug_modes (const char *format,...) |
static void | debug_vectors (const char *format,...) |
static void | debug_token (const char *format,...) |
static void | debug_vlc (const char *format,...) |
static void | debug_dc_pred (const char *format,...) |
static void | debug_idct (const char *format,...) |
static int | init_block_mapping (Vp3DecodeContext *s) |
static void | init_frame (Vp3DecodeContext *s, GetBitContext *gb) |
static void | init_dequantizer (Vp3DecodeContext *s) |
static void | init_loop_filter (Vp3DecodeContext *s) |
static int | unpack_superblocks (Vp3DecodeContext *s, GetBitContext *gb) |
static int | unpack_modes (Vp3DecodeContext *s, GetBitContext *gb) |
static int | unpack_vectors (Vp3DecodeContext *s, GetBitContext *gb) |
static int | unpack_vlcs (Vp3DecodeContext *s, GetBitContext *gb, VLC *table, int coeff_index, int first_fragment, int last_fragment, int eob_run) |
static int | unpack_dct_coeffs (Vp3DecodeContext *s, GetBitContext *gb) |
static void | reverse_dc_prediction (Vp3DecodeContext *s, int first_fragment, int fragment_width, int fragment_height) |
static void | horizontal_filter (unsigned char *first_pixel, int stride, int *bounding_values) |
static void | vertical_filter (unsigned char *first_pixel, int stride, int *bounding_values) |
static void | render_slice (Vp3DecodeContext *s, int slice) |
static void | apply_loop_filter (Vp3DecodeContext *s) |
static void | vp3_calculate_pixel_addresses (Vp3DecodeContext *s) |
static void | theora_calculate_pixel_addresses (Vp3DecodeContext *s) |
static int | vp3_decode_init (AVCodecContext *avctx) |
static int | vp3_decode_frame (AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size) |
static int | read_huffman_tree (AVCodecContext *avctx, GetBitContext *gb) |
Variables | |
static int | ModeAlphabet [7][CODING_MODE_COUNT] |
AVCodec | vp3_decoder |
VP3 Video Decoder by Mike Melanson (mike at multimedia.cx) For more information about the VP3 coding process, visit: http://multimedia.cx/
Theora decoder by Alex Beregszaszi
Definition in file vp3.c.
#define COMPATIBLE_FRAME | ( | x | ) | (compatible_frame[s->all_fragments[x].coding_method] == current_frame_type) |
#define DC_COEFF | ( | u | ) | (s->coeffs[u].index ? 0 : s->coeffs[u].coeff) |
#define FRAGMENT_PIXELS 8 |
Definition at line 44 of file vp3.c.
Referenced by render_slice(), theora_calculate_pixel_addresses(), vp3_calculate_pixel_addresses(), and vp3_decode_init().
#define FRAME_CODED | ( | x | ) | (s->all_fragments[x].coding_method != MODE_COPY) |
#define MODE_COPY 8 |
Definition at line 175 of file vp3.c.
Referenced by apply_loop_filter(), render_slice(), reverse_dc_prediction(), unpack_modes(), unpack_superblocks(), and unpack_vectors().
#define MODE_GOLDEN_MV 6 |
#define MODE_INTER_FOURMV 7 |
#define MODE_INTER_LAST_MV 3 |
#define MODE_INTER_NO_MV 0 |
#define MODE_INTER_PLUS_MV 2 |
#define MODE_INTER_PRIOR_LAST 4 |
#define MODE_INTRA 1 |
#define MODE_USING_GOLDEN 5 |
#define PL 1 |
#define PU 4 |
Referenced by reverse_dc_prediction().
#define PUL 8 |
Referenced by reverse_dc_prediction().
#define PUR 2 |
Referenced by reverse_dc_prediction().
#define SB_FULLY_CODED 2 |
#define SB_NOT_CODED 0 |
#define SB_PARTIALLY_CODED 1 |
static void apply_loop_filter | ( | Vp3DecodeContext * | s | ) | [static] |
static void debug_block_coding | ( | const char * | format, | |
... | ||||
) | [inline, static] |
static void debug_dc_pred | ( | const char * | format, | |
... | ||||
) | [inline, static] |
static void debug_dequantizers | ( | const char * | format, | |
... | ||||
) | [inline, static] |
static void debug_idct | ( | const char * | format, | |
... | ||||
) | [inline, static] |
static void debug_init | ( | const char * | format, | |
... | ||||
) | [inline, static] |
Definition at line 89 of file vp3.c.
Referenced by init_block_mapping(), theora_calculate_pixel_addresses(), vp3_calculate_pixel_addresses(), and vp3_decode_init().
static void debug_modes | ( | const char * | format, | |
... | ||||
) | [inline, static] |
static void debug_token | ( | const char * | format, | |
... | ||||
) | [inline, static] |
static void debug_vectors | ( | const char * | format, | |
... | ||||
) | [inline, static] |
static void debug_vlc | ( | const char * | format, | |
... | ||||
) | [inline, static] |
static void debug_vp3 | ( | const char * | format, | |
... | ||||
) | [inline, static] |
Definition at line 83 of file vp3.c.
Referenced by init_block_mapping(), init_dequantizer(), reverse_dc_prediction(), unpack_dct_coeffs(), unpack_modes(), unpack_superblocks(), and unpack_vectors().
static void horizontal_filter | ( | unsigned char * | first_pixel, | |
int | stride, | |||
int * | bounding_values | |||
) | [static] |
static int init_block_mapping | ( | Vp3DecodeContext * | s | ) | [static] |
static void init_dequantizer | ( | Vp3DecodeContext * | s | ) | [static] |
static void init_frame | ( | Vp3DecodeContext * | s, | |
GetBitContext * | gb | |||
) | [static] |
static void init_loop_filter | ( | Vp3DecodeContext * | s | ) | [static] |
static int read_huffman_tree | ( | AVCodecContext * | avctx, | |
GetBitContext * | gb | |||
) | [static] |
static void render_slice | ( | Vp3DecodeContext * | s, | |
int | slice | |||
) | [static] |
static void reverse_dc_prediction | ( | Vp3DecodeContext * | s, | |
int | first_fragment, | |||
int | fragment_width, | |||
int | fragment_height | |||
) | [static] |
static void theora_calculate_pixel_addresses | ( | Vp3DecodeContext * | s | ) | [static] |
static int unpack_dct_coeffs | ( | Vp3DecodeContext * | s, | |
GetBitContext * | gb | |||
) | [static] |
static int unpack_modes | ( | Vp3DecodeContext * | s, | |
GetBitContext * | gb | |||
) | [static] |
static int unpack_superblocks | ( | Vp3DecodeContext * | s, | |
GetBitContext * | gb | |||
) | [static] |
static int unpack_vectors | ( | Vp3DecodeContext * | s, | |
GetBitContext * | gb | |||
) | [static] |
static int unpack_vlcs | ( | Vp3DecodeContext * | s, | |
GetBitContext * | gb, | |||
VLC * | table, | |||
int | coeff_index, | |||
int | first_fragment, | |||
int | last_fragment, | |||
int | eob_run | |||
) | [static] |
static void vertical_filter | ( | unsigned char * | first_pixel, | |
int | stride, | |||
int * | bounding_values | |||
) | [static] |
static void vp3_calculate_pixel_addresses | ( | Vp3DecodeContext * | s | ) | [static] |
static int vp3_decode_end | ( | AVCodecContext * | avctx | ) | [static] |
static int vp3_decode_frame | ( | AVCodecContext * | avctx, | |
void * | data, | |||
int * | data_size, | |||
const uint8_t * | buf, | |||
int | buf_size | |||
) | [static] |
static int vp3_decode_init | ( | AVCodecContext * | avctx | ) | [static] |
int ModeAlphabet[7][CODING_MODE_COUNT] [static] |
Initial value:
{ "vp3", CODEC_TYPE_VIDEO, CODEC_ID_VP3, sizeof(Vp3DecodeContext), vp3_decode_init, NULL, vp3_decode_end, vp3_decode_frame, 0, NULL }