No arf right before real scene cut.
To reduce pulsing we now allow an arf just before forced key frames and at the end of a clip or section (which may be stitched to another clip or section). However, this does not make sense for key frames arising from real scene cuts. Change from original patch reflects other recent changes in regard to alignment of gf/arf and kf groups. Change-Id: I074a91d1207e9b3e28085af982f6718aa599775f
This commit is contained in:
parent
603075fa04
commit
a00dad39bd
@ -1660,7 +1660,7 @@ static void define_gf_group(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
|
||||
|
||||
// Don't allow a gf too near the next kf
|
||||
if ((cpi->rc.frames_to_key - i) < MIN_GF_INTERVAL) {
|
||||
while (i < cpi->rc.frames_to_key) {
|
||||
while (i < (cpi->rc.frames_to_key + !cpi->rc.next_key_frame_forced)) {
|
||||
i++;
|
||||
|
||||
if (EOF == input_stats(&cpi->twopass, this_frame))
|
||||
@ -1695,6 +1695,9 @@ static void define_gf_group(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
|
||||
if (allow_alt_ref &&
|
||||
(i < cpi->oxcf.lag_in_frames) &&
|
||||
(i >= MIN_GF_INTERVAL) &&
|
||||
// for real scene cuts (not forced kfs) dont allow arf very near kf.
|
||||
(cpi->rc.next_key_frame_forced ||
|
||||
(i <= (cpi->rc.frames_to_key - MIN_GF_INTERVAL))) &&
|
||||
((next_frame.pcnt_inter > 0.75) ||
|
||||
(next_frame.pcnt_second_ref > 0.5)) &&
|
||||
((mv_in_out_accumulator / (double)i > -0.2) ||
|
||||
@ -2368,6 +2371,8 @@ static void find_next_key_frame(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
|
||||
input_stats(&cpi->twopass, &tmp_frame);
|
||||
}
|
||||
cpi->rc.next_key_frame_forced = 1;
|
||||
} else if (cpi->twopass.stats_in == cpi->twopass.stats_in_end) {
|
||||
cpi->rc.next_key_frame_forced = 1;
|
||||
} else {
|
||||
cpi->rc.next_key_frame_forced = 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user