FFmpeg
|
#include <stddef.h>
#include <stdint.h>
#include "libavutil/frame.h"
#include "libavutil/mem_internal.h"
#include "avcodec.h"
#include "cavsdsp.h"
#include "blockdsp.h"
#include "h264chroma.h"
#include "get_bits.h"
#include "videodsp.h"
Go to the source code of this file.
Data Structures | |
struct | cavs_vector |
struct | dec_2dvlc |
struct | AVSFrame |
struct | AVSContext |
Macros | |
#define | SLICE_MAX_START_CODE 0x000001af |
#define | EXT_START_CODE 0x000001b5 |
#define | USER_START_CODE 0x000001b2 |
#define | CAVS_START_CODE 0x000001b0 |
#define | PIC_I_START_CODE 0x000001b3 |
#define | PIC_PB_START_CODE 0x000001b6 |
#define | A_AVAIL 1 |
#define | B_AVAIL 2 |
#define | C_AVAIL 4 |
#define | D_AVAIL 8 |
#define | NOT_AVAIL -1 |
#define | REF_INTRA -2 |
#define | REF_DIR -3 |
#define | ESCAPE_CODE 59 |
#define | FWD0 0x01 |
#define | FWD1 0x02 |
#define | BWD0 0x04 |
#define | BWD1 0x08 |
#define | SYM0 0x10 |
#define | SYM1 0x20 |
#define | SPLITH 0x40 |
#define | SPLITV 0x80 |
#define | MV_BWD_OFFS 12 |
#define | MV_STRIDE 4 |
Enumerations | |
enum | cavs_mb { I_8X8 = 0, P_SKIP, P_16X16, P_16X8, P_8X16, P_8X8, B_SKIP, B_DIRECT, B_FWD_16X16, B_BWD_16X16, B_SYM_16X16, B_8X8 = 29 } |
enum | cavs_sub_mb { B_SUB_DIRECT, B_SUB_FWD, B_SUB_BWD, B_SUB_SYM } |
enum | cavs_intra_luma { INTRA_L_VERT, INTRA_L_HORIZ, INTRA_L_LP, INTRA_L_DOWN_LEFT, INTRA_L_DOWN_RIGHT, INTRA_L_LP_LEFT, INTRA_L_LP_TOP, INTRA_L_DC_128 } |
enum | cavs_intra_chroma { INTRA_C_LP, INTRA_C_HORIZ, INTRA_C_VERT, INTRA_C_PLANE, INTRA_C_LP_LEFT, INTRA_C_LP_TOP, INTRA_C_DC_128 } |
enum | cavs_mv_pred { MV_PRED_MEDIAN, MV_PRED_LEFT, MV_PRED_TOP, MV_PRED_TOPRIGHT, MV_PRED_PSKIP, MV_PRED_BSKIP } |
enum | cavs_block { BLK_16X16, BLK_16X8, BLK_8X16, BLK_8X8 } |
enum | cavs_mv_loc { MV_FWD_D3 = 0, MV_FWD_B2, MV_FWD_B3, MV_FWD_C2, MV_FWD_A1, MV_FWD_X0, MV_FWD_X1, MV_FWD_A3 = 8, MV_FWD_X2, MV_FWD_X3, MV_BWD_D3 = MV_BWD_OFFS, MV_BWD_B2, MV_BWD_B3, MV_BWD_C2, MV_BWD_A1, MV_BWD_X0, MV_BWD_X1, MV_BWD_A3 = MV_BWD_OFFS+8, MV_BWD_X2, MV_BWD_X3 } |
Functions | |
static void | set_mvs (cavs_vector *mv, enum cavs_block size) |
void | ff_cavs_filter (AVSContext *h, enum cavs_mb mb_type) |
in-loop deblocking filter for a single macroblock More... | |
void | ff_cavs_load_intra_pred_luma (AVSContext *h, uint8_t *top, uint8_t **left, int block) |
void | ff_cavs_load_intra_pred_chroma (AVSContext *h) |
void | ff_cavs_modify_mb_i (AVSContext *h, int *pred_mode_uv) |
void | ff_cavs_inter (AVSContext *h, enum cavs_mb mb_type) |
void | ff_cavs_mv (AVSContext *h, enum cavs_mv_loc nP, enum cavs_mv_loc nC, enum cavs_mv_pred mode, enum cavs_block size, int ref) |
void | ff_cavs_init_mb (AVSContext *h) |
initialise predictors for motion vectors and intra prediction More... | |
int | ff_cavs_next_mb (AVSContext *h) |
save predictors for later macroblocks and increase macroblock address More... | |
int | ff_cavs_init_pic (AVSContext *h) |
int | ff_cavs_init_top_lines (AVSContext *h) |
some predictions require data from the top-neighbouring macroblock. More... | |
int | ff_cavs_init (AVCodecContext *avctx) |
int | ff_cavs_end (AVCodecContext *avctx) |
Variables | |
const uint8_t | ff_cavs_chroma_qp [64] |
const uint8_t | ff_cavs_partition_flags [30] |
const cavs_vector | ff_cavs_intra_mv |
mark block as using intra prediction More... | |
const cavs_vector | ff_cavs_dir_mv |
mark block as "no prediction from this direction" e.g. More... | |
enum cavs_mb |
enum cavs_sub_mb |
enum cavs_intra_luma |
enum cavs_intra_chroma |
enum cavs_mv_pred |
enum cavs_block |
enum cavs_mv_loc |
|
inlinestatic |
Definition at line 255 of file cavs.h.
Referenced by decode_mb_b(), ff_cavs_init_pic(), ff_cavs_mv(), mv_pred_sym(), and set_mv_intra().
void ff_cavs_filter | ( | AVSContext * | h, |
enum cavs_mb | mb_type | ||
) |
in-loop deblocking filter for a single macroblock
boundary strength (bs) mapping:
–4—5– 0 2 | | 6 | 7 |
Definition at line 108 of file cavs.c.
Referenced by decode_mb_b(), decode_mb_i(), and decode_mb_p().
void ff_cavs_load_intra_pred_luma | ( | AVSContext * | h, |
uint8_t * | top, | ||
uint8_t ** | left, | ||
int | block | ||
) |
Definition at line 184 of file cavs.c.
Referenced by decode_mb_i().
void ff_cavs_load_intra_pred_chroma | ( | AVSContext * | h | ) |
Definition at line 235 of file cavs.c.
Referenced by decode_mb_i().
void ff_cavs_modify_mb_i | ( | AVSContext * | h, |
int * | pred_mode_uv | ||
) |
Definition at line 362 of file cavs.c.
Referenced by decode_mb_i().
void ff_cavs_inter | ( | AVSContext * | h, |
enum cavs_mb | mb_type | ||
) |
Definition at line 493 of file cavs.c.
Referenced by decode_mb_b(), and decode_mb_p().
void ff_cavs_mv | ( | AVSContext * | h, |
enum cavs_mv_loc | nP, | ||
enum cavs_mv_loc | nC, | ||
enum cavs_mv_pred | mode, | ||
enum cavs_block | size, | ||
int | ref | ||
) |
Definition at line 574 of file cavs.c.
Referenced by decode_mb_b(), and decode_mb_p().
void ff_cavs_init_mb | ( | AVSContext * | h | ) |
initialise predictors for motion vectors and intra prediction
Definition at line 636 of file cavs.c.
Referenced by decode_mb_b(), decode_mb_i(), and decode_mb_p().
int ff_cavs_next_mb | ( | AVSContext * | h | ) |
save predictors for later macroblocks and increase macroblock address
Definition at line 677 of file cavs.c.
Referenced by decode_pic().
int ff_cavs_init_pic | ( | AVSContext * | h | ) |
Definition at line 722 of file cavs.c.
Referenced by decode_pic().
int ff_cavs_init_top_lines | ( | AVSContext * | h | ) |
some predictions require data from the top-neighbouring macroblock.
this data has to be stored for one complete row of macroblocks and this storage space is allocated here
Definition at line 758 of file cavs.c.
Referenced by decode_seq_header().
int ff_cavs_init | ( | AVCodecContext * | avctx | ) |
int ff_cavs_end | ( | AVCodecContext * | avctx | ) |
const uint8_t ff_cavs_chroma_qp[64] |
Definition at line 57 of file cavsdata.c.
Referenced by decode_residual_chroma(), and ff_cavs_filter().
const uint8_t ff_cavs_partition_flags[30] |
Definition at line 24 of file cavsdata.c.
Referenced by decode_mb_b(), ff_cavs_filter(), and ff_cavs_inter().
const cavs_vector ff_cavs_intra_mv |
mark block as using intra prediction
Definition at line 69 of file cavsdata.c.
Referenced by set_mv_intra().
const cavs_vector ff_cavs_dir_mv |
mark block as "no prediction from this direction" e.g.
forward motion vector in BWD partition
Definition at line 66 of file cavsdata.c.
Referenced by decode_mb_b(), and ff_cavs_init_pic().