FFmpeg  4.0
Data Structures | Macros | Enumerations | Functions | Variables
cavs.h File Reference
#include "cavsdsp.h"
#include "blockdsp.h"
#include "h264chroma.h"
#include "idctdsp.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...
 

Macro Definition Documentation

◆ SLICE_MAX_START_CODE

#define SLICE_MAX_START_CODE   0x000001af

◆ EXT_START_CODE

#define EXT_START_CODE   0x000001b5

◆ USER_START_CODE

#define USER_START_CODE   0x000001b2

Definition at line 34 of file cavs.h.

Referenced by cavs_decode_frame(), decode_chunks(), and ff_mpeg1_encode_picture_header().

◆ CAVS_START_CODE

#define CAVS_START_CODE   0x000001b0

Definition at line 35 of file cavs.h.

Referenced by cavs_decode_frame().

◆ PIC_I_START_CODE

#define PIC_I_START_CODE   0x000001b3

Definition at line 36 of file cavs.h.

Referenced by cavs_decode_frame(), and cavs_find_frame_end().

◆ PIC_PB_START_CODE

#define PIC_PB_START_CODE   0x000001b6

Definition at line 37 of file cavs.h.

Referenced by cavs_decode_frame(), cavs_find_frame_end(), and decode_pic().

◆ A_AVAIL

#define A_AVAIL   1

◆ B_AVAIL

#define B_AVAIL   2

◆ C_AVAIL

#define C_AVAIL   4

◆ D_AVAIL

#define D_AVAIL   8

Definition at line 42 of file cavs.h.

Referenced by ff_cavs_init_mb().

◆ NOT_AVAIL

#define NOT_AVAIL   -1

◆ REF_INTRA

#define REF_INTRA   -2

Definition at line 44 of file cavs.h.

Referenced by get_bs().

◆ REF_DIR

#define REF_DIR   -3

Definition at line 45 of file cavs.h.

◆ ESCAPE_CODE

#define ESCAPE_CODE   59

Definition at line 47 of file cavs.h.

Referenced by decode_residual_block().

◆ FWD0

#define FWD0   0x01

Definition at line 49 of file cavs.h.

Referenced by decode_mb_b().

◆ FWD1

#define FWD1   0x02

Definition at line 50 of file cavs.h.

Referenced by decode_mb_b().

◆ BWD0

#define BWD0   0x04

Definition at line 51 of file cavs.h.

Referenced by decode_mb_b().

◆ BWD1

#define BWD1   0x08

Definition at line 52 of file cavs.h.

Referenced by decode_mb_b().

◆ SYM0

#define SYM0   0x10

Definition at line 53 of file cavs.h.

Referenced by decode_mb_b().

◆ SYM1

#define SYM1   0x20

Definition at line 54 of file cavs.h.

Referenced by decode_mb_b().

◆ SPLITH

#define SPLITH   0x40

Definition at line 55 of file cavs.h.

Referenced by ff_cavs_filter().

◆ SPLITV

#define SPLITV   0x80

Definition at line 56 of file cavs.h.

Referenced by ff_cavs_filter().

◆ MV_BWD_OFFS

#define MV_BWD_OFFS   12

Definition at line 58 of file cavs.h.

Referenced by decode_mb_b(), get_bs(), mc_part_std(), mv_pred_direct(), and mv_pred_sym().

◆ MV_STRIDE

#define MV_STRIDE   4

Definition at line 59 of file cavs.h.

Referenced by set_mvs().

Enumeration Type Documentation

◆ cavs_mb

enum cavs_mb
Enumerator
I_8X8 
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 

Definition at line 61 of file cavs.h.

◆ cavs_sub_mb

Enumerator
B_SUB_DIRECT 
B_SUB_FWD 
B_SUB_BWD 
B_SUB_SYM 

Definition at line 76 of file cavs.h.

◆ cavs_intra_luma

Enumerator
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 

Definition at line 83 of file cavs.h.

◆ cavs_intra_chroma

Enumerator
INTRA_C_LP 
INTRA_C_HORIZ 
INTRA_C_VERT 
INTRA_C_PLANE 
INTRA_C_LP_LEFT 
INTRA_C_LP_TOP 
INTRA_C_DC_128 

Definition at line 94 of file cavs.h.

◆ cavs_mv_pred

