diff options
author | Dmitry Kovalev <dkovalev@google.com> | 2014-01-14 14:12:45 -0800 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2014-01-14 14:12:45 -0800 |
commit | 7da6422d63047bf5d78c257fb6d43cc2f308d1fb (patch) | |
tree | 13e6583ccbf18e04c7370bbd2d925aef47c1624d /vp9/encoder | |
parent | 518a934f43bbbd16a32746f9f935b70d77987d5d (diff) | |
parent | 804a155d64b1e1cbad97a5a3a88f18736d52f3c2 (diff) | |
download | libvpx-7da6422d63047bf5d78c257fb6d43cc2f308d1fb.tar libvpx-7da6422d63047bf5d78c257fb6d43cc2f308d1fb.tar.gz libvpx-7da6422d63047bf5d78c257fb6d43cc2f308d1fb.tar.bz2 libvpx-7da6422d63047bf5d78c257fb6d43cc2f308d1fb.zip |
Merge "Adding get_vp9_ref_frame_buffer() function."
Diffstat (limited to 'vp9/encoder')
-rw-r--r-- | vp9/encoder/vp9_onyx_if.c | 55 |
1 files changed, 26 insertions, 29 deletions
diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c index 669fe0a97..291a55ecb 100644 --- a/vp9/encoder/vp9_onyx_if.c +++ b/vp9/encoder/vp9_onyx_if.c @@ -2193,27 +2193,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) @@ -2225,23 +2231,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) { |