diff options
-rw-r--r-- | vp8/decoder/decodemv.c | 27 | ||||
-rw-r--r-- | vp8/encoder/firstpass.c | 37 |
2 files changed, 22 insertions, 42 deletions
diff --git a/vp8/decoder/decodemv.c b/vp8/decoder/decodemv.c index d63887744..73d2518cc 100644 --- a/vp8/decoder/decodemv.c +++ b/vp8/decoder/decodemv.c @@ -472,18 +472,18 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi, /* Clip "next_nearest" so that it does not extend to far out of image */ vp8_clamp_mv(mv, mb_to_left_edge, mb_to_right_edge, mb_to_top_edge, mb_to_bottom_edge); - goto propagate_mv; + break; case NEARESTMV: mv->as_int = nearest.as_int; /* Clip "next_nearest" so that it does not extend to far out of image */ vp8_clamp_mv(mv, mb_to_left_edge, mb_to_right_edge, mb_to_top_edge, mb_to_bottom_edge); - goto propagate_mv; + break; case ZEROMV: mv->as_int = 0; - goto propagate_mv; + break; case NEWMV: read_mv(bc, &mv->as_mv, (const MV_CONTEXT *) mvc); @@ -500,27 +500,8 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi, mb_to_right_edge, mb_to_top_edge, mb_to_bottom_edge); - - propagate_mv: /* same MV throughout */ - { - mi->bmi[ 0].mv.as_int = - mi->bmi[ 1].mv.as_int = - mi->bmi[ 2].mv.as_int = - mi->bmi[ 3].mv.as_int = - mi->bmi[ 4].mv.as_int = - mi->bmi[ 5].mv.as_int = - mi->bmi[ 6].mv.as_int = - mi->bmi[ 7].mv.as_int = - mi->bmi[ 8].mv.as_int = - mi->bmi[ 9].mv.as_int = - mi->bmi[10].mv.as_int = - mi->bmi[11].mv.as_int = - mi->bmi[12].mv.as_int = - mi->bmi[13].mv.as_int = - mi->bmi[14].mv.as_int = - mi->bmi[15].mv.as_int = mv->as_int; - } break; + default:; #if CONFIG_DEBUG assert(0); diff --git a/vp8/encoder/firstpass.c b/vp8/encoder/firstpass.c index 6655a865e..3c4b8f4a0 100644 --- a/vp8/encoder/firstpass.c +++ b/vp8/encoder/firstpass.c @@ -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; + // 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 if (allow_alt_ref && (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; } - // 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. // 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. |