mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
move preparation of chroma intra prediction into its
own inline function Originally committed as revision 9513 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
b8524fd13f
commit
e183b6d17c
@ -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 */
|
load_intra_pred_chroma(h);
|
||||||
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];
|
|
||||||
}
|
|
||||||
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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user