From e183b6d17cc5730f41f44ccca5c9857e19385f5f Mon Sep 17 00:00:00 2001 From: Stefan Gehrer Date: Sat, 7 Jul 2007 05:27:59 +0000 Subject: [PATCH] move preparation of chroma intra prediction into its own inline function Originally committed as revision 9513 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/cavs.c | 15 +-------------- libavcodec/cavs.h | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/libavcodec/cavs.c b/libavcodec/cavs.c index b6db8fe361..c1b9f49463 100644 --- a/libavcodec/cavs.c +++ b/libavcodec/cavs.c @@ -657,20 +657,7 @@ static int decode_mb_i(AVSContext *h, int cbp_code) { } /* 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->left_border_u, h->c_stride); h->intra_pred_c[pred_mode_uv](h->cv, &h->top_border_v[h->mbx*10], diff --git a/libavcodec/cavs.h b/libavcodec/cavs.h index 6610574536..a2d050a2b3 100644 --- a/libavcodec/cavs.h +++ b/libavcodec/cavs.h @@ -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) { *mode = mod_table[*mode]; if(*mode < 0) {