libavcodec/cavs.c File Reference

Chinese AVS video (AVS1-P2, JiZhun profile) decoder. More...

#include "avcodec.h"
#include "get_bits.h"
#include "golomb.h"
#include "mathops.h"
#include "cavs.h"

Go to the source code of this file.

Defines

#define SET_PARAMS
#define LOWPASS(ARRAY, INDEX)   (( ARRAY[(INDEX)-1] + 2*ARRAY[(INDEX)] + ARRAY[(INDEX)+1] + 2) >> 2)

Functions

static int get_bs (cavs_vector *mvP, cavs_vector *mvQ, int b)
void ff_cavs_filter (AVSContext *h, enum cavs_mb mb_type)
 in-loop deblocking filter for a single macroblock
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)
static void intra_pred_vert (uint8_t *d, uint8_t *top, uint8_t *left, int stride)
static void intra_pred_horiz (uint8_t *d, uint8_t *top, uint8_t *left, int stride)
static void intra_pred_dc_128 (uint8_t *d, uint8_t *top, uint8_t *left, int stride)
static void intra_pred_plane (uint8_t *d, uint8_t *top, uint8_t *left, int stride)
static void intra_pred_lp (uint8_t *d, uint8_t *top, uint8_t *left, int stride)
static void intra_pred_down_left (uint8_t *d, uint8_t *top, uint8_t *left, int stride)
static void intra_pred_down_right (uint8_t *d, uint8_t *top, uint8_t *left, int stride)
static void intra_pred_lp_left (uint8_t *d, uint8_t *top, uint8_t *left, int stride)
static void intra_pred_lp_top (uint8_t *d, uint8_t *top, uint8_t *left, int stride)
static void modify_pred (const int8_t *mod_table, int *mode)
void ff_cavs_modify_mb_i (AVSContext *h, int *pred_mode_uv)
static void mc_dir_part (AVSContext *h, Picture *pic, int chroma_height, int delta, int list, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int src_x_offset, int src_y_offset, qpel_mc_func *qpix_op, h264_chroma_mc_func chroma_op, cavs_vector *mv)
static void mc_part_std (AVSContext *h, int chroma_height, int delta, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int x_offset, int y_offset, qpel_mc_func *qpix_put, h264_chroma_mc_func chroma_put, qpel_mc_func *qpix_avg, h264_chroma_mc_func chroma_avg, cavs_vector *mv)
void ff_cavs_inter (AVSContext *h, enum cavs_mb mb_type)
static void scale_mv (AVSContext *h, int *d_x, int *d_y, cavs_vector *src, int distp)
static void mv_pred_median (AVSContext *h, cavs_vector *mvP, cavs_vector *mvA, cavs_vector *mvB, cavs_vector *mvC)
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
int ff_cavs_next_mb (AVSContext *h)
 save predictors for later macroblocks and increase macroblock address
void ff_cavs_init_pic (AVSContext *h)
void ff_cavs_init_top_lines (AVSContext *h)
 some predictions require data from the top-neighbouring macroblock.
av_cold int ff_cavs_init (AVCodecContext *avctx)
av_cold int ff_cavs_end (AVCodecContext *avctx)

Variables

static const uint8_t alpha_tab [64]
static const uint8_t beta_tab [64]
static const uint8_t tc_tab [64]
static const cavs_vector un_mv = { 0, 0, 1, NOT_AVAIL }
 mark block as unavailable, i.e.
static const int8_t left_modifier_l [8] = { 0, -1, 6, -1, -1, 7, 6, 7 }
static const int8_t top_modifier_l [8] = { -1, 1, 5, -1, -1, 5, 7, 7 }
static const int8_t left_modifier_c [7] = { 5, -1, 2, -1, 6, 5, 6 }
static const int8_t top_modifier_c [7] = { 4, 1, -1, -1, 4, 6, 6 }


Detailed Description

Chinese AVS video (AVS1-P2, JiZhun profile) decoder.

Author:
Stefan Gehrer <stefan.gehrer@gmx.de>

