From: Dmitry Kovalev Date: Fri, 10 Jan 2014 19:59:38 +0000 (-0800) Subject: Adding get_vp9_ref_frame_buffer() function. X-Git-Tag: v1.4.0~2682^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=804a155d64b1e1cbad97a5a3a88f18736d52f3c2;p=libvpx Adding get_vp9_ref_frame_buffer() function. Change-Id: Iae195fcf952dd27ba424f8e95090b8ffc4d5a7c8 --- diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c index 45fc13e69..7a1f5c1a9 100644 --- a/vp9/encoder/vp9_onyx_if.c +++ b/vp9/encoder/vp9_onyx_if.c @@ -2184,27 +2184,33 @@ int vp9_update_reference(VP9_PTR ptr, int ref_frame_flags) { return 0; } -int vp9_copy_reference_enc(VP9_PTR ptr, VP9_REFFRAME ref_frame_flag, - YV12_BUFFER_CONFIG *sd) { - VP9_COMP *cpi = (VP9_COMP *)(ptr); - YV12_BUFFER_CONFIG *cfg; - +static YV12_BUFFER_CONFIG *get_vp9_ref_frame_buffer(VP9_COMP *cpi, + VP9_REFFRAME ref_frame_flag) { + MV_REFERENCE_FRAME ref_frame = NONE; if (ref_frame_flag == VP9_LAST_FLAG) - cfg = get_ref_frame_buffer(cpi, LAST_FRAME); + ref_frame = LAST_FRAME; else if (ref_frame_flag == VP9_GOLD_FLAG) - cfg = get_ref_frame_buffer(cpi, GOLDEN_FRAME); + ref_frame = GOLDEN_FRAME; else if (ref_frame_flag == VP9_ALT_FLAG) - cfg = get_ref_frame_buffer(cpi, ALTREF_FRAME); - else - return -1; + ref_frame = ALTREF_FRAME; - vp8_yv12_copy_frame(cfg, sd); + return ref_frame == NONE ? NULL : get_ref_frame_buffer(cpi, ref_frame); +} - return 0; +int vp9_copy_reference_enc(VP9_PTR ptr, VP9_REFFRAME ref_frame_flag, + YV12_BUFFER_CONFIG *sd) { + VP9_COMP *const cpi = (VP9_COMP *)ptr; + YV12_BUFFER_CONFIG *cfg = get_vp9_ref_frame_buffer(cpi, ref_frame_flag); + if (cfg) { + vp8_yv12_copy_frame(cfg, sd); + return 0; + } else { + return -1; + } } int vp9_get_reference_enc(VP9_PTR ptr, int index, YV12_BUFFER_CONFIG **fb) { - VP9_COMP *cpi = (VP9_COMP *)(ptr); + VP9_COMP *cpi = (VP9_COMP *)ptr; VP9_COMMON *cm = &cpi->common; if (index < 0 || index >= REF_FRAMES) @@ -2216,23 +2222,14 @@ int vp9_get_reference_enc(VP9_PTR ptr, int index, YV12_BUFFER_CONFIG **fb) { int vp9_set_reference_enc(VP9_PTR ptr, VP9_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd) { - VP9_COMP *cpi = (VP9_COMP *)(ptr); - VP9_COMMON *cm = &cpi->common; - - int ref_fb_idx; - - if (ref_frame_flag == VP9_LAST_FLAG) - ref_fb_idx = cm->ref_frame_map[cpi->lst_fb_idx]; - else if (ref_frame_flag == VP9_GOLD_FLAG) - ref_fb_idx = cm->ref_frame_map[cpi->gld_fb_idx]; - else if (ref_frame_flag == VP9_ALT_FLAG) - ref_fb_idx = cm->ref_frame_map[cpi->alt_fb_idx]; - else + VP9_COMP *cpi = (VP9_COMP *)ptr; + YV12_BUFFER_CONFIG *cfg = get_vp9_ref_frame_buffer(cpi, ref_frame_flag); + if (cfg) { + vp8_yv12_copy_frame(sd, cfg); + return 0; + } else { return -1; - - vp8_yv12_copy_frame(sd, &cm->yv12_fb[ref_fb_idx]); - - return 0; + } } int vp9_update_entropy(VP9_PTR comp, int update) {