mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
move modification of intra prediction modes into
its own inline function Originally committed as revision 9514 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
e183b6d17c
commit
25c899471d
@ -616,24 +616,7 @@ static int decode_mb_i(AVSContext *h, int cbp_code) {
|
||||
av_log(h->s.avctx, AV_LOG_ERROR, "illegal intra chroma pred mode\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* save pred modes before they get modified */
|
||||
h->pred_mode_Y[3] = h->pred_mode_Y[5];
|
||||
h->pred_mode_Y[6] = h->pred_mode_Y[8];
|
||||
h->top_pred_Y[h->mbx*2+0] = h->pred_mode_Y[7];
|
||||
h->top_pred_Y[h->mbx*2+1] = h->pred_mode_Y[8];
|
||||
|
||||
/* modify pred modes according to availability of neighbour samples */
|
||||
if(!(h->flags & A_AVAIL)) {
|
||||
modify_pred(left_modifier_l, &h->pred_mode_Y[4] );
|
||||
modify_pred(left_modifier_l, &h->pred_mode_Y[7] );
|
||||
modify_pred(left_modifier_c, &pred_mode_uv );
|
||||
}
|
||||
if(!(h->flags & B_AVAIL)) {
|
||||
modify_pred(top_modifier_l, &h->pred_mode_Y[4] );
|
||||
modify_pred(top_modifier_l, &h->pred_mode_Y[5] );
|
||||
modify_pred(top_modifier_c, &pred_mode_uv );
|
||||
}
|
||||
modify_mb_i(h, &pred_mode_uv);
|
||||
|
||||
/* get coded block pattern */
|
||||
if(h->pic_type == FF_I_TYPE)
|
||||
|
@ -224,6 +224,10 @@ typedef struct {
|
||||
DCTELEM *block;
|
||||
} AVSContext;
|
||||
|
||||
extern const int_fast8_t ff_left_modifier_l[8];
|
||||
extern const int_fast8_t ff_top_modifier_l[8];
|
||||
extern const int_fast8_t ff_left_modifier_c[7];
|
||||
extern const int_fast8_t ff_top_modifier_c[7];
|
||||
extern const vector_t ff_cavs_un_mv;
|
||||
|
||||
static inline void load_intra_pred_luma(AVSContext *h, uint8_t *top,
|
||||
@ -301,6 +305,26 @@ static inline void modify_pred(const int_fast8_t *mod_table, int *mode) {
|
||||
}
|
||||
}
|
||||
|
||||
static inline void modify_mb_i(AVSContext *h, int *pred_mode_uv) {
|
||||
/* save pred modes before they get modified */
|
||||
h->pred_mode_Y[3] = h->pred_mode_Y[5];
|
||||
h->pred_mode_Y[6] = h->pred_mode_Y[8];
|
||||
h->top_pred_Y[h->mbx*2+0] = h->pred_mode_Y[7];
|
||||
h->top_pred_Y[h->mbx*2+1] = h->pred_mode_Y[8];
|
||||
|
||||
/* modify pred modes according to availability of neighbour samples */
|
||||
if(!(h->flags & A_AVAIL)) {
|
||||
modify_pred(ff_left_modifier_l, &h->pred_mode_Y[4] );
|
||||
modify_pred(ff_left_modifier_l, &h->pred_mode_Y[7] );
|
||||
modify_pred(ff_left_modifier_c, pred_mode_uv );
|
||||
}
|
||||
if(!(h->flags & B_AVAIL)) {
|
||||
modify_pred(ff_top_modifier_l, &h->pred_mode_Y[4] );
|
||||
modify_pred(ff_top_modifier_l, &h->pred_mode_Y[5] );
|
||||
modify_pred(ff_top_modifier_c, pred_mode_uv );
|
||||
}
|
||||
}
|
||||
|
||||
static inline void set_mvs(vector_t *mv, enum block_t size) {
|
||||
switch(size) {
|
||||
case BLK_16X16:
|
||||
|
@ -513,9 +513,9 @@ static const uint8_t tc_tab[64] = {
|
||||
5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9
|
||||
};
|
||||
|
||||
static const int_fast8_t left_modifier_l[8] = { 0,-1, 6,-1,-1, 7, 6, 7};
|
||||
static const int_fast8_t top_modifier_l[8] = {-1, 1, 5,-1,-1, 5, 7, 7};
|
||||
static const int_fast8_t left_modifier_c[7] = { 5,-1, 2,-1, 6, 5, 6};
|
||||
static const int_fast8_t top_modifier_c[7] = { 4, 1,-1,-1, 4, 6, 6};
|
||||
const int_fast8_t ff_left_modifier_l[8] = { 0,-1, 6,-1,-1, 7, 6, 7};
|
||||
const int_fast8_t ff_top_modifier_l[8] = {-1, 1, 5,-1,-1, 5, 7, 7};
|
||||
const int_fast8_t ff_left_modifier_c[7] = { 5,-1, 2,-1, 6, 5, 6};
|
||||
const int_fast8_t ff_top_modifier_c[7] = { 4, 1,-1,-1, 4, 6, 6};
|
||||
|
||||
#endif // AVCODEC_CAVSDATA_H
|
||||
|
Loading…
Reference in New Issue
Block a user