Definition in file cavs.c.


Define Documentation

#define LOWPASS ( ARRAY,
INDEX   )     (( ARRAY[(INDEX)-1] + 2*ARRAY[(INDEX)] + ARRAY[(INDEX)+1] + 2) >> 2)

#define SET_PARAMS

Value:

alpha = alpha_tab[av_clip(qp_avg + h->alpha_offset,0,63)];   \
    beta  =  beta_tab[av_clip(qp_avg + h->beta_offset, 0,63)];   \
    tc    =    tc_tab[av_clip(qp_avg + h->alpha_offset,0,63)];

Definition at line 87 of file cavs.c.

Referenced by ff_cavs_filter().


Function Documentation

av_cold int ff_cavs_end ( AVCodecContext avctx  ) 

Definition at line 739 of file cavs.c.

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

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

av_cold int ff_cavs_init ( AVCodecContext avctx  ) 

Definition at line 707 of file cavs.c.

void ff_cavs_init_mb ( AVSContext h  ) 

initialise predictors for motion vectors and intra prediction

Definition at line 574 of file cavs.c.

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

void ff_cavs_init_pic ( AVSContext h  ) 

Definition at line 658 of file cavs.c.

Referenced by decode_pic().

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

Referenced by decode_seq_header().

void ff_cavs_inter ( AVSContext h,
enum cavs_mb  mb_type 
)

Definition at line 451 of file cavs.c.

Referenced by decode_mb_b(), and decode_mb_p().

void ff_cavs_load_intra_pred_chroma ( AVSContext h  ) 

Definition at line 226 of file cavs.c.

Referenced by decode_mb_i().

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

Definition at line 176 of file cavs.c.

Referenced by decode_mb_i().

void ff_cavs_modify_mb_i ( AVSContext h,
int pred_mode_uv 
)

Definition at line 339 of file cavs.c.

Referenced by decode_mb_i().

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

Referenced by decode_mb_b(), and decode_mb_p().

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

Referenced by decode_pic().

static int get_bs ( cavs_vector mvP,
cavs_vector mvQ,
int  b 
) [inline, static]

Definition at line 70 of file cavs.c.

Referenced by ff_cavs_filter().

static void intra_pred_dc_128 ( uint8_t d,
uint8_t top,
uint8_t left,
int  stride 
) [static]

Definition at line 260 of file cavs.c.

Referenced by ff_cavs_init().

static void intra_pred_down_left ( uint8_t d,
uint8_t top,
uint8_t left,
int  stride 
) [static]

Definition at line 295 of file cavs.c.

Referenced by ff_cavs_init().

static void intra_pred_down_right ( uint8_t d,
uint8_t top,
uint8_t left,
int  stride 
) [static]

Definition at line 302 of file cavs.c.

Referenced by ff_cavs_init().

static void intra_pred_horiz ( uint8_t d,
uint8_t top,
uint8_t left,
int  stride 
) [static]

Definition at line 251 of file cavs.c.

Referenced by ff_cavs_init().

static void intra_pred_lp ( uint8_t d,
uint8_t top,
uint8_t left,
int  stride 
) [static]

Definition at line 288 of file cavs.c.

Referenced by ff_cavs_init().

static void intra_pred_lp_left ( uint8_t d,
uint8_t top,
uint8_t left,
int  stride 
) [static]

Definition at line 314 of file cavs.c.

Referenced by ff_cavs_init().

static void intra_pred_lp_top ( uint8_t d,
uint8_t top,
uint8_t left,
int  stride 
) [static]

Definition at line 321 of file cavs.c.

Referenced by ff_cavs_init().

static void intra_pred_plane ( uint8_t d,
uint8_t top,
uint8_t left,
int  stride 
) [static]

Definition at line 267 of file cavs.c.

Referenced by ff_cavs_init().

static void intra_pred_vert ( uint8_t d,
uint8_t top,
uint8_t left,
int  stride 
) [static]

Definition at line 243 of file cavs.c.

Referenced by ff_cavs_init().

