Merge "Don't allow very short GF groups even when the GF is predicted from an ARF."
This commit is contained in:
commit
824e9410c6
@ -1558,6 +1558,24 @@ static void define_gf_group(VP8_COMP *cpi, FIRSTPASS_STATS *this_frame)
|
|||||||
|
|
||||||
cpi->gfu_boost = (int)(boost_score * 100.0) >> 4;
|
cpi->gfu_boost = (int)(boost_score * 100.0) >> 4;
|
||||||
|
|
||||||
|
// Dont allow conventional gf too near the next kf
|
||||||
|
if ((cpi->twopass.frames_to_key - i) < MIN_GF_INTERVAL)
|
||||||
|
{
|
||||||
|
while (i < cpi->twopass.frames_to_key)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
|
||||||
|
if (EOF == input_stats(cpi, this_frame))
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (i < cpi->twopass.frames_to_key)
|
||||||
|
{
|
||||||
|
mod_frame_err = calculate_modified_err(cpi, this_frame);
|
||||||
|
gf_group_err += mod_frame_err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Should we use the alternate refernce frame
|
// Should we use the alternate refernce frame
|
||||||
if (allow_alt_ref &&
|
if (allow_alt_ref &&
|
||||||
(i >= MIN_GF_INTERVAL) &&
|
(i >= MIN_GF_INTERVAL) &&
|
||||||
@ -1680,25 +1698,6 @@ static void define_gf_group(VP8_COMP *cpi, FIRSTPASS_STATS *this_frame)
|
|||||||
cpi->baseline_gf_interval = i;
|
cpi->baseline_gf_interval = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Conventional GF
|
|
||||||
if (!cpi->source_alt_ref_pending)
|
|
||||||
{
|
|
||||||
// Dont allow conventional gf too near the next kf
|
|
||||||
if ((cpi->twopass.frames_to_key - cpi->baseline_gf_interval) < MIN_GF_INTERVAL)
|
|
||||||
{
|
|
||||||
while (cpi->baseline_gf_interval < cpi->twopass.frames_to_key)
|
|
||||||
{
|
|
||||||
if (EOF == input_stats(cpi, this_frame))
|
|
||||||
break;
|
|
||||||
|
|
||||||
cpi->baseline_gf_interval++;
|
|
||||||
|
|
||||||
if (cpi->baseline_gf_interval < cpi->twopass.frames_to_key)
|
|
||||||
gf_group_err += calculate_modified_err(cpi, this_frame);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now decide how many bits should be allocated to the GF group as a proportion of those remaining in the kf group.
|
// Now decide how many bits should be allocated to the GF group as a proportion of those remaining in the kf group.
|
||||||
// The final key frame group in the clip is treated as a special case where cpi->twopass.kf_group_bits is tied to cpi->twopass.bits_left.
|
// The final key frame group in the clip is treated as a special case where cpi->twopass.kf_group_bits is tied to cpi->twopass.bits_left.
|
||||||
// This is also important for short clips where there may only be one key frame.
|
// This is also important for short clips where there may only be one key frame.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user