summaryrefslogtreecommitdiff
path: root/vp8
diff options
context:
space:
mode:
authorJohn Koleszar <jkoleszar@google.com>2012-01-27 11:31:35 -0800
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2012-01-27 11:31:35 -0800
commit9951f461339559fb16b54395ebf570693dc29592 (patch)
treef3571661368418540bc95f73e60204a77ee2e0a0 /vp8
parent319f7c4d56e82a7c38a64874bf5e9012605b8fe6 (diff)
parent8be41bba809d41f567795ade9be900d6365b1f2d (diff)
downloadlibvpx-9951f461339559fb16b54395ebf570693dc29592.tar
libvpx-9951f461339559fb16b54395ebf570693dc29592.tar.gz
libvpx-9951f461339559fb16b54395ebf570693dc29592.tar.bz2
libvpx-9951f461339559fb16b54395ebf570693dc29592.zip
Merge "Hook up VP8D_GET_LAST_REF_USED"
Diffstat (limited to 'vp8')
-rw-r--r--vp8/common/postproc.c17
-rw-r--r--vp8/decoder/onyxd_if.c23
-rw-r--r--vp8/vp8_dx_iface.c9
3 files changed, 28 insertions, 21 deletions
diff --git a/vp8/common/postproc.c b/vp8/common/postproc.c
index 15a214b4c..3ee04fb24 100644
--- a/vp8/common/postproc.c
+++ b/vp8/common/postproc.c
@@ -696,23 +696,6 @@ static void constrain_line (int x0, int *x1, int y0, int *y1, int width, int hei
}
}
-int vp8_references_buffer( VP8_COMMON *oci, int ref_frame )
-{
- const MODE_INFO *mi = oci->mi;
- int mb_row, mb_col;
-
- for (mb_row = 0; mb_row < oci->mb_rows; mb_row++)
- {
- for (mb_col = 0; mb_col < oci->mb_cols; mb_col++,mi++)
- {
- if( mi->mbmi.ref_frame == ref_frame)
- return 1;
- }
- mi++;
- }
- return 0;
-
-}
static void multiframe_quality_enhance_block
(
diff --git a/vp8/decoder/onyxd_if.c b/vp8/decoder/onyxd_if.c
index 852d8daed..13be34f94 100644
--- a/vp8/decoder/onyxd_if.c
+++ b/vp8/decoder/onyxd_if.c
@@ -606,3 +606,26 @@ int vp8dx_get_raw_frame(VP8D_COMP *pbi, YV12_BUFFER_CONFIG *sd, int64_t *time_st
vp8_clear_system_state();
return ret;
}
+
+
+/* This function as written isn't decoder specific, but the encoder has
+ * much faster ways of computing this, so it's ok for it to live in a
+ * decode specific file.
+ */
+int vp8dx_references_buffer( VP8_COMMON *oci, int ref_frame )
+{
+ const MODE_INFO *mi = oci->mi;
+ int mb_row, mb_col;
+
+ for (mb_row = 0; mb_row < oci->mb_rows; mb_row++)
+ {
+ for (mb_col = 0; mb_col < oci->mb_cols; mb_col++,mi++)
+ {
+ if( mi->mbmi.ref_frame == ref_frame)
+ return 1;
+ }
+ mi++;
+ }
+ return 0;
+
+}
diff --git a/vp8/vp8_dx_iface.c b/vp8/vp8_dx_iface.c
index de2714317..0a62d9717 100644
--- a/vp8/vp8_dx_iface.c
+++ b/vp8/vp8_dx_iface.c
@@ -700,7 +700,7 @@ static vpx_codec_err_t vp8_get_last_ref_updates(vpx_codec_alg_priv_t *ctx,
return VPX_CODEC_INVALID_PARAM;
}
-extern int vp8_references_buffer( VP8_COMMON *oci, int ref_frame );
+extern int vp8dx_references_buffer( VP8_COMMON *oci, int ref_frame );
static vpx_codec_err_t vp8_get_last_ref_frame(vpx_codec_alg_priv_t *ctx,
int ctrl_id,
va_list args)
@@ -712,9 +712,9 @@ static vpx_codec_err_t vp8_get_last_ref_frame(vpx_codec_alg_priv_t *ctx,
if (ref_info)
{
*ref_info =
- (vp8_references_buffer( oci, ALTREF_FRAME )?VP8_ALTR_FRAME:0) |
- (vp8_references_buffer( oci, GOLDEN_FRAME )?VP8_GOLD_FRAME:0) |
- (vp8_references_buffer( oci, LAST_FRAME )?VP8_LAST_FRAME:0);
+ (vp8dx_references_buffer( oci, ALTREF_FRAME )?VP8_ALTR_FRAME:0) |
+ (vp8dx_references_buffer( oci, GOLDEN_FRAME )?VP8_GOLD_FRAME:0) |
+ (vp8dx_references_buffer( oci, LAST_FRAME )?VP8_LAST_FRAME:0);
return VPX_CODEC_OK;
}
@@ -752,6 +752,7 @@ vpx_codec_ctrl_fn_map_t vp8_ctf_maps[] =
{VP8_SET_DBG_DISPLAY_MV, vp8_set_dbg_options},
{VP8D_GET_LAST_REF_UPDATES, vp8_get_last_ref_updates},
{VP8D_GET_FRAME_CORRUPTED, vp8_get_frame_corrupted},
+ {VP8D_GET_LAST_REF_USED, vp8_get_last_ref_frame},
{ -1, NULL},
};