static void mc_dir_part ( AVSContext h,
Picture pic,
int  chroma_height,
int  delta,
int  list,
uint8_t dest_y,
uint8_t dest_cb,
uint8_t dest_cr,
int  src_x_offset,
int  src_y_offset,
qpel_mc_func qpix_op,
h264_chroma_mc_func  chroma_op,
cavs_vector mv 
) [inline, static]

Definition at line 365 of file cavs.c.

Referenced by mc_part_std(), and mc_part_weighted().

static void mc_part_std ( AVSContext h,
int  chroma_height,
int  delta,
uint8_t dest_y,
uint8_t dest_cb,
uint8_t dest_cr,
int  x_offset,
int  y_offset,
qpel_mc_func qpix_put,
h264_chroma_mc_func  chroma_put,
qpel_mc_func qpix_avg,
h264_chroma_mc_func  chroma_avg,
cavs_vector mv 
) [inline, static]

Definition at line 418 of file cavs.c.

Referenced by ff_cavs_inter(), and mc_part().

static void modify_pred ( const int8_t *  mod_table,
int mode 
) [inline, static]

Definition at line 330 of file cavs.c.

Referenced by ff_cavs_modify_mb_i().

static void mv_pred_median ( AVSContext h,
cavs_vector mvP,
cavs_vector mvA,
cavs_vector mvB,
cavs_vector mvC 
) [inline, static]

Definition at line 495 of file cavs.c.

Referenced by ff_cavs_mv().

static void scale_mv ( AVSContext h,
int d_x,
int d_y,
cavs_vector src,
int  distp 
) [inline, static]

Definition at line 488 of file cavs.c.

Referenced by mv_pred_median(), vc1_pred_b_mv(), and vc1_pred_b_mv_intfi().


Variable Documentation

const uint8_t alpha_tab[64] [static]

Initial value:

 {
   0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  2,  2,  2,  3,  3,
   4,  4,  5,  5,  6,  7,  8,  9, 10, 11, 12, 13, 15, 16, 18, 20,
  22, 24, 26, 28, 30, 33, 33, 35, 35, 36, 37, 37, 39, 39, 42, 44,
  46, 48, 50, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64
}

Definition at line 34 of file cavs.c.

const uint8_t beta_tab[64] [static]

Initial value:

 {
   0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,
   2,  2,  3,  3,  3,  3,  4,  4,  4,  4,  5,  5,  5,  5,  6,  6,
   6,  7,  7,  7,  8,  8,  8,  9,  9, 10, 10, 11, 11, 12, 13, 14,
  15, 16, 17, 18, 19, 20, 21, 22, 23, 23, 24, 24, 25, 25, 26, 27
}

Definition at line 41 of file cavs.c.

const int8_t left_modifier_c[7] = { 5, -1, 2, -1, 6, 5, 6 } [static]

Definition at line 61 of file cavs.c.

Referenced by ff_cavs_modify_mb_i().

const int8_t left_modifier_l[8] = { 0, -1, 6, -1, -1, 7, 6, 7 } [static]

Definition at line 59 of file cavs.c.

Referenced by ff_cavs_modify_mb_i().

const uint8_t tc_tab[64] [static]

Initial value:

 {
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
  2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4,
  5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9
}

Definition at line 48 of file cavs.c.

const int8_t top_modifier_c[7] = { 4, 1, -1, -1, 4, 6, 6 } [static]

Definition at line 62 of file cavs.c.

Referenced by ff_cavs_modify_mb_i().

const int8_t top_modifier_l[8] = { -1, 1, 5, -1, -1, 5, 7, 7 } [static]

Definition at line 60 of file cavs.c.

Referenced by ff_cavs_modify_mb_i().

const cavs_vector un_mv = { 0, 0, 1, NOT_AVAIL } [static]

mark block as unavailable, i.e.

out of picture or not yet decoded

Definition at line 57 of file cavs.c.


Generated on Fri Oct 26 02:50:04 2012 for FFmpeg by  doxygen 1.5.8