mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-05 09:06:50 +08:00
[rc]: add init qp estimation
if outside doesn't set init qp value, mpp will estimate one init qp according to resolution and bitrate. Change-Id: If5415f6a3bfa3f2981ffd4eb044614bf9b035d2f Signed-off-by: Jung Zhao <jung.zhao@rock-chips.com>
This commit is contained in:
@@ -55,3 +55,54 @@ RK_S32 mpp_log2_16bit(RK_U32 v)
|
||||
return n;
|
||||
}
|
||||
|
||||
RK_S32 axb_div_c(RK_S32 a, RK_S32 b, RK_S32 c)
|
||||
{
|
||||
RK_U32 left = 32;
|
||||
RK_U32 right = 0;
|
||||
RK_U32 shift;
|
||||
RK_S32 sign = 1;
|
||||
RK_S32 tmp;
|
||||
|
||||
if (a == 0 || b == 0)
|
||||
return 0;
|
||||
else if ((a * b / b) == a && c != 0)
|
||||
return (a * b / c);
|
||||
|
||||
if (a < 0) {
|
||||
sign = -1;
|
||||
a = -a;
|
||||
}
|
||||
if (b < 0) {
|
||||
sign *= -1;
|
||||
b = -b;
|
||||
}
|
||||
if (c < 0) {
|
||||
sign *= -1;
|
||||
c = -c;
|
||||
}
|
||||
|
||||
if (c == 0)
|
||||
return 0x7FFFFFFF * sign;
|
||||
|
||||
if (b > a) {
|
||||
tmp = b;
|
||||
b = a;
|
||||
a = tmp;
|
||||
}
|
||||
|
||||
for (--left; (((RK_U32)a << left) >> left) != (RK_U32)a; --left)
|
||||
;
|
||||
|
||||
left--;
|
||||
|
||||
while (((RK_U32)b >> right) > (RK_U32)c)
|
||||
right++;
|
||||
|
||||
if (right > left) {
|
||||
return 0x7FFFFFFF * sign;
|
||||
} else {
|
||||
shift = left - right;
|
||||
return (RK_S32)((((RK_U32)a << shift) /
|
||||
(RK_U32)c * (RK_U32)b) >> shift) * sign;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user