Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Xiph.Org
aom-rav1e
Commits
8f684689
Commit
8f684689
authored
Apr 08, 2014
by
Yaowu Xu
Committed by
Gerrit Code Review
Apr 08, 2014
Browse files
Merge "Replace imprecise 32 bits calculations by 64 bits calculations"
parents
2914bcfd
0ec5919d
Changes
2
Hide whitespace changes
Inline
Side-by-side
vp9/encoder/vp9_firstpass.c
View file @
8f684689
...
...
@@ -917,9 +917,7 @@ int vp9_twopass_worst_quality(VP9_COMP *cpi, FIRSTPASS_STATS *fpstats,
return
rc
->
worst_quality
;
// Highest value allowed
target_norm_bits_per_mb
=
section_target_bandwitdh
<
(
1
<<
20
)
?
(
section_target_bandwitdh
<<
BPER_MB_NORMBITS
)
/
num_mbs
:
(
section_target_bandwitdh
/
num_mbs
)
<<
BPER_MB_NORMBITS
;
((
uint64_t
)
section_target_bandwitdh
<<
BPER_MB_NORMBITS
)
/
num_mbs
;
// Try and pick a max Q that will be high enough to encode the
// content at the given rate.
...
...
vp9/encoder/vp9_ratectrl.c
View file @
8f684689
...
...
@@ -107,11 +107,7 @@ static int estimate_bits_at_q(int frame_kind, int q, int mbs,
double
correction_factor
)
{
const
int
bpm
=
(
int
)(
vp9_rc_bits_per_mb
(
frame_kind
,
q
,
correction_factor
));
// Attempt to retain reasonable accuracy without overflow. The cutoff is
// chosen such that the maximum product of Bpm and MBs fits 31 bits. The
// largest Bpm takes 20 bits.
return
(
mbs
>
(
1
<<
11
))
?
(
bpm
>>
BPER_MB_NORMBITS
)
*
mbs
:
(
bpm
*
mbs
)
>>
BPER_MB_NORMBITS
;
return
((
uint64_t
)
bpm
*
mbs
)
>>
BPER_MB_NORMBITS
;
}
int
vp9_rc_clamp_pframe_target_size
(
const
VP9_COMP
*
const
cpi
,
int
target
)
{
...
...
@@ -323,11 +319,8 @@ int vp9_rc_regulate_q(const VP9_COMP *cpi, int target_bits_per_frame,
// Calculate required scaling factor based on target frame size and size of
// frame produced using previous Q.
if
(
target_bits_per_frame
>=
(
INT_MAX
>>
BPER_MB_NORMBITS
))
// Case where we would overflow int
target_bits_per_mb
=
(
target_bits_per_frame
/
cm
->
MBs
)
<<
BPER_MB_NORMBITS
;
else
target_bits_per_mb
=
(
target_bits_per_frame
<<
BPER_MB_NORMBITS
)
/
cm
->
MBs
;
target_bits_per_mb
=
((
uint64_t
)
target_bits_per_frame
<<
BPER_MB_NORMBITS
)
/
cm
->
MBs
;
i
=
active_best_quality
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment