mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
rv40: perform bitwise checks in loop filter
Down from 95 kcycles to 93 (including all called functions). Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
This commit is contained in:
parent
774b681b80
commit
d834ab0f2a
@ -431,7 +431,7 @@ static void rv40_loop_filter(RV34DecContext *r, int row)
|
||||
y_v_deblock &= ~MASK_Y_LEFT_COL;
|
||||
if(!row)
|
||||
y_h_deblock &= ~MASK_Y_TOP_ROW;
|
||||
if(row == s->mb_height - 1 || (mb_strong[POS_CUR] || mb_strong[POS_BOTTOM]))
|
||||
if(row == s->mb_height - 1 || (mb_strong[POS_CUR] | mb_strong[POS_BOTTOM]))
|
||||
y_h_deblock &= ~(MASK_Y_TOP_ROW << 16);
|
||||
/* Calculating chroma patterns is similar and easier since there is
|
||||
* no motion vector pattern for them.
|
||||
@ -448,7 +448,7 @@ static void rv40_loop_filter(RV34DecContext *r, int row)
|
||||
c_v_deblock[i] &= ~MASK_C_LEFT_COL;
|
||||
if(!row)
|
||||
c_h_deblock[i] &= ~MASK_C_TOP_ROW;
|
||||
if(row == s->mb_height - 1 || mb_strong[POS_CUR] || mb_strong[POS_BOTTOM])
|
||||
if(row == s->mb_height - 1 || (mb_strong[POS_CUR] | mb_strong[POS_BOTTOM]))
|
||||
c_h_deblock[i] &= ~(MASK_C_TOP_ROW << 4);
|
||||
}
|
||||
|
||||
@ -469,7 +469,7 @@ static void rv40_loop_filter(RV34DecContext *r, int row)
|
||||
0, 0, 0);
|
||||
}
|
||||
// filter left block edge in ordinary mode (with low filtering strength)
|
||||
if(y_v_deblock & (MASK_CUR << ij) && (i || !(mb_strong[POS_CUR] || mb_strong[POS_LEFT]))){
|
||||
if(y_v_deblock & (MASK_CUR << ij) && (i || !(mb_strong[POS_CUR] | mb_strong[POS_LEFT]))){
|
||||
if(!i)
|
||||
clip_left = mvmasks[POS_LEFT] & (MASK_RIGHT << j) ? clip[POS_LEFT] : 0;
|
||||
else
|
||||
@ -480,14 +480,14 @@ static void rv40_loop_filter(RV34DecContext *r, int row)
|
||||
alpha, beta, betaY, 0, 0, 1);
|
||||
}
|
||||
// filter top edge of the current macroblock when filtering strength is high
|
||||
if(!j && y_h_deblock & (MASK_CUR << i) && (mb_strong[POS_CUR] || mb_strong[POS_TOP])){
|
||||
if(!j && y_h_deblock & (MASK_CUR << i) && (mb_strong[POS_CUR] | mb_strong[POS_TOP])){
|
||||
rv40_adaptive_loop_filter(&r->rdsp, Y, s->linesize, dither,
|
||||
clip_cur,
|
||||
mvmasks[POS_TOP] & (MASK_TOP << i) ? clip[POS_TOP] : 0,
|
||||
alpha, beta, betaY, 0, 1, 0);
|
||||
}
|
||||
// filter left block edge in edge mode (with high filtering strength)
|
||||
if(y_v_deblock & (MASK_CUR << ij) && !i && (mb_strong[POS_CUR] || mb_strong[POS_LEFT])){
|
||||
if(y_v_deblock & (MASK_CUR << ij) && !i && (mb_strong[POS_CUR] | mb_strong[POS_LEFT])){
|
||||
clip_left = mvmasks[POS_LEFT] & (MASK_RIGHT << j) ? clip[POS_LEFT] : 0;
|
||||
rv40_adaptive_loop_filter(&r->rdsp, Y, s->linesize, dither,
|
||||
clip_cur,
|
||||
@ -509,7 +509,7 @@ static void rv40_loop_filter(RV34DecContext *r, int row)
|
||||
clip_cur,
|
||||
alpha, beta, betaC, 1, 0, 0);
|
||||
}
|
||||
if((c_v_deblock[k] & (MASK_CUR << ij)) && (i || !(mb_strong[POS_CUR] || mb_strong[POS_LEFT]))){
|
||||
if((c_v_deblock[k] & (MASK_CUR << ij)) && (i || !(mb_strong[POS_CUR] | mb_strong[POS_LEFT]))){
|
||||
if(!i)
|
||||
clip_left = uvcbp[POS_LEFT][k] & (MASK_CUR << (2*j+1)) ? clip[POS_LEFT] : 0;
|
||||
else
|
||||
@ -519,14 +519,14 @@ static void rv40_loop_filter(RV34DecContext *r, int row)
|
||||
clip_left,
|
||||
alpha, beta, betaC, 1, 0, 1);
|
||||
}
|
||||
if(!j && c_h_deblock[k] & (MASK_CUR << ij) && (mb_strong[POS_CUR] || mb_strong[POS_TOP])){
|
||||
if(!j && c_h_deblock[k] & (MASK_CUR << ij) && (mb_strong[POS_CUR] | mb_strong[POS_TOP])){
|
||||
int clip_top = uvcbp[POS_TOP][k] & (MASK_CUR << (ij+2)) ? clip[POS_TOP] : 0;
|
||||
rv40_adaptive_loop_filter(&r->rdsp, C, s->uvlinesize, i*8,
|
||||
clip_cur,
|
||||
clip_top,
|
||||
alpha, beta, betaC, 1, 1, 0);
|
||||
}
|
||||
if(c_v_deblock[k] & (MASK_CUR << ij) && !i && (mb_strong[POS_CUR] || mb_strong[POS_LEFT])){
|
||||
if(c_v_deblock[k] & (MASK_CUR << ij) && !i && (mb_strong[POS_CUR] | mb_strong[POS_LEFT])){
|
||||
clip_left = uvcbp[POS_LEFT][k] & (MASK_CUR << (2*j+1)) ? clip[POS_LEFT] : 0;
|
||||
rv40_adaptive_loop_filter(&r->rdsp, C, s->uvlinesize, j*8,
|
||||
clip_cur,
|
||||
|
Loading…
Reference in New Issue
Block a user