Browse Source

move preparation of chroma intra prediction into its

own inline function

Originally committed as revision 9513 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Stefan Gehrer 18 years ago
parent
commit
e183b6d17c
2 changed files with 18 additions and 14 deletions
  1. +1
    -14
      libavcodec/cavs.c
  2. +17
    -0
      libavcodec/cavs.h

+ 1
- 14
libavcodec/cavs.c View File

@@ -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],


+ 17
- 0
libavcodec/cavs.h View File

@@ -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) {


Loading…
Cancel
Save