own inline function Originally committed as revision 9513 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.5
| @@ -657,20 +657,7 @@ static int decode_mb_i(AVSContext *h, int cbp_code) { | |||||
| } | } | ||||
| /* chroma intra prediction */ | /* chroma intra prediction */ | ||||
| /* extend borders by one pixel */ | |||||
| h->left_border_u[9] = h->left_border_u[8]; | |||||
| h->left_border_v[9] = h->left_border_v[8]; | |||||
| h->top_border_u[h->mbx*10+9] = h->top_border_u[h->mbx*10+8]; | |||||
| h->top_border_v[h->mbx*10+9] = h->top_border_v[h->mbx*10+8]; | |||||
| if(h->mbx && h->mby) { | |||||
| h->top_border_u[h->mbx*10] = h->left_border_u[0] = h->topleft_border_u; | |||||
| h->top_border_v[h->mbx*10] = h->left_border_v[0] = h->topleft_border_v; | |||||
| } else { | |||||
| h->left_border_u[0] = h->left_border_u[1]; | |||||
| h->left_border_v[0] = h->left_border_v[1]; | |||||
| h->top_border_u[h->mbx*10] = h->top_border_u[h->mbx*10+1]; | |||||
| h->top_border_v[h->mbx*10] = h->top_border_v[h->mbx*10+1]; | |||||
| } | |||||
| load_intra_pred_chroma(h); | |||||
| h->intra_pred_c[pred_mode_uv](h->cu, &h->top_border_u[h->mbx*10], | h->intra_pred_c[pred_mode_uv](h->cu, &h->top_border_u[h->mbx*10], | ||||
| h->left_border_u, h->c_stride); | h->left_border_u, h->c_stride); | ||||
| h->intra_pred_c[pred_mode_uv](h->cv, &h->top_border_v[h->mbx*10], | h->intra_pred_c[pred_mode_uv](h->cv, &h->top_border_v[h->mbx*10], | ||||
| @@ -276,6 +276,23 @@ static inline void load_intra_pred_luma(AVSContext *h, uint8_t *top, | |||||
| } | } | ||||
| } | } | ||||
| static inline void load_intra_pred_chroma(AVSContext *h) { | |||||
| /* extend borders by one pixel */ | |||||
| h->left_border_u[9] = h->left_border_u[8]; | |||||
| h->left_border_v[9] = h->left_border_v[8]; | |||||
| h->top_border_u[h->mbx*10+9] = h->top_border_u[h->mbx*10+8]; | |||||
| h->top_border_v[h->mbx*10+9] = h->top_border_v[h->mbx*10+8]; | |||||
| if(h->mbx && h->mby) { | |||||
| h->top_border_u[h->mbx*10] = h->left_border_u[0] = h->topleft_border_u; | |||||
| h->top_border_v[h->mbx*10] = h->left_border_v[0] = h->topleft_border_v; | |||||
| } else { | |||||
| h->left_border_u[0] = h->left_border_u[1]; | |||||
| h->left_border_v[0] = h->left_border_v[1]; | |||||
| h->top_border_u[h->mbx*10] = h->top_border_u[h->mbx*10+1]; | |||||
| h->top_border_v[h->mbx*10] = h->top_border_v[h->mbx*10+1]; | |||||
| } | |||||
| } | |||||
| static inline void modify_pred(const int_fast8_t *mod_table, int *mode) { | static inline void modify_pred(const int_fast8_t *mod_table, int *mode) { | ||||
| *mode = mod_table[*mode]; | *mode = mod_table[*mode]; | ||||
| if(*mode < 0) { | if(*mode < 0) { | ||||