Enumerator
MV_PRED_MEDIAN 
MV_PRED_LEFT 
MV_PRED_TOP 
MV_PRED_TOPRIGHT 
MV_PRED_PSKIP 
MV_PRED_BSKIP 

Definition at line 104 of file cavs.h.

◆ cavs_block

enum cavs_block
Enumerator
BLK_16X16 
BLK_16X8 
BLK_8X16 
BLK_8X8 

Definition at line 113 of file cavs.h.

◆ cavs_mv_loc

Enumerator
MV_FWD_D3 
MV_FWD_B2 
MV_FWD_B3 
MV_FWD_C2 
MV_FWD_A1 
MV_FWD_X0 
MV_FWD_X1 
MV_FWD_A3 
MV_FWD_X2 
MV_FWD_X3 
MV_BWD_D3 
MV_BWD_B2 
MV_BWD_B3 
MV_BWD_C2 
MV_BWD_A1 
MV_BWD_X0 
MV_BWD_X1 
MV_BWD_A3 
MV_BWD_X2 
MV_BWD_X3 

Definition at line 120 of file cavs.h.

Function Documentation

◆ set_mvs()

static void set_mvs ( cavs_vector mv,
enum cavs_block  size 
)
inlinestatic

Definition at line 250 of file cavs.h.

Referenced by decode_mb_b(), ff_cavs_init_pic(), ff_cavs_mv(), mv_pred_sym(), and set_mv_intra().

◆ ff_cavs_filter()

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 |

1 3 |

Definition at line 109 of file cavs.c.

Referenced by decode_mb_b(), decode_mb_i(), decode_mb_p(), and set_mvs().

◆ ff_cavs_load_intra_pred_luma()

void ff_cavs_load_intra_pred_luma ( AVSContext h,
uint8_t top,
uint8_t **  left,
int  block 
)

Definition at line 185 of file cavs.c.

Referenced by decode_mb_i(), and set_mvs().

◆ ff_cavs_load_intra_pred_chroma()

void ff_cavs_load_intra_pred_chroma ( AVSContext h)

Definition at line 236 of file cavs.c.

Referenced by decode_mb_i(), and set_mvs().

◆ ff_cavs_modify_mb_i()

void ff_cavs_modify_mb_i ( AVSContext h,
int pred_mode_uv 
)

Definition at line 363 of file cavs.c.

Referenced by decode_mb_i(), and set_mvs().

◆ ff_cavs_inter()

void ff_cavs_inter ( AVSContext h,
enum cavs_mb  mb_type 
)

Definition at line 494 of file cavs.c.

Referenced by decode_mb_b(), decode_mb_p(), and set_mvs().

◆ ff_cavs_mv()

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 575 of file cavs.c.

Referenced by decode_mb_b(), decode_mb_p(), and set_mvs().

◆ ff_cavs_init_mb()

void ff_cavs_init_mb ( AVSContext h)

initialise predictors for motion vectors and intra prediction

Definition at line 637 of file cavs.c.

Referenced by decode_mb_b(), decode_mb_i(), decode_mb_p(), and set_mvs().

◆ ff_cavs_next_mb()

int ff_cavs_next_mb ( AVSContext h)

save predictors for later macroblocks and increase macroblock address

Returns
0 if end of frame is reached, 1 otherwise

Definition at line 678 of file cavs.c.

Referenced by decode_pic(), and set_mvs().

◆ ff_cavs_init_pic()

int ff_cavs_init_pic ( AVSContext h)

Definition at line 723 of file cavs.c.

Referenced by decode_pic(), and set_mvs().

◆ ff_cavs_init_top_lines()

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 759 of file cavs.c.

Referenced by decode_seq_header(), and set_mvs().

◆ ff_cavs_init()

int ff_cavs_init ( AVCodecContext avctx)

Definition at line 794 of file cavs.c.

Referenced by set_mvs().

◆ ff_cavs_end()

int ff_cavs_end ( AVCodecContext avctx)

Definition at line 840 of file cavs.c.

Referenced by ff_cavs_init(), and set_mvs().

Variable Documentation

◆ ff_cavs_chroma_qp

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().

◆ ff_cavs_partition_flags

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().

◆ ff_cavs_intra_mv

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().

◆ ff_cavs_dir_mv

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().