mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-23 11:19:55 +00:00
cavs: Move data tables used in only one place to that file
This commit is contained in:
parent
09bd0ea94e
commit
ef07ac1e12
@ -32,6 +32,36 @@
|
|||||||
#include "cavs.h"
|
#include "cavs.h"
|
||||||
#include "cavsdata.h"
|
#include "cavsdata.h"
|
||||||
|
|
||||||
|
static const uint8_t alpha_tab[64] = {
|
||||||
|
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
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint8_t beta_tab[64] = {
|
||||||
|
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
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint8_t tc_tab[64] = {
|
||||||
|
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
|
||||||
|
};
|
||||||
|
|
||||||
|
/** mark block as unavailable, i.e. out of picture
|
||||||
|
or not yet decoded */
|
||||||
|
static const cavs_vector un_mv = { 0, 0, 1, NOT_AVAIL };
|
||||||
|
|
||||||
|
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 };
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* in-loop deblocking filter
|
* in-loop deblocking filter
|
||||||
@ -307,14 +337,14 @@ void ff_cavs_modify_mb_i(AVSContext *h, int *pred_mode_uv) {
|
|||||||
|
|
||||||
/* modify pred modes according to availability of neighbour samples */
|
/* modify pred modes according to availability of neighbour samples */
|
||||||
if(!(h->flags & A_AVAIL)) {
|
if(!(h->flags & A_AVAIL)) {
|
||||||
modify_pred(ff_left_modifier_l, &h->pred_mode_Y[4] );
|
modify_pred(left_modifier_l, &h->pred_mode_Y[4]);
|
||||||
modify_pred(ff_left_modifier_l, &h->pred_mode_Y[7] );
|
modify_pred(left_modifier_l, &h->pred_mode_Y[7]);
|
||||||
modify_pred(ff_left_modifier_c, pred_mode_uv );
|
modify_pred(left_modifier_c, pred_mode_uv);
|
||||||
}
|
}
|
||||||
if(!(h->flags & B_AVAIL)) {
|
if(!(h->flags & B_AVAIL)) {
|
||||||
modify_pred(ff_top_modifier_l, &h->pred_mode_Y[4] );
|
modify_pred(top_modifier_l, &h->pred_mode_Y[4]);
|
||||||
modify_pred(ff_top_modifier_l, &h->pred_mode_Y[5] );
|
modify_pred(top_modifier_l, &h->pred_mode_Y[5]);
|
||||||
modify_pred(ff_top_modifier_c, pred_mode_uv );
|
modify_pred(top_modifier_c, pred_mode_uv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -496,7 +526,7 @@ void ff_cavs_mv(AVSContext *h, enum cavs_mv_loc nP, enum cavs_mv_loc nC,
|
|||||||
((mvA->ref == NOT_AVAIL) || (mvB->ref == NOT_AVAIL) ||
|
((mvA->ref == NOT_AVAIL) || (mvB->ref == NOT_AVAIL) ||
|
||||||
((mvA->x | mvA->y | mvA->ref) == 0) ||
|
((mvA->x | mvA->y | mvA->ref) == 0) ||
|
||||||
((mvB->x | mvB->y | mvB->ref) == 0) )) {
|
((mvB->x | mvB->y | mvB->ref) == 0) )) {
|
||||||
mvP2 = &ff_cavs_un_mv;
|
mvP2 = &un_mv;
|
||||||
/* if there is only one suitable candidate, take it */
|
/* if there is only one suitable candidate, take it */
|
||||||
} else if((mvA->ref >= 0) && (mvB->ref < 0) && (mvC->ref < 0)) {
|
} else if((mvA->ref >= 0) && (mvB->ref < 0) && (mvC->ref < 0)) {
|
||||||
mvP2= mvA;
|
mvP2= mvA;
|
||||||
@ -545,10 +575,10 @@ void ff_cavs_init_mb(AVSContext *h) {
|
|||||||
h->pred_mode_Y[2] = h->top_pred_Y[h->mbx*2+1];
|
h->pred_mode_Y[2] = h->top_pred_Y[h->mbx*2+1];
|
||||||
/* clear top predictors if MB B is not available */
|
/* clear top predictors if MB B is not available */
|
||||||
if(!(h->flags & B_AVAIL)) {
|
if(!(h->flags & B_AVAIL)) {
|
||||||
h->mv[MV_FWD_B2] = ff_cavs_un_mv;
|
h->mv[MV_FWD_B2] = un_mv;
|
||||||
h->mv[MV_FWD_B3] = ff_cavs_un_mv;
|
h->mv[MV_FWD_B3] = un_mv;
|
||||||
h->mv[MV_BWD_B2] = ff_cavs_un_mv;
|
h->mv[MV_BWD_B2] = un_mv;
|
||||||
h->mv[MV_BWD_B3] = ff_cavs_un_mv;
|
h->mv[MV_BWD_B3] = un_mv;
|
||||||
h->pred_mode_Y[1] = h->pred_mode_Y[2] = NOT_AVAIL;
|
h->pred_mode_Y[1] = h->pred_mode_Y[2] = NOT_AVAIL;
|
||||||
h->flags &= ~(C_AVAIL|D_AVAIL);
|
h->flags &= ~(C_AVAIL|D_AVAIL);
|
||||||
} else if(h->mbx) {
|
} else if(h->mbx) {
|
||||||
@ -558,13 +588,13 @@ void ff_cavs_init_mb(AVSContext *h) {
|
|||||||
h->flags &= ~C_AVAIL;
|
h->flags &= ~C_AVAIL;
|
||||||
/* clear top-right predictors if MB C is not available */
|
/* clear top-right predictors if MB C is not available */
|
||||||
if(!(h->flags & C_AVAIL)) {
|
if(!(h->flags & C_AVAIL)) {
|
||||||
h->mv[MV_FWD_C2] = ff_cavs_un_mv;
|
h->mv[MV_FWD_C2] = un_mv;
|
||||||
h->mv[MV_BWD_C2] = ff_cavs_un_mv;
|
h->mv[MV_BWD_C2] = un_mv;
|
||||||
}
|
}
|
||||||
/* clear top-left predictors if MB D is not available */
|
/* clear top-left predictors if MB D is not available */
|
||||||
if(!(h->flags & D_AVAIL)) {
|
if(!(h->flags & D_AVAIL)) {
|
||||||
h->mv[MV_FWD_D3] = ff_cavs_un_mv;
|
h->mv[MV_FWD_D3] = un_mv;
|
||||||
h->mv[MV_BWD_D3] = ff_cavs_un_mv;
|
h->mv[MV_BWD_D3] = un_mv;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -597,7 +627,7 @@ int ff_cavs_next_mb(AVSContext *h) {
|
|||||||
h->pred_mode_Y[3] = h->pred_mode_Y[6] = NOT_AVAIL;
|
h->pred_mode_Y[3] = h->pred_mode_Y[6] = NOT_AVAIL;
|
||||||
/* clear left mv predictors */
|
/* clear left mv predictors */
|
||||||
for(i=0;i<=20;i+=4)
|
for(i=0;i<=20;i+=4)
|
||||||
h->mv[i] = ff_cavs_un_mv;
|
h->mv[i] = un_mv;
|
||||||
h->mbx = 0;
|
h->mbx = 0;
|
||||||
h->mby++;
|
h->mby++;
|
||||||
/* re-calculate sample pointers */
|
/* re-calculate sample pointers */
|
||||||
@ -622,7 +652,7 @@ void ff_cavs_init_pic(AVSContext *h) {
|
|||||||
|
|
||||||
/* clear some predictors */
|
/* clear some predictors */
|
||||||
for(i=0;i<=20;i+=4)
|
for(i=0;i<=20;i+=4)
|
||||||
h->mv[i] = ff_cavs_un_mv;
|
h->mv[i] = un_mv;
|
||||||
h->mv[MV_BWD_X0] = ff_cavs_dir_mv;
|
h->mv[MV_BWD_X0] = ff_cavs_dir_mv;
|
||||||
set_mvs(&h->mv[MV_BWD_X0], BLK_16X16);
|
set_mvs(&h->mv[MV_BWD_X0], BLK_16X16);
|
||||||
h->mv[MV_FWD_X0] = ff_cavs_dir_mv;
|
h->mv[MV_FWD_X0] = ff_cavs_dir_mv;
|
||||||
@ -693,8 +723,8 @@ av_cold int ff_cavs_init(AVCodecContext *avctx) {
|
|||||||
h->intra_pred_c[ INTRA_C_LP_LEFT] = intra_pred_lp_left;
|
h->intra_pred_c[ INTRA_C_LP_LEFT] = intra_pred_lp_left;
|
||||||
h->intra_pred_c[ INTRA_C_LP_TOP] = intra_pred_lp_top;
|
h->intra_pred_c[ INTRA_C_LP_TOP] = intra_pred_lp_top;
|
||||||
h->intra_pred_c[ INTRA_C_DC_128] = intra_pred_dc_128;
|
h->intra_pred_c[ INTRA_C_DC_128] = intra_pred_dc_128;
|
||||||
h->mv[ 7] = ff_cavs_un_mv;
|
h->mv[ 7] = un_mv;
|
||||||
h->mv[19] = ff_cavs_un_mv;
|
h->mv[19] = un_mv;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,20 +225,8 @@ typedef struct {
|
|||||||
DCTELEM *block;
|
DCTELEM *block;
|
||||||
} AVSContext;
|
} AVSContext;
|
||||||
|
|
||||||
extern const uint8_t ff_cavs_dequant_shift[64];
|
|
||||||
extern const uint16_t ff_cavs_dequant_mul[64];
|
|
||||||
extern const struct dec_2dvlc ff_cavs_intra_dec[7];
|
|
||||||
extern const struct dec_2dvlc ff_cavs_inter_dec[7];
|
|
||||||
extern const struct dec_2dvlc ff_cavs_chroma_dec[5];
|
|
||||||
extern const uint8_t ff_cavs_chroma_qp[64];
|
|
||||||
extern const uint8_t ff_cavs_scan3x3[4];
|
|
||||||
extern const uint8_t ff_cavs_partition_flags[30];
|
extern const uint8_t ff_cavs_partition_flags[30];
|
||||||
extern const int8_t ff_left_modifier_l[8];
|
|
||||||
extern const int8_t ff_top_modifier_l[8];
|
|
||||||
extern const int8_t ff_left_modifier_c[7];
|
|
||||||
extern const int8_t ff_top_modifier_c[7];
|
|
||||||
extern const cavs_vector ff_cavs_intra_mv;
|
extern const cavs_vector ff_cavs_intra_mv;
|
||||||
extern const cavs_vector ff_cavs_un_mv;
|
|
||||||
extern const cavs_vector ff_cavs_dir_mv;
|
extern const cavs_vector ff_cavs_dir_mv;
|
||||||
|
|
||||||
static inline void modify_pred(const int8_t *mod_table, int *mode)
|
static inline void modify_pred(const int8_t *mod_table, int *mode)
|
||||||
|
@ -57,41 +57,6 @@ const uint8_t ff_cavs_partition_flags[30] = {
|
|||||||
SPLITH|SPLITV, //B_8X8 = 29
|
SPLITH|SPLITV, //B_8X8 = 29
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t ff_cavs_scan3x3[4] = {4,5,7,8};
|
|
||||||
|
|
||||||
const uint8_t ff_cavs_chroma_qp[64] = {
|
|
||||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,
|
|
||||||
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
|
|
||||||
32,33,34,35,36,37,38,39,40,41,42,42,43,43,44,44,
|
|
||||||
45,45,46,46,47,47,48,48,48,49,49,49,50,50,50,51
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint8_t ff_cavs_dequant_shift[64] = {
|
|
||||||
14,14,14,14,14,14,14,14,
|
|
||||||
13,13,13,13,13,13,13,13,
|
|
||||||
13,12,12,12,12,12,12,12,
|
|
||||||
11,11,11,11,11,11,11,11,
|
|
||||||
11,10,10,10,10,10,10,10,
|
|
||||||
10, 9, 9, 9, 9, 9, 9, 9,
|
|
||||||
9, 8, 8, 8, 8, 8, 8, 8,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t ff_cavs_dequant_mul[64] = {
|
|
||||||
32768,36061,38968,42495,46341,50535,55437,60424,
|
|
||||||
32932,35734,38968,42495,46177,50535,55109,59933,
|
|
||||||
65535,35734,38968,42577,46341,50617,55027,60097,
|
|
||||||
32809,35734,38968,42454,46382,50576,55109,60056,
|
|
||||||
65535,35734,38968,42495,46320,50515,55109,60076,
|
|
||||||
65535,35744,38968,42495,46341,50535,55099,60087,
|
|
||||||
65535,35734,38973,42500,46341,50535,55109,60097,
|
|
||||||
32771,35734,38965,42497,46341,50535,55109,60099
|
|
||||||
};
|
|
||||||
|
|
||||||
/** mark block as unavailable, i.e. out of picture
|
|
||||||
or not yet decoded */
|
|
||||||
const cavs_vector ff_cavs_un_mv = {0,0,1,NOT_AVAIL};
|
|
||||||
|
|
||||||
/** mark block as "no prediction from this direction"
|
/** mark block as "no prediction from this direction"
|
||||||
e.g. forward motion vector in BWD partition */
|
e.g. forward motion vector in BWD partition */
|
||||||
const cavs_vector ff_cavs_dir_mv = {0,0,1,REF_DIR};
|
const cavs_vector ff_cavs_dir_mv = {0,0,1,REF_DIR};
|
||||||
@ -99,407 +64,4 @@ const cavs_vector ff_cavs_dir_mv = {0,0,1,REF_DIR};
|
|||||||
/** mark block as using intra prediction */
|
/** mark block as using intra prediction */
|
||||||
const cavs_vector ff_cavs_intra_mv = {0,0,1,REF_INTRA};
|
const cavs_vector ff_cavs_intra_mv = {0,0,1,REF_INTRA};
|
||||||
|
|
||||||
#define EOB 0,0,0
|
|
||||||
|
|
||||||
const struct dec_2dvlc ff_cavs_intra_dec[7] = {
|
|
||||||
{
|
|
||||||
{ //level / run / table_inc
|
|
||||||
{ 1, 1, 1},{ -1, 1, 1},{ 1, 2, 1},{ -1, 2, 1},{ 1, 3, 1},{ -1, 3, 1},
|
|
||||||
{ 1, 4, 1},{ -1, 4, 1},{ 1, 5, 1},{ -1, 5, 1},{ 1, 6, 1},{ -1, 6, 1},
|
|
||||||
{ 1, 7, 1},{ -1, 7, 1},{ 1, 8, 1},{ -1, 8, 1},{ 1, 9, 1},{ -1, 9, 1},
|
|
||||||
{ 1,10, 1},{ -1,10, 1},{ 1,11, 1},{ -1,11, 1},{ 2, 1, 2},{ -2, 1, 2},
|
|
||||||
{ 1,12, 1},{ -1,12, 1},{ 1,13, 1},{ -1,13, 1},{ 1,14, 1},{ -1,14, 1},
|
|
||||||
{ 1,15, 1},{ -1,15, 1},{ 2, 2, 2},{ -2, 2, 2},{ 1,16, 1},{ -1,16, 1},
|
|
||||||
{ 1,17, 1},{ -1,17, 1},{ 3, 1, 3},{ -3, 1, 3},{ 1,18, 1},{ -1,18, 1},
|
|
||||||
{ 1,19, 1},{ -1,19, 1},{ 2, 3, 2},{ -2, 3, 2},{ 1,20, 1},{ -1,20, 1},
|
|
||||||
{ 1,21, 1},{ -1,21, 1},{ 2, 4, 2},{ -2, 4, 2},{ 1,22, 1},{ -1,22, 1},
|
|
||||||
{ 2, 5, 2},{ -2, 5, 2},{ 1,23, 1},{ -1,23, 1},{ EOB }
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
||||||
2, 2, 2, 2, 2, 2, 2,-1,-1,-1},
|
|
||||||
2, //golomb_order
|
|
||||||
0, //inc_limit
|
|
||||||
23, //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ 1, 1, 0},{ -1, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 2, 1, 1},{ -2, 1, 1},
|
|
||||||
{ 1, 3, 0},{ -1, 3, 0},{ EOB },{ 1, 4, 0},{ -1, 4, 0},{ 1, 5, 0},
|
|
||||||
{ -1, 5, 0},{ 1, 6, 0},{ -1, 6, 0},{ 3, 1, 2},{ -3, 1, 2},{ 2, 2, 1},
|
|
||||||
{ -2, 2, 1},{ 1, 7, 0},{ -1, 7, 0},{ 1, 8, 0},{ -1, 8, 0},{ 1, 9, 0},
|
|
||||||
{ -1, 9, 0},{ 2, 3, 1},{ -2, 3, 1},{ 4, 1, 2},{ -4, 1, 2},{ 1,10, 0},
|
|
||||||
{ -1,10, 0},{ 1,11, 0},{ -1,11, 0},{ 2, 4, 1},{ -2, 4, 1},{ 3, 2, 2},
|
|
||||||
{ -3, 2, 2},{ 1,12, 0},{ -1,12, 0},{ 2, 5, 1},{ -2, 5, 1},{ 5, 1, 3},
|
|
||||||
{ -5, 1, 3},{ 1,13, 0},{ -1,13, 0},{ 2, 6, 1},{ -2, 6, 1},{ 1,14, 0},
|
|
||||||
{ -1,14, 0},{ 2, 7, 1},{ -2, 7, 1},{ 2, 8, 1},{ -2, 8, 1},{ 3, 3, 2},
|
|
||||||
{ -3, 3, 2},{ 6, 1, 3},{ -6, 1, 3},{ 1,15, 0},{ -1,15, 0}
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0, 7, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2,-1,
|
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
2, //golomb_order
|
|
||||||
1, //inc_limit
|
|
||||||
15, //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 1, 2, 0},{ -1, 2, 0},
|
|
||||||
{ 3, 1, 1},{ -3, 1, 1},{ EOB },{ 1, 3, 0},{ -1, 3, 0},{ 2, 2, 0},
|
|
||||||
{ -2, 2, 0},{ 4, 1, 1},{ -4, 1, 1},{ 1, 4, 0},{ -1, 4, 0},{ 5, 1, 2},
|
|
||||||
{ -5, 1, 2},{ 1, 5, 0},{ -1, 5, 0},{ 3, 2, 1},{ -3, 2, 1},{ 2, 3, 0},
|
|
||||||
{ -2, 3, 0},{ 1, 6, 0},{ -1, 6, 0},{ 6, 1, 2},{ -6, 1, 2},{ 2, 4, 0},
|
|
||||||
{ -2, 4, 0},{ 1, 7, 0},{ -1, 7, 0},{ 4, 2, 1},{ -4, 2, 1},{ 7, 1, 2},
|
|
||||||
{ -7, 1, 2},{ 3, 3, 1},{ -3, 3, 1},{ 2, 5, 0},{ -2, 5, 0},{ 1, 8, 0},
|
|
||||||
{ -1, 8, 0},{ 2, 6, 0},{ -2, 6, 0},{ 8, 1, 3},{ -8, 1, 3},{ 1, 9, 0},
|
|
||||||
{ -1, 9, 0},{ 5, 2, 2},{ -5, 2, 2},{ 3, 4, 1},{ -3, 4, 1},{ 2, 7, 0},
|
|
||||||
{ -2, 7, 0},{ 9, 1, 3},{ -9, 1, 3},{ 1,10, 0},{ -1,10, 0}
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0,10, 6, 4, 4, 3, 3, 3, 2, 2, 2,-1,-1,-1,-1,-1,-1,
|
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
2, //golomb_order
|
|
||||||
2, //inc_limit
|
|
||||||
10, //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},{ -3, 1, 0},
|
|
||||||
{ 1, 2, 0},{ -1, 2, 0},{ EOB },{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 1},
|
|
||||||
{ -5, 1, 1},{ 2, 2, 0},{ -2, 2, 0},{ 1, 3, 0},{ -1, 3, 0},{ 6, 1, 1},
|
|
||||||
{ -6, 1, 1},{ 3, 2, 0},{ -3, 2, 0},{ 7, 1, 1},{ -7, 1, 1},{ 1, 4, 0},
|
|
||||||
{ -1, 4, 0},{ 8, 1, 2},{ -8, 1, 2},{ 2, 3, 0},{ -2, 3, 0},{ 4, 2, 0},
|
|
||||||
{ -4, 2, 0},{ 1, 5, 0},{ -1, 5, 0},{ 9, 1, 2},{ -9, 1, 2},{ 5, 2, 1},
|
|
||||||
{ -5, 2, 1},{ 2, 4, 0},{ -2, 4, 0},{ 10, 1, 2},{-10, 1, 2},{ 3, 3, 0},
|
|
||||||
{ -3, 3, 0},{ 1, 6, 0},{ -1, 6, 0},{ 11, 1, 3},{-11, 1, 3},{ 6, 2, 1},
|
|
||||||
{ -6, 2, 1},{ 1, 7, 0},{ -1, 7, 0},{ 2, 5, 0},{ -2, 5, 0},{ 3, 4, 0},
|
|
||||||
{ -3, 4, 0},{ 12, 1, 3},{-12, 1, 3},{ 4, 3, 0},{ -4, 3, 0}
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0,13, 7, 5, 4, 3, 2, 2,-1,-1,-1 -1,-1,-1,-1,-1,-1,
|
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
2, //golomb_order
|
|
||||||
4, //inc_limit
|
|
||||||
7, //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},{ -3, 1, 0},
|
|
||||||
{ EOB },{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 0},{ -5, 1, 0},{ 6, 1, 0},
|
|
||||||
{ -6, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 7, 1, 0},{ -7, 1, 0},{ 8, 1, 1},
|
|
||||||
{ -8, 1, 1},{ 2, 2, 0},{ -2, 2, 0},{ 9, 1, 1},{ -9, 1, 1},{ 10, 1, 1},
|
|
||||||
{-10, 1, 1},{ 1, 3, 0},{ -1, 3, 0},{ 3, 2, 0},{ -3, 2, 0},{ 11, 1, 2},
|
|
||||||
{-11, 1, 2},{ 4, 2, 0},{ -4, 2, 0},{ 12, 1, 2},{-12, 1, 2},{ 13, 1, 2},
|
|
||||||
{-13, 1, 2},{ 5, 2, 0},{ -5, 2, 0},{ 1, 4, 0},{ -1, 4, 0},{ 2, 3, 0},
|
|
||||||
{ -2, 3, 0},{ 14, 1, 2},{-14, 1, 2},{ 6, 2, 0},{ -6, 2, 0},{ 15, 1, 2},
|
|
||||||
{-15, 1, 2},{ 16, 1, 2},{-16, 1, 2},{ 3, 3, 0},{ -3, 3, 0},{ 1, 5, 0},
|
|
||||||
{ -1, 5, 0},{ 7, 2, 0},{ -7, 2, 0},{ 17, 1, 2},{-17, 1, 2}
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0,18, 8, 4, 2, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
2, //golomb_order
|
|
||||||
7, //inc_limit
|
|
||||||
5, //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ EOB },{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},
|
|
||||||
{ -3, 1, 0},{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 0},{ -5, 1, 0},{ 6, 1, 0},
|
|
||||||
{ -6, 1, 0},{ 7, 1, 0},{ -7, 1, 0},{ 8, 1, 0},{ -8, 1, 0},{ 9, 1, 0},
|
|
||||||
{ -9, 1, 0},{ 10, 1, 0},{-10, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 11, 1, 1},
|
|
||||||
{-11, 1, 1},{ 12, 1, 1},{-12, 1, 1},{ 13, 1, 1},{-13, 1, 1},{ 2, 2, 0},
|
|
||||||
{ -2, 2, 0},{ 14, 1, 1},{-14, 1, 1},{ 15, 1, 1},{-15, 1, 1},{ 3, 2, 0},
|
|
||||||
{ -3, 2, 0},{ 16, 1, 1},{-16, 1, 1},{ 1, 3, 0},{ -1, 3, 0},{ 17, 1, 1},
|
|
||||||
{-17, 1, 1},{ 4, 2, 0},{ -4, 2, 0},{ 18, 1, 1},{-18, 1, 1},{ 5, 2, 0},
|
|
||||||
{ -5, 2, 0},{ 19, 1, 1},{-19, 1, 1},{ 20, 1, 1},{-20, 1, 1},{ 6, 2, 0},
|
|
||||||
{ -6, 2, 0},{ 21, 1, 1},{-21, 1, 1},{ 2, 3, 0},{ -2, 3, 0}
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0,22, 7, 3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
2, //golomb_order
|
|
||||||
10, //inc_limit
|
|
||||||
3, //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ EOB },{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},
|
|
||||||
{ -3, 1, 0},{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 0},{ -5, 1, 0},{ 6, 1, 0},
|
|
||||||
{ -6, 1, 0},{ 7, 1, 0},{ -7, 1, 0},{ 8, 1, 0},{ -8, 1, 0},{ 9, 1, 0},
|
|
||||||
{ -9, 1, 0},{ 10, 1, 0},{-10, 1, 0},{ 11, 1, 0},{-11, 1, 0},{ 12, 1, 0},
|
|
||||||
{-12, 1, 0},{ 13, 1, 0},{-13, 1, 0},{ 14, 1, 0},{-14, 1, 0},{ 15, 1, 0},
|
|
||||||
{-15, 1, 0},{ 16, 1, 0},{-16, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 17, 1, 0},
|
|
||||||
{-17, 1, 0},{ 18, 1, 0},{-18, 1, 0},{ 19, 1, 0},{-19, 1, 0},{ 20, 1, 0},
|
|
||||||
{-20, 1, 0},{ 21, 1, 0},{-21, 1, 0},{ 2, 2, 0},{ -2, 2, 0},{ 22, 1, 0},
|
|
||||||
{-22, 1, 0},{ 23, 1, 0},{-23, 1, 0},{ 24, 1, 0},{-24, 1, 0},{ 25, 1, 0},
|
|
||||||
{-25, 1, 0},{ 3, 2, 0},{ -3, 2, 0},{ 26, 1, 0},{-26, 1, 0}
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0,27, 4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
2, //golomb_order
|
|
||||||
INT_MAX, //inc_limit
|
|
||||||
2, //max_run
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const struct dec_2dvlc ff_cavs_inter_dec[7] = {
|
|
||||||
{
|
|
||||||
{ //level / run
|
|
||||||
{ 1, 1, 1},{ -1, 1, 1},{ 1, 2, 1},{ -1, 2, 1},{ 1, 3, 1},{ -1, 3, 1},
|
|
||||||
{ 1, 4, 1},{ -1, 4, 1},{ 1, 5, 1},{ -1, 5, 1},{ 1, 6, 1},{ -1, 6, 1},
|
|
||||||
{ 1, 7, 1},{ -1, 7, 1},{ 1, 8, 1},{ -1, 8, 1},{ 1, 9, 1},{ -1, 9, 1},
|
|
||||||
{ 1,10, 1},{ -1,10, 1},{ 1,11, 1},{ -1,11, 1},{ 1,12, 1},{ -1,12, 1},
|
|
||||||
{ 1,13, 1},{ -1,13, 1},{ 2, 1, 2},{ -2, 1, 2},{ 1,14, 1},{ -1,14, 1},
|
|
||||||
{ 1,15, 1},{ -1,15, 1},{ 1,16, 1},{ -1,16, 1},{ 1,17, 1},{ -1,17, 1},
|
|
||||||
{ 1,18, 1},{ -1,18, 1},{ 1,19, 1},{ -1,19, 1},{ 3, 1, 3},{ -3, 1, 3},
|
|
||||||
{ 1,20, 1},{ -1,20, 1},{ 1,21, 1},{ -1,21, 1},{ 2, 2, 2},{ -2, 2, 2},
|
|
||||||
{ 1,22, 1},{ -1,22, 1},{ 1,23, 1},{ -1,23, 1},{ 1,24, 1},{ -1,24, 1},
|
|
||||||
{ 1,25, 1},{ -1,25, 1},{ 1,26, 1},{ -1,26, 1},{ EOB }
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0, 4, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
||||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
|
|
||||||
3, //golomb_order
|
|
||||||
0, //inc_limit
|
|
||||||
26 //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ 1, 1, 0},{ -1, 1, 0},{ EOB },{ 1, 2, 0},{ -1, 2, 0},{ 1, 3, 0},
|
|
||||||
{ -1, 3, 0},{ 1, 4, 0},{ -1, 4, 0},{ 1, 5, 0},{ -1, 5, 0},{ 1, 6, 0},
|
|
||||||
{ -1, 6, 0},{ 2, 1, 1},{ -2, 1, 1},{ 1, 7, 0},{ -1, 7, 0},{ 1, 8, 0},
|
|
||||||
{ -1, 8, 0},{ 1, 9, 0},{ -1, 9, 0},{ 1,10, 0},{ -1,10, 0},{ 2, 2, 1},
|
|
||||||
{ -2, 2, 1},{ 1,11, 0},{ -1,11, 0},{ 1,12, 0},{ -1,12, 0},{ 3, 1, 2},
|
|
||||||
{ -3, 1, 2},{ 1,13, 0},{ -1,13, 0},{ 1,14, 0},{ -1,14, 0},{ 2, 3, 1},
|
|
||||||
{ -2, 3, 1},{ 1,15, 0},{ -1,15, 0},{ 2, 4, 1},{ -2, 4, 1},{ 1,16, 0},
|
|
||||||
{ -1,16, 0},{ 2, 5, 1},{ -2, 5, 1},{ 1,17, 0},{ -1,17, 0},{ 4, 1, 3},
|
|
||||||
{ -4, 1, 3},{ 2, 6, 1},{ -2, 6, 1},{ 1,18, 0},{ -1,18, 0},{ 1,19, 0},
|
|
||||||
{ -1,19, 0},{ 2, 7, 1},{ -2, 7, 1},{ 3, 2, 2},{ -3, 2, 2}
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0, 5, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
||||||
2, 2, 2,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
2, //golomb_order
|
|
||||||
1, //inc_limit
|
|
||||||
19 //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ 1, 1, 0},{ -1, 1, 0},{ EOB },{ 1, 2, 0},{ -1, 2, 0},{ 2, 1, 0},
|
|
||||||
{ -2, 1, 0},{ 1, 3, 0},{ -1, 3, 0},{ 1, 4, 0},{ -1, 4, 0},{ 3, 1, 1},
|
|
||||||
{ -3, 1, 1},{ 2, 2, 0},{ -2, 2, 0},{ 1, 5, 0},{ -1, 5, 0},{ 1, 6, 0},
|
|
||||||
{ -1, 6, 0},{ 1, 7, 0},{ -1, 7, 0},{ 2, 3, 0},{ -2, 3, 0},{ 4, 1, 2},
|
|
||||||
{ -4, 1, 2},{ 1, 8, 0},{ -1, 8, 0},{ 3, 2, 1},{ -3, 2, 1},{ 2, 4, 0},
|
|
||||||
{ -2, 4, 0},{ 1, 9, 0},{ -1, 9, 0},{ 1,10, 0},{ -1,10, 0},{ 5, 1, 2},
|
|
||||||
{ -5, 1, 2},{ 2, 5, 0},{ -2, 5, 0},{ 1,11, 0},{ -1,11, 0},{ 2, 6, 0},
|
|
||||||
{ -2, 6, 0},{ 1,12, 0},{ -1,12, 0},{ 3, 3, 1},{ -3, 3, 1},{ 6, 1, 2},
|
|
||||||
{ -6, 1, 2},{ 4, 2, 2},{ -4, 2, 2},{ 1,13, 0},{ -1,13, 0},{ 2, 7, 0},
|
|
||||||
{ -2, 7, 0},{ 3, 4, 1},{ -3, 4, 1},{ 1,14, 0},{ -1,14, 0}
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0, 7, 5, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2,-1,-1,
|
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
2, //golomb_order
|
|
||||||
2, //inc_limit
|
|
||||||
14 //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ 1, 1, 0},{ -1, 1, 0},{ EOB },{ 2, 1, 0},{ -2, 1, 0},{ 1, 2, 0},
|
|
||||||
{ -1, 2, 0},{ 3, 1, 0},{ -3, 1, 0},{ 1, 3, 0},{ -1, 3, 0},{ 2, 2, 0},
|
|
||||||
{ -2, 2, 0},{ 4, 1, 1},{ -4, 1, 1},{ 1, 4, 0},{ -1, 4, 0},{ 5, 1, 1},
|
|
||||||
{ -5, 1, 1},{ 1, 5, 0},{ -1, 5, 0},{ 3, 2, 0},{ -3, 2, 0},{ 2, 3, 0},
|
|
||||||
{ -2, 3, 0},{ 1, 6, 0},{ -1, 6, 0},{ 6, 1, 1},{ -6, 1, 1},{ 2, 4, 0},
|
|
||||||
{ -2, 4, 0},{ 1, 7, 0},{ -1, 7, 0},{ 4, 2, 1},{ -4, 2, 1},{ 7, 1, 2},
|
|
||||||
{ -7, 1, 2},{ 3, 3, 0},{ -3, 3, 0},{ 1, 8, 0},{ -1, 8, 0},{ 2, 5, 0},
|
|
||||||
{ -2, 5, 0},{ 8, 1, 2},{ -8, 1, 2},{ 1, 9, 0},{ -1, 9, 0},{ 3, 4, 0},
|
|
||||||
{ -3, 4, 0},{ 2, 6, 0},{ -2, 6, 0},{ 5, 2, 1},{ -5, 2, 1},{ 1,10, 0},
|
|
||||||
{ -1,10, 0},{ 9, 1, 2},{ -9, 1, 2},{ 4, 3, 1},{ -4, 3, 1}
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0,10, 6, 5, 4, 3, 3, 2, 2, 2, 2,-1,-1,-1,-1,-1,-1,
|
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
2, //golomb_order
|
|
||||||
3, //inc_limit
|
|
||||||
10 //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ 1, 1, 0},{ -1, 1, 0},{ EOB },{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},
|
|
||||||
{ -3, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 0},
|
|
||||||
{ -5, 1, 0},{ 2, 2, 0},{ -2, 2, 0},{ 1, 3, 0},{ -1, 3, 0},{ 6, 1, 0},
|
|
||||||
{ -6, 1, 0},{ 3, 2, 0},{ -3, 2, 0},{ 7, 1, 1},{ -7, 1, 1},{ 1, 4, 0},
|
|
||||||
{ -1, 4, 0},{ 8, 1, 1},{ -8, 1, 1},{ 2, 3, 0},{ -2, 3, 0},{ 4, 2, 0},
|
|
||||||
{ -4, 2, 0},{ 1, 5, 0},{ -1, 5, 0},{ 9, 1, 1},{ -9, 1, 1},{ 5, 2, 0},
|
|
||||||
{ -5, 2, 0},{ 2, 4, 0},{ -2, 4, 0},{ 1, 6, 0},{ -1, 6, 0},{ 10, 1, 2},
|
|
||||||
{-10, 1, 2},{ 3, 3, 0},{ -3, 3, 0},{ 11, 1, 2},{-11, 1, 2},{ 1, 7, 0},
|
|
||||||
{ -1, 7, 0},{ 6, 2, 0},{ -6, 2, 0},{ 3, 4, 0},{ -3, 4, 0},{ 2, 5, 0},
|
|
||||||
{ -2, 5, 0},{ 12, 1, 2},{-12, 1, 2},{ 4, 3, 0},{ -4, 3, 0}
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0,13, 7, 5, 4, 3, 2, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
2, //golomb_order
|
|
||||||
6, //inc_limit
|
|
||||||
7 //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ EOB },{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},
|
|
||||||
{ -3, 1, 0},{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 0},{ -5, 1, 0},{ 1, 2, 0},
|
|
||||||
{ -1, 2, 0},{ 6, 1, 0},{ -6, 1, 0},{ 7, 1, 0},{ -7, 1, 0},{ 8, 1, 0},
|
|
||||||
{ -8, 1, 0},{ 2, 2, 0},{ -2, 2, 0},{ 9, 1, 0},{ -9, 1, 0},{ 1, 3, 0},
|
|
||||||
{ -1, 3, 0},{ 10, 1, 1},{-10, 1, 1},{ 3, 2, 0},{ -3, 2, 0},{ 11, 1, 1},
|
|
||||||
{-11, 1, 1},{ 4, 2, 0},{ -4, 2, 0},{ 12, 1, 1},{-12, 1, 1},{ 1, 4, 0},
|
|
||||||
{ -1, 4, 0},{ 2, 3, 0},{ -2, 3, 0},{ 13, 1, 1},{-13, 1, 1},{ 5, 2, 0},
|
|
||||||
{ -5, 2, 0},{ 14, 1, 1},{-14, 1, 1},{ 6, 2, 0},{ -6, 2, 0},{ 1, 5, 0},
|
|
||||||
{ -1, 5, 0},{ 15, 1, 1},{-15, 1, 1},{ 3, 3, 0},{ -3, 3, 0},{ 16, 1, 1},
|
|
||||||
{-16, 1, 1},{ 2, 4, 0},{ -2, 4, 0},{ 7, 2, 0},{ -7, 2, 0}
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0,17, 8, 4, 3, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
2, //golomb_order
|
|
||||||
9, //inc_limit
|
|
||||||
5 //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ EOB },{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},
|
|
||||||
{ -3, 1, 0},{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 0},{ -5, 1, 0},{ 6, 1, 0},
|
|
||||||
{ -6, 1, 0},{ 7, 1, 0},{ -7, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 8, 1, 0},
|
|
||||||
{ -8, 1, 0},{ 9, 1, 0},{ -9, 1, 0},{ 10, 1, 0},{-10, 1, 0},{ 11, 1, 0},
|
|
||||||
{-11, 1, 0},{ 12, 1, 0},{-12, 1, 0},{ 2, 2, 0},{ -2, 2, 0},{ 13, 1, 0},
|
|
||||||
{-13, 1, 0},{ 1, 3, 0},{ -1, 3, 0},{ 14, 1, 0},{-14, 1, 0},{ 15, 1, 0},
|
|
||||||
{-15, 1, 0},{ 3, 2, 0},{ -3, 2, 0},{ 16, 1, 0},{-16, 1, 0},{ 17, 1, 0},
|
|
||||||
{-17, 1, 0},{ 18, 1, 0},{-18, 1, 0},{ 4, 2, 0},{ -4, 2, 0},{ 19, 1, 0},
|
|
||||||
{-19, 1, 0},{ 20, 1, 0},{-20, 1, 0},{ 2, 3, 0},{ -2, 3, 0},{ 1, 4, 0},
|
|
||||||
{ -1, 4, 0},{ 5, 2, 0},{ -5, 2, 0},{ 21, 1, 0},{-21, 1, 0}
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0,22, 6, 3, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
2, //golomb_order
|
|
||||||
INT_MAX, //inc_limit
|
|
||||||
4 //max_run
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const struct dec_2dvlc ff_cavs_chroma_dec[5] = {
|
|
||||||
{
|
|
||||||
{ //level / run
|
|
||||||
{ 1, 1, 1},{ -1, 1, 1},{ 1, 2, 1},{ -1, 2, 1},{ 1, 3, 1},{ -1, 3, 1},
|
|
||||||
{ 1, 4, 1},{ -1, 4, 1},{ 1, 5, 1},{ -1, 5, 1},{ 1, 6, 1},{ -1, 6, 1},
|
|
||||||
{ 1, 7, 1},{ -1, 7, 1},{ 2, 1, 2},{ -2, 1, 2},{ 1, 8, 1},{ -1, 8, 1},
|
|
||||||
{ 1, 9, 1},{ -1, 9, 1},{ 1,10, 1},{ -1,10, 1},{ 1,11, 1},{ -1,11, 1},
|
|
||||||
{ 1,12, 1},{ -1,12, 1},{ 1,13, 1},{ -1,13, 1},{ 1,14, 1},{ -1,14, 1},
|
|
||||||
{ 1,15, 1},{ -1,15, 1},{ 3, 1, 3},{ -3, 1, 3},{ 1,16, 1},{ -1,16, 1},
|
|
||||||
{ 1,17, 1},{ -1,17, 1},{ 1,18, 1},{ -1,18, 1},{ 1,19, 1},{ -1,19, 1},
|
|
||||||
{ 1,20, 1},{ -1,20, 1},{ 1,21, 1},{ -1,21, 1},{ 1,22, 1},{ -1,22, 1},
|
|
||||||
{ 2, 2, 2},{ -2, 2, 2},{ 1,23, 1},{ -1,23, 1},{ 1,24, 1},{ -1,24, 1},
|
|
||||||
{ 1,25, 1},{ -1,25, 1},{ 4, 1, 3},{ -4, 1, 3},{ EOB }
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0, 5, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
||||||
2, 2, 2, 2, 2, 2, 2, 2, 2,-1},
|
|
||||||
2, //golomb_order
|
|
||||||
0, //inc_limit
|
|
||||||
25 //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ EOB },{ 1, 1, 0},{ -1, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 2, 1, 1},
|
|
||||||
{ -2, 1, 1},{ 1, 3, 0},{ -1, 3, 0},{ 1, 4, 0},{ -1, 4, 0},{ 1, 5, 0},
|
|
||||||
{ -1, 5, 0},{ 1, 6, 0},{ -1, 6, 0},{ 3, 1, 2},{ -3, 1, 2},{ 1, 7, 0},
|
|
||||||
{ -1, 7, 0},{ 1, 8, 0},{ -1, 8, 0},{ 2, 2, 1},{ -2, 2, 1},{ 1, 9, 0},
|
|
||||||
{ -1, 9, 0},{ 1,10, 0},{ -1,10, 0},{ 1,11, 0},{ -1,11, 0},{ 4, 1, 2},
|
|
||||||
{ -4, 1, 2},{ 1,12, 0},{ -1,12, 0},{ 1,13, 0},{ -1,13, 0},{ 1,14, 0},
|
|
||||||
{ -1,14, 0},{ 2, 3, 1},{ -2, 3, 1},{ 1,15, 0},{ -1,15, 0},{ 2, 4, 1},
|
|
||||||
{ -2, 4, 1},{ 5, 1, 3},{ -5, 1, 3},{ 3, 2, 2},{ -3, 2, 2},{ 1,16, 0},
|
|
||||||
{ -1,16, 0},{ 1,17, 0},{ -1,17, 0},{ 1,18, 0},{ -1,18, 0},{ 2, 5, 1},
|
|
||||||
{ -2, 5, 1},{ 1,19, 0},{ -1,19, 0},{ 1,20, 0},{ -1,20, 0}
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0, 6, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
||||||
2, 2, 2, 2,-1,-1,-1,-1,-1,-1},
|
|
||||||
0, //golomb_order
|
|
||||||
1, //inc_limit
|
|
||||||
20 //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ 1, 1, 0},{ -1, 1, 0},{ EOB },{ 2, 1, 0},{ -2, 1, 0},{ 1, 2, 0},
|
|
||||||
{ -1, 2, 0},{ 3, 1, 1},{ -3, 1, 1},{ 1, 3, 0},{ -1, 3, 0},{ 4, 1, 1},
|
|
||||||
{ -4, 1, 1},{ 2, 2, 0},{ -2, 2, 0},{ 1, 4, 0},{ -1, 4, 0},{ 5, 1, 2},
|
|
||||||
{ -5, 1, 2},{ 1, 5, 0},{ -1, 5, 0},{ 3, 2, 1},{ -3, 2, 1},{ 2, 3, 0},
|
|
||||||
{ -2, 3, 0},{ 1, 6, 0},{ -1, 6, 0},{ 6, 1, 2},{ -6, 1, 2},{ 1, 7, 0},
|
|
||||||
{ -1, 7, 0},{ 2, 4, 0},{ -2, 4, 0},{ 7, 1, 2},{ -7, 1, 2},{ 1, 8, 0},
|
|
||||||
{ -1, 8, 0},{ 4, 2, 1},{ -4, 2, 1},{ 1, 9, 0},{ -1, 9, 0},{ 3, 3, 1},
|
|
||||||
{ -3, 3, 1},{ 2, 5, 0},{ -2, 5, 0},{ 2, 6, 0},{ -2, 6, 0},{ 8, 1, 2},
|
|
||||||
{ -8, 1, 2},{ 1,10, 0},{ -1,10, 0},{ 1,11, 0},{ -1,11, 0},{ 9, 1, 2},
|
|
||||||
{ -9, 1, 2},{ 5, 2, 2},{ -5, 2, 2},{ 3, 4, 1},{ -3, 4, 1},
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0,10, 6, 4, 4, 3, 3, 2, 2, 2, 2, 2,-1,-1,-1,-1,-1,
|
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
1, //golomb_order
|
|
||||||
2, //inc_limit
|
|
||||||
11 //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ EOB },{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},
|
|
||||||
{ -3, 1, 0},{ 4, 1, 0},{ -4, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 5, 1, 1},
|
|
||||||
{ -5, 1, 1},{ 2, 2, 0},{ -2, 2, 0},{ 6, 1, 1},{ -6, 1, 1},{ 1, 3, 0},
|
|
||||||
{ -1, 3, 0},{ 7, 1, 1},{ -7, 1, 1},{ 3, 2, 0},{ -3, 2, 0},{ 8, 1, 1},
|
|
||||||
{ -8, 1, 1},{ 1, 4, 0},{ -1, 4, 0},{ 2, 3, 0},{ -2, 3, 0},{ 9, 1, 1},
|
|
||||||
{ -9, 1, 1},{ 4, 2, 0},{ -4, 2, 0},{ 1, 5, 0},{ -1, 5, 0},{ 10, 1, 1},
|
|
||||||
{-10, 1, 1},{ 3, 3, 0},{ -3, 3, 0},{ 5, 2, 1},{ -5, 2, 1},{ 2, 4, 0},
|
|
||||||
{ -2, 4, 0},{ 11, 1, 1},{-11, 1, 1},{ 1, 6, 0},{ -1, 6, 0},{ 12, 1, 1},
|
|
||||||
{-12, 1, 1},{ 1, 7, 0},{ -1, 7, 0},{ 6, 2, 1},{ -6, 2, 1},{ 13, 1, 1},
|
|
||||||
{-13, 1, 1},{ 2, 5, 0},{ -2, 5, 0},{ 1, 8, 0},{ -1, 8, 0},
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0,14, 7, 4, 3, 3, 2, 2, 2,-1,-1,-1,-1,-1,-1,-1,-1,
|
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
1, //golomb_order
|
|
||||||
4, //inc_limit
|
|
||||||
8 //max_run
|
|
||||||
},{
|
|
||||||
{ //level / run
|
|
||||||
{ EOB },{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},
|
|
||||||
{ -3, 1, 0},{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 0},{ -5, 1, 0},{ 6, 1, 0},
|
|
||||||
{ -6, 1, 0},{ 7, 1, 0},{ -7, 1, 0},{ 8, 1, 0},{ -8, 1, 0},{ 1, 2, 0},
|
|
||||||
{ -1, 2, 0},{ 9, 1, 0},{ -9, 1, 0},{ 10, 1, 0},{-10, 1, 0},{ 11, 1, 0},
|
|
||||||
{-11, 1, 0},{ 2, 2, 0},{ -2, 2, 0},{ 12, 1, 0},{-12, 1, 0},{ 13, 1, 0},
|
|
||||||
{-13, 1, 0},{ 3, 2, 0},{ -3, 2, 0},{ 14, 1, 0},{-14, 1, 0},{ 1, 3, 0},
|
|
||||||
{ -1, 3, 0},{ 15, 1, 0},{-15, 1, 0},{ 4, 2, 0},{ -4, 2, 0},{ 16, 1, 0},
|
|
||||||
{-16, 1, 0},{ 17, 1, 0},{-17, 1, 0},{ 5, 2, 0},{ -5, 2, 0},{ 1, 4, 0},
|
|
||||||
{ -1, 4, 0},{ 2, 3, 0},{ -2, 3, 0},{ 18, 1, 0},{-18, 1, 0},{ 6, 2, 0},
|
|
||||||
{ -6, 2, 0},{ 19, 1, 0},{-19, 1, 0},{ 1, 5, 0},{ -1, 5, 0},
|
|
||||||
},
|
|
||||||
//level_add
|
|
||||||
{ 0,20, 7, 3, 2, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
||||||
0, //golomb_order
|
|
||||||
INT_MAX, //inc_limit
|
|
||||||
5, //max_run
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#undef EOB
|
|
||||||
|
|
||||||
static const uint8_t alpha_tab[64] = {
|
|
||||||
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
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint8_t beta_tab[64] = {
|
|
||||||
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
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint8_t tc_tab[64] = {
|
|
||||||
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
|
|
||||||
};
|
|
||||||
|
|
||||||
const int8_t ff_left_modifier_l[8] = { 0, -1, 6, -1, -1, 7, 6, 7 };
|
|
||||||
const int8_t ff_top_modifier_l[8] = { -1, 1, 5, -1, -1, 5, 7, 7 };
|
|
||||||
const int8_t ff_left_modifier_c[7] = { 5, -1, 2, -1, 6, 5, 6 };
|
|
||||||
const int8_t ff_top_modifier_c[7] = { 4, 1, -1, -1, 4, 6, 6 };
|
|
||||||
|
|
||||||
#endif /* AVCODEC_CAVSDATA_H */
|
#endif /* AVCODEC_CAVSDATA_H */
|
||||||
|
@ -46,6 +46,414 @@ static const uint8_t cbp_tab[64][2] = {
|
|||||||
{34,50},{50,56},{52,25},{54,22},{41,54},{56,57},{38,41},{57,38}
|
{34,50},{50,56},{52,25},{54,22},{41,54},{56,57},{38,41},{57,38}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const uint8_t scan3x3[4] = { 4, 5, 7, 8 };
|
||||||
|
|
||||||
|
static const uint8_t cavs_chroma_qp[64] = {
|
||||||
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,
|
||||||
|
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
|
||||||
|
32,33,34,35,36,37,38,39,40,41,42,42,43,43,44,44,
|
||||||
|
45,45,46,46,47,47,48,48,48,49,49,49,50,50,50,51
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint8_t dequant_shift[64] = {
|
||||||
|
14,14,14,14,14,14,14,14,
|
||||||
|
13,13,13,13,13,13,13,13,
|
||||||
|
13,12,12,12,12,12,12,12,
|
||||||
|
11,11,11,11,11,11,11,11,
|
||||||
|
11,10,10,10,10,10,10,10,
|
||||||
|
10, 9, 9, 9, 9, 9, 9, 9,
|
||||||
|
9, 8, 8, 8, 8, 8, 8, 8,
|
||||||
|
7, 7, 7, 7, 7, 7, 7, 7
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint16_t dequant_mul[64] = {
|
||||||
|
32768,36061,38968,42495,46341,50535,55437,60424,
|
||||||
|
32932,35734,38968,42495,46177,50535,55109,59933,
|
||||||
|
65535,35734,38968,42577,46341,50617,55027,60097,
|
||||||
|
32809,35734,38968,42454,46382,50576,55109,60056,
|
||||||
|
65535,35734,38968,42495,46320,50515,55109,60076,
|
||||||
|
65535,35744,38968,42495,46341,50535,55099,60087,
|
||||||
|
65535,35734,38973,42500,46341,50535,55109,60097,
|
||||||
|
32771,35734,38965,42497,46341,50535,55109,60099
|
||||||
|
};
|
||||||
|
|
||||||
|
#define EOB 0,0,0
|
||||||
|
|
||||||
|
static const struct dec_2dvlc intra_dec[7] = {
|
||||||
|
{
|
||||||
|
{ //level / run / table_inc
|
||||||
|
{ 1, 1, 1},{ -1, 1, 1},{ 1, 2, 1},{ -1, 2, 1},{ 1, 3, 1},{ -1, 3, 1},
|
||||||
|
{ 1, 4, 1},{ -1, 4, 1},{ 1, 5, 1},{ -1, 5, 1},{ 1, 6, 1},{ -1, 6, 1},
|
||||||
|
{ 1, 7, 1},{ -1, 7, 1},{ 1, 8, 1},{ -1, 8, 1},{ 1, 9, 1},{ -1, 9, 1},
|
||||||
|
{ 1,10, 1},{ -1,10, 1},{ 1,11, 1},{ -1,11, 1},{ 2, 1, 2},{ -2, 1, 2},
|
||||||
|
{ 1,12, 1},{ -1,12, 1},{ 1,13, 1},{ -1,13, 1},{ 1,14, 1},{ -1,14, 1},
|
||||||
|
{ 1,15, 1},{ -1,15, 1},{ 2, 2, 2},{ -2, 2, 2},{ 1,16, 1},{ -1,16, 1},
|
||||||
|
{ 1,17, 1},{ -1,17, 1},{ 3, 1, 3},{ -3, 1, 3},{ 1,18, 1},{ -1,18, 1},
|
||||||
|
{ 1,19, 1},{ -1,19, 1},{ 2, 3, 2},{ -2, 3, 2},{ 1,20, 1},{ -1,20, 1},
|
||||||
|
{ 1,21, 1},{ -1,21, 1},{ 2, 4, 2},{ -2, 4, 2},{ 1,22, 1},{ -1,22, 1},
|
||||||
|
{ 2, 5, 2},{ -2, 5, 2},{ 1,23, 1},{ -1,23, 1},{ EOB }
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||||||
|
2, 2, 2, 2, 2, 2, 2,-1,-1,-1},
|
||||||
|
2, //golomb_order
|
||||||
|
0, //inc_limit
|
||||||
|
23, //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ 1, 1, 0},{ -1, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 2, 1, 1},{ -2, 1, 1},
|
||||||
|
{ 1, 3, 0},{ -1, 3, 0},{ EOB },{ 1, 4, 0},{ -1, 4, 0},{ 1, 5, 0},
|
||||||
|
{ -1, 5, 0},{ 1, 6, 0},{ -1, 6, 0},{ 3, 1, 2},{ -3, 1, 2},{ 2, 2, 1},
|
||||||
|
{ -2, 2, 1},{ 1, 7, 0},{ -1, 7, 0},{ 1, 8, 0},{ -1, 8, 0},{ 1, 9, 0},
|
||||||
|
{ -1, 9, 0},{ 2, 3, 1},{ -2, 3, 1},{ 4, 1, 2},{ -4, 1, 2},{ 1,10, 0},
|
||||||
|
{ -1,10, 0},{ 1,11, 0},{ -1,11, 0},{ 2, 4, 1},{ -2, 4, 1},{ 3, 2, 2},
|
||||||
|
{ -3, 2, 2},{ 1,12, 0},{ -1,12, 0},{ 2, 5, 1},{ -2, 5, 1},{ 5, 1, 3},
|
||||||
|
{ -5, 1, 3},{ 1,13, 0},{ -1,13, 0},{ 2, 6, 1},{ -2, 6, 1},{ 1,14, 0},
|
||||||
|
{ -1,14, 0},{ 2, 7, 1},{ -2, 7, 1},{ 2, 8, 1},{ -2, 8, 1},{ 3, 3, 2},
|
||||||
|
{ -3, 3, 2},{ 6, 1, 3},{ -6, 1, 3},{ 1,15, 0},{ -1,15, 0}
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0, 7, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2,-1,
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
2, //golomb_order
|
||||||
|
1, //inc_limit
|
||||||
|
15, //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 1, 2, 0},{ -1, 2, 0},
|
||||||
|
{ 3, 1, 1},{ -3, 1, 1},{ EOB },{ 1, 3, 0},{ -1, 3, 0},{ 2, 2, 0},
|
||||||
|
{ -2, 2, 0},{ 4, 1, 1},{ -4, 1, 1},{ 1, 4, 0},{ -1, 4, 0},{ 5, 1, 2},
|
||||||
|
{ -5, 1, 2},{ 1, 5, 0},{ -1, 5, 0},{ 3, 2, 1},{ -3, 2, 1},{ 2, 3, 0},
|
||||||
|
{ -2, 3, 0},{ 1, 6, 0},{ -1, 6, 0},{ 6, 1, 2},{ -6, 1, 2},{ 2, 4, 0},
|
||||||
|
{ -2, 4, 0},{ 1, 7, 0},{ -1, 7, 0},{ 4, 2, 1},{ -4, 2, 1},{ 7, 1, 2},
|
||||||
|
{ -7, 1, 2},{ 3, 3, 1},{ -3, 3, 1},{ 2, 5, 0},{ -2, 5, 0},{ 1, 8, 0},
|
||||||
|
{ -1, 8, 0},{ 2, 6, 0},{ -2, 6, 0},{ 8, 1, 3},{ -8, 1, 3},{ 1, 9, 0},
|
||||||
|
{ -1, 9, 0},{ 5, 2, 2},{ -5, 2, 2},{ 3, 4, 1},{ -3, 4, 1},{ 2, 7, 0},
|
||||||
|
{ -2, 7, 0},{ 9, 1, 3},{ -9, 1, 3},{ 1,10, 0},{ -1,10, 0}
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0,10, 6, 4, 4, 3, 3, 3, 2, 2, 2,-1,-1,-1,-1,-1,-1,
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
2, //golomb_order
|
||||||
|
2, //inc_limit
|
||||||
|
10, //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},{ -3, 1, 0},
|
||||||
|
{ 1, 2, 0},{ -1, 2, 0},{ EOB },{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 1},
|
||||||
|
{ -5, 1, 1},{ 2, 2, 0},{ -2, 2, 0},{ 1, 3, 0},{ -1, 3, 0},{ 6, 1, 1},
|
||||||
|
{ -6, 1, 1},{ 3, 2, 0},{ -3, 2, 0},{ 7, 1, 1},{ -7, 1, 1},{ 1, 4, 0},
|
||||||
|
{ -1, 4, 0},{ 8, 1, 2},{ -8, 1, 2},{ 2, 3, 0},{ -2, 3, 0},{ 4, 2, 0},
|
||||||
|
{ -4, 2, 0},{ 1, 5, 0},{ -1, 5, 0},{ 9, 1, 2},{ -9, 1, 2},{ 5, 2, 1},
|
||||||
|
{ -5, 2, 1},{ 2, 4, 0},{ -2, 4, 0},{ 10, 1, 2},{-10, 1, 2},{ 3, 3, 0},
|
||||||
|
{ -3, 3, 0},{ 1, 6, 0},{ -1, 6, 0},{ 11, 1, 3},{-11, 1, 3},{ 6, 2, 1},
|
||||||
|
{ -6, 2, 1},{ 1, 7, 0},{ -1, 7, 0},{ 2, 5, 0},{ -2, 5, 0},{ 3, 4, 0},
|
||||||
|
{ -3, 4, 0},{ 12, 1, 3},{-12, 1, 3},{ 4, 3, 0},{ -4, 3, 0}
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0,13, 7, 5, 4, 3, 2, 2,-1,-1,-1 -1,-1,-1,-1,-1,-1,
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
2, //golomb_order
|
||||||
|
4, //inc_limit
|
||||||
|
7, //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},{ -3, 1, 0},
|
||||||
|
{ EOB },{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 0},{ -5, 1, 0},{ 6, 1, 0},
|
||||||
|
{ -6, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 7, 1, 0},{ -7, 1, 0},{ 8, 1, 1},
|
||||||
|
{ -8, 1, 1},{ 2, 2, 0},{ -2, 2, 0},{ 9, 1, 1},{ -9, 1, 1},{ 10, 1, 1},
|
||||||
|
{-10, 1, 1},{ 1, 3, 0},{ -1, 3, 0},{ 3, 2, 0},{ -3, 2, 0},{ 11, 1, 2},
|
||||||
|
{-11, 1, 2},{ 4, 2, 0},{ -4, 2, 0},{ 12, 1, 2},{-12, 1, 2},{ 13, 1, 2},
|
||||||
|
{-13, 1, 2},{ 5, 2, 0},{ -5, 2, 0},{ 1, 4, 0},{ -1, 4, 0},{ 2, 3, 0},
|
||||||
|
{ -2, 3, 0},{ 14, 1, 2},{-14, 1, 2},{ 6, 2, 0},{ -6, 2, 0},{ 15, 1, 2},
|
||||||
|
{-15, 1, 2},{ 16, 1, 2},{-16, 1, 2},{ 3, 3, 0},{ -3, 3, 0},{ 1, 5, 0},
|
||||||
|
{ -1, 5, 0},{ 7, 2, 0},{ -7, 2, 0},{ 17, 1, 2},{-17, 1, 2}
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0,18, 8, 4, 2, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
2, //golomb_order
|
||||||
|
7, //inc_limit
|
||||||
|
5, //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ EOB },{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},
|
||||||
|
{ -3, 1, 0},{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 0},{ -5, 1, 0},{ 6, 1, 0},
|
||||||
|
{ -6, 1, 0},{ 7, 1, 0},{ -7, 1, 0},{ 8, 1, 0},{ -8, 1, 0},{ 9, 1, 0},
|
||||||
|
{ -9, 1, 0},{ 10, 1, 0},{-10, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 11, 1, 1},
|
||||||
|
{-11, 1, 1},{ 12, 1, 1},{-12, 1, 1},{ 13, 1, 1},{-13, 1, 1},{ 2, 2, 0},
|
||||||
|
{ -2, 2, 0},{ 14, 1, 1},{-14, 1, 1},{ 15, 1, 1},{-15, 1, 1},{ 3, 2, 0},
|
||||||
|
{ -3, 2, 0},{ 16, 1, 1},{-16, 1, 1},{ 1, 3, 0},{ -1, 3, 0},{ 17, 1, 1},
|
||||||
|
{-17, 1, 1},{ 4, 2, 0},{ -4, 2, 0},{ 18, 1, 1},{-18, 1, 1},{ 5, 2, 0},
|
||||||
|
{ -5, 2, 0},{ 19, 1, 1},{-19, 1, 1},{ 20, 1, 1},{-20, 1, 1},{ 6, 2, 0},
|
||||||
|
{ -6, 2, 0},{ 21, 1, 1},{-21, 1, 1},{ 2, 3, 0},{ -2, 3, 0}
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0,22, 7, 3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
2, //golomb_order
|
||||||
|
10, //inc_limit
|
||||||
|
3, //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ EOB },{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},
|
||||||
|
{ -3, 1, 0},{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 0},{ -5, 1, 0},{ 6, 1, 0},
|
||||||
|
{ -6, 1, 0},{ 7, 1, 0},{ -7, 1, 0},{ 8, 1, 0},{ -8, 1, 0},{ 9, 1, 0},
|
||||||
|
{ -9, 1, 0},{ 10, 1, 0},{-10, 1, 0},{ 11, 1, 0},{-11, 1, 0},{ 12, 1, 0},
|
||||||
|
{-12, 1, 0},{ 13, 1, 0},{-13, 1, 0},{ 14, 1, 0},{-14, 1, 0},{ 15, 1, 0},
|
||||||
|
{-15, 1, 0},{ 16, 1, 0},{-16, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 17, 1, 0},
|
||||||
|
{-17, 1, 0},{ 18, 1, 0},{-18, 1, 0},{ 19, 1, 0},{-19, 1, 0},{ 20, 1, 0},
|
||||||
|
{-20, 1, 0},{ 21, 1, 0},{-21, 1, 0},{ 2, 2, 0},{ -2, 2, 0},{ 22, 1, 0},
|
||||||
|
{-22, 1, 0},{ 23, 1, 0},{-23, 1, 0},{ 24, 1, 0},{-24, 1, 0},{ 25, 1, 0},
|
||||||
|
{-25, 1, 0},{ 3, 2, 0},{ -3, 2, 0},{ 26, 1, 0},{-26, 1, 0}
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0,27, 4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
2, //golomb_order
|
||||||
|
INT_MAX, //inc_limit
|
||||||
|
2, //max_run
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct dec_2dvlc inter_dec[7] = {
|
||||||
|
{
|
||||||
|
{ //level / run
|
||||||
|
{ 1, 1, 1},{ -1, 1, 1},{ 1, 2, 1},{ -1, 2, 1},{ 1, 3, 1},{ -1, 3, 1},
|
||||||
|
{ 1, 4, 1},{ -1, 4, 1},{ 1, 5, 1},{ -1, 5, 1},{ 1, 6, 1},{ -1, 6, 1},
|
||||||
|
{ 1, 7, 1},{ -1, 7, 1},{ 1, 8, 1},{ -1, 8, 1},{ 1, 9, 1},{ -1, 9, 1},
|
||||||
|
{ 1,10, 1},{ -1,10, 1},{ 1,11, 1},{ -1,11, 1},{ 1,12, 1},{ -1,12, 1},
|
||||||
|
{ 1,13, 1},{ -1,13, 1},{ 2, 1, 2},{ -2, 1, 2},{ 1,14, 1},{ -1,14, 1},
|
||||||
|
{ 1,15, 1},{ -1,15, 1},{ 1,16, 1},{ -1,16, 1},{ 1,17, 1},{ -1,17, 1},
|
||||||
|
{ 1,18, 1},{ -1,18, 1},{ 1,19, 1},{ -1,19, 1},{ 3, 1, 3},{ -3, 1, 3},
|
||||||
|
{ 1,20, 1},{ -1,20, 1},{ 1,21, 1},{ -1,21, 1},{ 2, 2, 2},{ -2, 2, 2},
|
||||||
|
{ 1,22, 1},{ -1,22, 1},{ 1,23, 1},{ -1,23, 1},{ 1,24, 1},{ -1,24, 1},
|
||||||
|
{ 1,25, 1},{ -1,25, 1},{ 1,26, 1},{ -1,26, 1},{ EOB }
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0, 4, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||||||
|
2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
|
||||||
|
3, //golomb_order
|
||||||
|
0, //inc_limit
|
||||||
|
26 //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ 1, 1, 0},{ -1, 1, 0},{ EOB },{ 1, 2, 0},{ -1, 2, 0},{ 1, 3, 0},
|
||||||
|
{ -1, 3, 0},{ 1, 4, 0},{ -1, 4, 0},{ 1, 5, 0},{ -1, 5, 0},{ 1, 6, 0},
|
||||||
|
{ -1, 6, 0},{ 2, 1, 1},{ -2, 1, 1},{ 1, 7, 0},{ -1, 7, 0},{ 1, 8, 0},
|
||||||
|
{ -1, 8, 0},{ 1, 9, 0},{ -1, 9, 0},{ 1,10, 0},{ -1,10, 0},{ 2, 2, 1},
|
||||||
|
{ -2, 2, 1},{ 1,11, 0},{ -1,11, 0},{ 1,12, 0},{ -1,12, 0},{ 3, 1, 2},
|
||||||
|
{ -3, 1, 2},{ 1,13, 0},{ -1,13, 0},{ 1,14, 0},{ -1,14, 0},{ 2, 3, 1},
|
||||||
|
{ -2, 3, 1},{ 1,15, 0},{ -1,15, 0},{ 2, 4, 1},{ -2, 4, 1},{ 1,16, 0},
|
||||||
|
{ -1,16, 0},{ 2, 5, 1},{ -2, 5, 1},{ 1,17, 0},{ -1,17, 0},{ 4, 1, 3},
|
||||||
|
{ -4, 1, 3},{ 2, 6, 1},{ -2, 6, 1},{ 1,18, 0},{ -1,18, 0},{ 1,19, 0},
|
||||||
|
{ -1,19, 0},{ 2, 7, 1},{ -2, 7, 1},{ 3, 2, 2},{ -3, 2, 2}
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0, 5, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||||||
|
2, 2, 2,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
2, //golomb_order
|
||||||
|
1, //inc_limit
|
||||||
|
19 //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ 1, 1, 0},{ -1, 1, 0},{ EOB },{ 1, 2, 0},{ -1, 2, 0},{ 2, 1, 0},
|
||||||
|
{ -2, 1, 0},{ 1, 3, 0},{ -1, 3, 0},{ 1, 4, 0},{ -1, 4, 0},{ 3, 1, 1},
|
||||||
|
{ -3, 1, 1},{ 2, 2, 0},{ -2, 2, 0},{ 1, 5, 0},{ -1, 5, 0},{ 1, 6, 0},
|
||||||
|
{ -1, 6, 0},{ 1, 7, 0},{ -1, 7, 0},{ 2, 3, 0},{ -2, 3, 0},{ 4, 1, 2},
|
||||||
|
{ -4, 1, 2},{ 1, 8, 0},{ -1, 8, 0},{ 3, 2, 1},{ -3, 2, 1},{ 2, 4, 0},
|
||||||
|
{ -2, 4, 0},{ 1, 9, 0},{ -1, 9, 0},{ 1,10, 0},{ -1,10, 0},{ 5, 1, 2},
|
||||||
|
{ -5, 1, 2},{ 2, 5, 0},{ -2, 5, 0},{ 1,11, 0},{ -1,11, 0},{ 2, 6, 0},
|
||||||
|
{ -2, 6, 0},{ 1,12, 0},{ -1,12, 0},{ 3, 3, 1},{ -3, 3, 1},{ 6, 1, 2},
|
||||||
|
{ -6, 1, 2},{ 4, 2, 2},{ -4, 2, 2},{ 1,13, 0},{ -1,13, 0},{ 2, 7, 0},
|
||||||
|
{ -2, 7, 0},{ 3, 4, 1},{ -3, 4, 1},{ 1,14, 0},{ -1,14, 0}
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0, 7, 5, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2,-1,-1,
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
2, //golomb_order
|
||||||
|
2, //inc_limit
|
||||||
|
14 //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ 1, 1, 0},{ -1, 1, 0},{ EOB },{ 2, 1, 0},{ -2, 1, 0},{ 1, 2, 0},
|
||||||
|
{ -1, 2, 0},{ 3, 1, 0},{ -3, 1, 0},{ 1, 3, 0},{ -1, 3, 0},{ 2, 2, 0},
|
||||||
|
{ -2, 2, 0},{ 4, 1, 1},{ -4, 1, 1},{ 1, 4, 0},{ -1, 4, 0},{ 5, 1, 1},
|
||||||
|
{ -5, 1, 1},{ 1, 5, 0},{ -1, 5, 0},{ 3, 2, 0},{ -3, 2, 0},{ 2, 3, 0},
|
||||||
|
{ -2, 3, 0},{ 1, 6, 0},{ -1, 6, 0},{ 6, 1, 1},{ -6, 1, 1},{ 2, 4, 0},
|
||||||
|
{ -2, 4, 0},{ 1, 7, 0},{ -1, 7, 0},{ 4, 2, 1},{ -4, 2, 1},{ 7, 1, 2},
|
||||||
|
{ -7, 1, 2},{ 3, 3, 0},{ -3, 3, 0},{ 1, 8, 0},{ -1, 8, 0},{ 2, 5, 0},
|
||||||
|
{ -2, 5, 0},{ 8, 1, 2},{ -8, 1, 2},{ 1, 9, 0},{ -1, 9, 0},{ 3, 4, 0},
|
||||||
|
{ -3, 4, 0},{ 2, 6, 0},{ -2, 6, 0},{ 5, 2, 1},{ -5, 2, 1},{ 1,10, 0},
|
||||||
|
{ -1,10, 0},{ 9, 1, 2},{ -9, 1, 2},{ 4, 3, 1},{ -4, 3, 1}
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0,10, 6, 5, 4, 3, 3, 2, 2, 2, 2,-1,-1,-1,-1,-1,-1,
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
2, //golomb_order
|
||||||
|
3, //inc_limit
|
||||||
|
10 //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ 1, 1, 0},{ -1, 1, 0},{ EOB },{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},
|
||||||
|
{ -3, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 0},
|
||||||
|
{ -5, 1, 0},{ 2, 2, 0},{ -2, 2, 0},{ 1, 3, 0},{ -1, 3, 0},{ 6, 1, 0},
|
||||||
|
{ -6, 1, 0},{ 3, 2, 0},{ -3, 2, 0},{ 7, 1, 1},{ -7, 1, 1},{ 1, 4, 0},
|
||||||
|
{ -1, 4, 0},{ 8, 1, 1},{ -8, 1, 1},{ 2, 3, 0},{ -2, 3, 0},{ 4, 2, 0},
|
||||||
|
{ -4, 2, 0},{ 1, 5, 0},{ -1, 5, 0},{ 9, 1, 1},{ -9, 1, 1},{ 5, 2, 0},
|
||||||
|
{ -5, 2, 0},{ 2, 4, 0},{ -2, 4, 0},{ 1, 6, 0},{ -1, 6, 0},{ 10, 1, 2},
|
||||||
|
{-10, 1, 2},{ 3, 3, 0},{ -3, 3, 0},{ 11, 1, 2},{-11, 1, 2},{ 1, 7, 0},
|
||||||
|
{ -1, 7, 0},{ 6, 2, 0},{ -6, 2, 0},{ 3, 4, 0},{ -3, 4, 0},{ 2, 5, 0},
|
||||||
|
{ -2, 5, 0},{ 12, 1, 2},{-12, 1, 2},{ 4, 3, 0},{ -4, 3, 0}
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0,13, 7, 5, 4, 3, 2, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
2, //golomb_order
|
||||||
|
6, //inc_limit
|
||||||
|
7 //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ EOB },{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},
|
||||||
|
{ -3, 1, 0},{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 0},{ -5, 1, 0},{ 1, 2, 0},
|
||||||
|
{ -1, 2, 0},{ 6, 1, 0},{ -6, 1, 0},{ 7, 1, 0},{ -7, 1, 0},{ 8, 1, 0},
|
||||||
|
{ -8, 1, 0},{ 2, 2, 0},{ -2, 2, 0},{ 9, 1, 0},{ -9, 1, 0},{ 1, 3, 0},
|
||||||
|
{ -1, 3, 0},{ 10, 1, 1},{-10, 1, 1},{ 3, 2, 0},{ -3, 2, 0},{ 11, 1, 1},
|
||||||
|
{-11, 1, 1},{ 4, 2, 0},{ -4, 2, 0},{ 12, 1, 1},{-12, 1, 1},{ 1, 4, 0},
|
||||||
|
{ -1, 4, 0},{ 2, 3, 0},{ -2, 3, 0},{ 13, 1, 1},{-13, 1, 1},{ 5, 2, 0},
|
||||||
|
{ -5, 2, 0},{ 14, 1, 1},{-14, 1, 1},{ 6, 2, 0},{ -6, 2, 0},{ 1, 5, 0},
|
||||||
|
{ -1, 5, 0},{ 15, 1, 1},{-15, 1, 1},{ 3, 3, 0},{ -3, 3, 0},{ 16, 1, 1},
|
||||||
|
{-16, 1, 1},{ 2, 4, 0},{ -2, 4, 0},{ 7, 2, 0},{ -7, 2, 0}
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0,17, 8, 4, 3, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
2, //golomb_order
|
||||||
|
9, //inc_limit
|
||||||
|
5 //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ EOB },{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},
|
||||||
|
{ -3, 1, 0},{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 0},{ -5, 1, 0},{ 6, 1, 0},
|
||||||
|
{ -6, 1, 0},{ 7, 1, 0},{ -7, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 8, 1, 0},
|
||||||
|
{ -8, 1, 0},{ 9, 1, 0},{ -9, 1, 0},{ 10, 1, 0},{-10, 1, 0},{ 11, 1, 0},
|
||||||
|
{-11, 1, 0},{ 12, 1, 0},{-12, 1, 0},{ 2, 2, 0},{ -2, 2, 0},{ 13, 1, 0},
|
||||||
|
{-13, 1, 0},{ 1, 3, 0},{ -1, 3, 0},{ 14, 1, 0},{-14, 1, 0},{ 15, 1, 0},
|
||||||
|
{-15, 1, 0},{ 3, 2, 0},{ -3, 2, 0},{ 16, 1, 0},{-16, 1, 0},{ 17, 1, 0},
|
||||||
|
{-17, 1, 0},{ 18, 1, 0},{-18, 1, 0},{ 4, 2, 0},{ -4, 2, 0},{ 19, 1, 0},
|
||||||
|
{-19, 1, 0},{ 20, 1, 0},{-20, 1, 0},{ 2, 3, 0},{ -2, 3, 0},{ 1, 4, 0},
|
||||||
|
{ -1, 4, 0},{ 5, 2, 0},{ -5, 2, 0},{ 21, 1, 0},{-21, 1, 0}
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0,22, 6, 3, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
2, //golomb_order
|
||||||
|
INT_MAX, //inc_limit
|
||||||
|
4 //max_run
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct dec_2dvlc chroma_dec[5] = {
|
||||||
|
{
|
||||||
|
{ //level / run
|
||||||
|
{ 1, 1, 1},{ -1, 1, 1},{ 1, 2, 1},{ -1, 2, 1},{ 1, 3, 1},{ -1, 3, 1},
|
||||||
|
{ 1, 4, 1},{ -1, 4, 1},{ 1, 5, 1},{ -1, 5, 1},{ 1, 6, 1},{ -1, 6, 1},
|
||||||
|
{ 1, 7, 1},{ -1, 7, 1},{ 2, 1, 2},{ -2, 1, 2},{ 1, 8, 1},{ -1, 8, 1},
|
||||||
|
{ 1, 9, 1},{ -1, 9, 1},{ 1,10, 1},{ -1,10, 1},{ 1,11, 1},{ -1,11, 1},
|
||||||
|
{ 1,12, 1},{ -1,12, 1},{ 1,13, 1},{ -1,13, 1},{ 1,14, 1},{ -1,14, 1},
|
||||||
|
{ 1,15, 1},{ -1,15, 1},{ 3, 1, 3},{ -3, 1, 3},{ 1,16, 1},{ -1,16, 1},
|
||||||
|
{ 1,17, 1},{ -1,17, 1},{ 1,18, 1},{ -1,18, 1},{ 1,19, 1},{ -1,19, 1},
|
||||||
|
{ 1,20, 1},{ -1,20, 1},{ 1,21, 1},{ -1,21, 1},{ 1,22, 1},{ -1,22, 1},
|
||||||
|
{ 2, 2, 2},{ -2, 2, 2},{ 1,23, 1},{ -1,23, 1},{ 1,24, 1},{ -1,24, 1},
|
||||||
|
{ 1,25, 1},{ -1,25, 1},{ 4, 1, 3},{ -4, 1, 3},{ EOB }
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0, 5, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||||||
|
2, 2, 2, 2, 2, 2, 2, 2, 2,-1},
|
||||||
|
2, //golomb_order
|
||||||
|
0, //inc_limit
|
||||||
|
25 //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ EOB },{ 1, 1, 0},{ -1, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 2, 1, 1},
|
||||||
|
{ -2, 1, 1},{ 1, 3, 0},{ -1, 3, 0},{ 1, 4, 0},{ -1, 4, 0},{ 1, 5, 0},
|
||||||
|
{ -1, 5, 0},{ 1, 6, 0},{ -1, 6, 0},{ 3, 1, 2},{ -3, 1, 2},{ 1, 7, 0},
|
||||||
|
{ -1, 7, 0},{ 1, 8, 0},{ -1, 8, 0},{ 2, 2, 1},{ -2, 2, 1},{ 1, 9, 0},
|
||||||
|
{ -1, 9, 0},{ 1,10, 0},{ -1,10, 0},{ 1,11, 0},{ -1,11, 0},{ 4, 1, 2},
|
||||||
|
{ -4, 1, 2},{ 1,12, 0},{ -1,12, 0},{ 1,13, 0},{ -1,13, 0},{ 1,14, 0},
|
||||||
|
{ -1,14, 0},{ 2, 3, 1},{ -2, 3, 1},{ 1,15, 0},{ -1,15, 0},{ 2, 4, 1},
|
||||||
|
{ -2, 4, 1},{ 5, 1, 3},{ -5, 1, 3},{ 3, 2, 2},{ -3, 2, 2},{ 1,16, 0},
|
||||||
|
{ -1,16, 0},{ 1,17, 0},{ -1,17, 0},{ 1,18, 0},{ -1,18, 0},{ 2, 5, 1},
|
||||||
|
{ -2, 5, 1},{ 1,19, 0},{ -1,19, 0},{ 1,20, 0},{ -1,20, 0}
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0, 6, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||||||
|
2, 2, 2, 2,-1,-1,-1,-1,-1,-1},
|
||||||
|
0, //golomb_order
|
||||||
|
1, //inc_limit
|
||||||
|
20 //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ 1, 1, 0},{ -1, 1, 0},{ EOB },{ 2, 1, 0},{ -2, 1, 0},{ 1, 2, 0},
|
||||||
|
{ -1, 2, 0},{ 3, 1, 1},{ -3, 1, 1},{ 1, 3, 0},{ -1, 3, 0},{ 4, 1, 1},
|
||||||
|
{ -4, 1, 1},{ 2, 2, 0},{ -2, 2, 0},{ 1, 4, 0},{ -1, 4, 0},{ 5, 1, 2},
|
||||||
|
{ -5, 1, 2},{ 1, 5, 0},{ -1, 5, 0},{ 3, 2, 1},{ -3, 2, 1},{ 2, 3, 0},
|
||||||
|
{ -2, 3, 0},{ 1, 6, 0},{ -1, 6, 0},{ 6, 1, 2},{ -6, 1, 2},{ 1, 7, 0},
|
||||||
|
{ -1, 7, 0},{ 2, 4, 0},{ -2, 4, 0},{ 7, 1, 2},{ -7, 1, 2},{ 1, 8, 0},
|
||||||
|
{ -1, 8, 0},{ 4, 2, 1},{ -4, 2, 1},{ 1, 9, 0},{ -1, 9, 0},{ 3, 3, 1},
|
||||||
|
{ -3, 3, 1},{ 2, 5, 0},{ -2, 5, 0},{ 2, 6, 0},{ -2, 6, 0},{ 8, 1, 2},
|
||||||
|
{ -8, 1, 2},{ 1,10, 0},{ -1,10, 0},{ 1,11, 0},{ -1,11, 0},{ 9, 1, 2},
|
||||||
|
{ -9, 1, 2},{ 5, 2, 2},{ -5, 2, 2},{ 3, 4, 1},{ -3, 4, 1},
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0,10, 6, 4, 4, 3, 3, 2, 2, 2, 2, 2,-1,-1,-1,-1,-1,
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
1, //golomb_order
|
||||||
|
2, //inc_limit
|
||||||
|
11 //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ EOB },{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},
|
||||||
|
{ -3, 1, 0},{ 4, 1, 0},{ -4, 1, 0},{ 1, 2, 0},{ -1, 2, 0},{ 5, 1, 1},
|
||||||
|
{ -5, 1, 1},{ 2, 2, 0},{ -2, 2, 0},{ 6, 1, 1},{ -6, 1, 1},{ 1, 3, 0},
|
||||||
|
{ -1, 3, 0},{ 7, 1, 1},{ -7, 1, 1},{ 3, 2, 0},{ -3, 2, 0},{ 8, 1, 1},
|
||||||
|
{ -8, 1, 1},{ 1, 4, 0},{ -1, 4, 0},{ 2, 3, 0},{ -2, 3, 0},{ 9, 1, 1},
|
||||||
|
{ -9, 1, 1},{ 4, 2, 0},{ -4, 2, 0},{ 1, 5, 0},{ -1, 5, 0},{ 10, 1, 1},
|
||||||
|
{-10, 1, 1},{ 3, 3, 0},{ -3, 3, 0},{ 5, 2, 1},{ -5, 2, 1},{ 2, 4, 0},
|
||||||
|
{ -2, 4, 0},{ 11, 1, 1},{-11, 1, 1},{ 1, 6, 0},{ -1, 6, 0},{ 12, 1, 1},
|
||||||
|
{-12, 1, 1},{ 1, 7, 0},{ -1, 7, 0},{ 6, 2, 1},{ -6, 2, 1},{ 13, 1, 1},
|
||||||
|
{-13, 1, 1},{ 2, 5, 0},{ -2, 5, 0},{ 1, 8, 0},{ -1, 8, 0},
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0,14, 7, 4, 3, 3, 2, 2, 2,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
1, //golomb_order
|
||||||
|
4, //inc_limit
|
||||||
|
8 //max_run
|
||||||
|
},{
|
||||||
|
{ //level / run
|
||||||
|
{ EOB },{ 1, 1, 0},{ -1, 1, 0},{ 2, 1, 0},{ -2, 1, 0},{ 3, 1, 0},
|
||||||
|
{ -3, 1, 0},{ 4, 1, 0},{ -4, 1, 0},{ 5, 1, 0},{ -5, 1, 0},{ 6, 1, 0},
|
||||||
|
{ -6, 1, 0},{ 7, 1, 0},{ -7, 1, 0},{ 8, 1, 0},{ -8, 1, 0},{ 1, 2, 0},
|
||||||
|
{ -1, 2, 0},{ 9, 1, 0},{ -9, 1, 0},{ 10, 1, 0},{-10, 1, 0},{ 11, 1, 0},
|
||||||
|
{-11, 1, 0},{ 2, 2, 0},{ -2, 2, 0},{ 12, 1, 0},{-12, 1, 0},{ 13, 1, 0},
|
||||||
|
{-13, 1, 0},{ 3, 2, 0},{ -3, 2, 0},{ 14, 1, 0},{-14, 1, 0},{ 1, 3, 0},
|
||||||
|
{ -1, 3, 0},{ 15, 1, 0},{-15, 1, 0},{ 4, 2, 0},{ -4, 2, 0},{ 16, 1, 0},
|
||||||
|
{-16, 1, 0},{ 17, 1, 0},{-17, 1, 0},{ 5, 2, 0},{ -5, 2, 0},{ 1, 4, 0},
|
||||||
|
{ -1, 4, 0},{ 2, 3, 0},{ -2, 3, 0},{ 18, 1, 0},{-18, 1, 0},{ 6, 2, 0},
|
||||||
|
{ -6, 2, 0},{ 19, 1, 0},{-19, 1, 0},{ 1, 5, 0},{ -1, 5, 0},
|
||||||
|
},
|
||||||
|
//level_add
|
||||||
|
{ 0,20, 7, 3, 2, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||||
|
0, //golomb_order
|
||||||
|
INT_MAX, //inc_limit
|
||||||
|
5, //max_run
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#undef EOB
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* motion vector prediction
|
* motion vector prediction
|
||||||
@ -142,8 +550,8 @@ static int decode_residual_block(AVSContext *h, GetBitContext *gb,
|
|||||||
level_buf[i] = level;
|
level_buf[i] = level;
|
||||||
run_buf[i] = run;
|
run_buf[i] = run;
|
||||||
}
|
}
|
||||||
if(dequant(h,level_buf, run_buf, block, ff_cavs_dequant_mul[qp],
|
if (dequant(h, level_buf, run_buf, block, dequant_mul[qp],
|
||||||
ff_cavs_dequant_shift[qp], i))
|
dequant_shift[qp], i))
|
||||||
return -1;
|
return -1;
|
||||||
h->cdsp.cavs_idct8_add(dst,block,stride);
|
h->cdsp.cavs_idct8_add(dst,block,stride);
|
||||||
h->s.dsp.clear_block(block);
|
h->s.dsp.clear_block(block);
|
||||||
@ -153,11 +561,11 @@ static int decode_residual_block(AVSContext *h, GetBitContext *gb,
|
|||||||
|
|
||||||
static inline void decode_residual_chroma(AVSContext *h) {
|
static inline void decode_residual_chroma(AVSContext *h) {
|
||||||
if(h->cbp & (1<<4))
|
if(h->cbp & (1<<4))
|
||||||
decode_residual_block(h,&h->s.gb,ff_cavs_chroma_dec,0,
|
decode_residual_block(h, &h->s.gb, chroma_dec, 0,
|
||||||
ff_cavs_chroma_qp[h->qp],h->cu,h->c_stride);
|
cavs_chroma_qp[h->qp], h->cu, h->c_stride);
|
||||||
if(h->cbp & (1<<5))
|
if(h->cbp & (1<<5))
|
||||||
decode_residual_block(h,&h->s.gb,ff_cavs_chroma_dec,0,
|
decode_residual_block(h, &h->s.gb, chroma_dec, 0,
|
||||||
ff_cavs_chroma_qp[h->qp],h->cv,h->c_stride);
|
cavs_chroma_qp[h->qp], h->cv, h->c_stride);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int decode_residual_inter(AVSContext *h) {
|
static inline int decode_residual_inter(AVSContext *h) {
|
||||||
@ -176,7 +584,7 @@ static inline int decode_residual_inter(AVSContext *h) {
|
|||||||
h->qp = (h->qp + get_se_golomb(&h->s.gb)) & 63;
|
h->qp = (h->qp + get_se_golomb(&h->s.gb)) & 63;
|
||||||
for(block=0;block<4;block++)
|
for(block=0;block<4;block++)
|
||||||
if(h->cbp & (1<<block))
|
if(h->cbp & (1<<block))
|
||||||
decode_residual_block(h,&h->s.gb,ff_cavs_inter_dec,0,h->qp,
|
decode_residual_block(h, &h->s.gb, inter_dec, 0, h->qp,
|
||||||
h->cy + h->luma_scan[block], h->l_stride);
|
h->cy + h->luma_scan[block], h->l_stride);
|
||||||
decode_residual_chroma(h);
|
decode_residual_chroma(h);
|
||||||
|
|
||||||
@ -202,7 +610,7 @@ static int decode_mb_i(AVSContext *h, int cbp_code) {
|
|||||||
/* get intra prediction modes from stream */
|
/* get intra prediction modes from stream */
|
||||||
for(block=0;block<4;block++) {
|
for(block=0;block<4;block++) {
|
||||||
int nA,nB,predpred;
|
int nA,nB,predpred;
|
||||||
int pos = ff_cavs_scan3x3[block];
|
int pos = scan3x3[block];
|
||||||
|
|
||||||
nA = h->pred_mode_Y[pos-1];
|
nA = h->pred_mode_Y[pos-1];
|
||||||
nB = h->pred_mode_Y[pos-3];
|
nB = h->pred_mode_Y[pos-3];
|
||||||
@ -237,10 +645,10 @@ static int decode_mb_i(AVSContext *h, int cbp_code) {
|
|||||||
for(block=0;block<4;block++) {
|
for(block=0;block<4;block++) {
|
||||||
d = h->cy + h->luma_scan[block];
|
d = h->cy + h->luma_scan[block];
|
||||||
ff_cavs_load_intra_pred_luma(h, top, &left, block);
|
ff_cavs_load_intra_pred_luma(h, top, &left, block);
|
||||||
h->intra_pred_l[h->pred_mode_Y[ff_cavs_scan3x3[block]]]
|
h->intra_pred_l[h->pred_mode_Y[scan3x3[block]]]
|
||||||
(d, top, left, h->l_stride);
|
(d, top, left, h->l_stride);
|
||||||
if(h->cbp & (1<<block))
|
if(h->cbp & (1<<block))
|
||||||
decode_residual_block(h,gb,ff_cavs_intra_dec,1,h->qp,d,h->l_stride);
|
decode_residual_block(h, gb, intra_dec, 1, h->qp, d, h->l_stride);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* chroma intra prediction */
|
/* chroma intra prediction */
|
||||||
|
Loading…
Reference in New Issue
Block a user