Mercurial > libavcodec.hg
diff cavs.h @ 5239:5760ab0250aa libavcodec
move modification of intra prediction modes into
its own inline function
author | stefang |
---|---|
date | Sat, 07 Jul 2007 06:15:05 +0000 |
parents | 871a49faf887 |
children | 1701ce572fed |
line wrap: on
line diff
--- a/cavs.h Sat Jul 07 05:27:59 2007 +0000 +++ b/cavs.h Sat Jul 07 06:15:05 2007 +0000 @@ -224,6 +224,10 @@ 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_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: