Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
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
3971967c
Commit
3971967c
authored
May 21, 2014
by
Dmitry Kovalev
Committed by
Gerrit Code Review
May 21, 2014
Browse files
Merge "Cleaning up calculate_section_intra_ratio()."
parents
d8b26caa
9067b293
Changes
1
Hide whitespace changes
Inline
Side-by-side
vp9/encoder/vp9_firstpass.c
View file @
3971967c
...
...
@@ -1403,30 +1403,22 @@ void define_fixed_arf_period(VP9_COMP *cpi) {
#endif
// Calculate a section intra ratio used in setting max loop filter.
static
void
calculate_section_intra_ratio
(
TWO_PASS
*
twopass
,
const
FIRSTPASS_STATS
*
start_pos
,
int
section_length
)
{
FIRSTPASS_STATS
next_frame
;
FIRSTPASS_STATS
sectionstats
;
int
i
;
vp9_zero
(
next_frame
);
vp9_zero
(
sectionstats
);
reset_fpf_position
(
twopass
,
start_pos
);
for
(
i
=
0
;
i
<
section_length
;
++
i
)
{
input_stats
(
twopass
,
&
next_frame
);
accumulate_stats
(
&
sectionstats
,
&
next_frame
);
static
int
calculate_section_intra_ratio
(
const
FIRSTPASS_STATS
*
begin
,
const
FIRSTPASS_STATS
*
end
,
int
section_length
)
{
const
FIRSTPASS_STATS
*
s
=
begin
;
double
intra_error
=
0
.
0
;
double
coded_error
=
0
.
0
;
int
i
=
0
;
while
(
s
<
end
&&
i
<
section_length
)
{
intra_error
+=
s
->
intra_error
;
coded_error
+=
s
->
coded_error
;
++
s
;
++
i
;
}
avg_stats
(
&
sectionstats
);
twopass
->
section_intra_rating
=
(
int
)(
sectionstats
.
intra_error
/
DOUBLE_DIVIDE_CHECK
(
sectionstats
.
coded_error
));
reset_fpf_position
(
twopass
,
start_pos
);
return
(
int
)(
intra_error
/
DOUBLE_DIVIDE_CHECK
(
coded_error
));
}
// Calculate the total bits to allocate in this GF/ARF group.
...
...
@@ -1486,7 +1478,7 @@ static void define_gf_group(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
const
VP9EncoderConfig
*
const
oxcf
=
&
cpi
->
oxcf
;
TWO_PASS
*
const
twopass
=
&
cpi
->
twopass
;
FIRSTPASS_STATS
next_frame
;
const
FIRSTPASS_STATS
*
start_pos
;
const
FIRSTPASS_STATS
*
const
start_pos
=
twopass
->
stats_in
;
int
i
;
double
boost_score
=
0
.
0
;
double
old_boost_score
=
0
.
0
;
...
...
@@ -1516,7 +1508,6 @@ static void define_gf_group(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
vp9_zero
(
next_frame
);
twopass
->
gf_group_bits
=
0
;
start_pos
=
twopass
->
stats_in
;
// Load stats for the current frame.
mod_frame_err
=
calculate_modified_err
(
cpi
,
this_frame
);
...
...
@@ -1768,7 +1759,9 @@ static void define_gf_group(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
// Calculate a section intra ratio used in setting max loop filter.
if
(
cpi
->
common
.
frame_type
!=
KEY_FRAME
)
{
calculate_section_intra_ratio
(
twopass
,
start_pos
,
rc
->
baseline_gf_interval
);
twopass
->
section_intra_rating
=
calculate_section_intra_ratio
(
start_pos
,
twopass
->
stats_in_end
,
rc
->
baseline_gf_interval
);
}
}
...
...
@@ -1885,7 +1878,7 @@ static void find_next_key_frame(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
RATE_CONTROL
*
const
rc
=
&
cpi
->
rc
;
TWO_PASS
*
const
twopass
=
&
cpi
->
twopass
;
const
FIRSTPASS_STATS
first_frame
=
*
this_frame
;
const
FIRSTPASS_STATS
*
start_position
=
twopass
->
stats_in
;
const
FIRSTPASS_STATS
*
const
start_position
=
twopass
->
stats_in
;
FIRSTPASS_STATS
next_frame
;
FIRSTPASS_STATS
last_frame
;
double
decay_accumulator
=
1
.
0
;
...
...
@@ -2068,7 +2061,9 @@ static void find_next_key_frame(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
twopass
->
kf_zeromotion_pct
=
(
int
)(
zero_motion_accumulator
*
100
.
0
);
// Calculate a section intra ratio used in setting max loop filter.
calculate_section_intra_ratio
(
twopass
,
start_position
,
rc
->
frames_to_key
);
twopass
->
section_intra_rating
=
calculate_section_intra_ratio
(
start_position
,
twopass
->
stats_in_end
,
rc
->
frames_to_key
);
// Work out how many bits to allocate for the key frame itself.
rc
->
kf_boost
=
(
int
)
boost_score
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a 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