summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_rdopt.c
diff options
context:
space:
mode:
authorJohn Koleszar <jkoleszar@google.com>2013-02-08 14:20:05 -0800
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2013-02-08 14:20:05 -0800
commit6dfc95fe63a52945350a7c8a234e87a4a55645db (patch)
tree9eee00f47c23b412ab1c181e71ffb816ac7b92f1 /vp9/encoder/vp9_rdopt.c
parent3de8ee6ba1db38f14643c10793f57ed5d0b7122f (diff)
parent393b4856273c06aa0e7f0aec90a2b93a19aaf2d2 (diff)
downloadlibvpx-6dfc95fe63a52945350a7c8a234e87a4a55645db.tar
libvpx-6dfc95fe63a52945350a7c8a234e87a4a55645db.tar.gz
libvpx-6dfc95fe63a52945350a7c8a234e87a4a55645db.tar.bz2
libvpx-6dfc95fe63a52945350a7c8a234e87a4a55645db.zip
Merge changes Icd1a2a5a,I204d17a1,I3ed92117 into experimental
* changes: Initial support for resolution changes on P-frames Avoid allocating memory when resizing frames Adds a test for the VP8E_SET_SCALEMODE control
Diffstat (limited to 'vp9/encoder/vp9_rdopt.c')
-rw-r--r--vp9/encoder/vp9_rdopt.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c
index c50c55ff9..370374164 100644
--- a/vp9/encoder/vp9_rdopt.c
+++ b/vp9/encoder/vp9_rdopt.c
@@ -3517,6 +3517,8 @@ static void rd_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
int recon_yoffset, int recon_uvoffset,
int *returnrate, int *returndistortion,
int64_t *returnintra) {
+ static const int flag_list[4] = { 0, VP9_LAST_FLAG, VP9_GOLD_FLAG,
+ VP9_ALT_FLAG };
VP9_COMMON *cm = &cpi->common;
MACROBLOCKD *xd = &x->e_mbd;
union b_mode_info best_bmodes[16];
@@ -3684,6 +3686,16 @@ static void rd_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
if (best_rd <= cpi->rd_threshes[mode_index])
continue;
+ // Ensure that the references used by this mode are available.
+ if (mbmi->ref_frame &&
+ !(cpi->ref_frame_flags & flag_list[mbmi->ref_frame]))
+ continue;
+
+ if (mbmi->second_ref_frame > 0 &&
+ !(cpi->ref_frame_flags & flag_list[mbmi->second_ref_frame]))
+ continue;
+
+
// current coding mode under rate-distortion optimization test loop
#if CONFIG_COMP_INTERINTRA_PRED
mbmi->interintra_mode = (MB_PREDICTION_MODE)(DC_PRED - 1);