| Index: source/libvpx/vp9/common/vp9_alloccommon.c
|
| ===================================================================
|
| --- source/libvpx/vp9/common/vp9_alloccommon.c (revision 251189)
|
| +++ source/libvpx/vp9/common/vp9_alloccommon.c (working copy)
|
| @@ -33,9 +33,16 @@
|
| void vp9_free_frame_buffers(VP9_COMMON *cm) {
|
| int i;
|
|
|
| - for (i = 0; i < FRAME_BUFFERS; i++)
|
| - vp9_free_frame_buffer(&cm->yv12_fb[i]);
|
| + for (i = 0; i < FRAME_BUFFERS; i++) {
|
| + vp9_free_frame_buffer(&cm->frame_bufs[i].buf);
|
|
|
| + if (cm->frame_bufs[i].ref_count > 0 &&
|
| + cm->frame_bufs[i].raw_frame_buffer.data != NULL) {
|
| + cm->release_fb_cb(cm->cb_priv, &cm->frame_bufs[i].raw_frame_buffer);
|
| + cm->frame_bufs[i].ref_count = 0;
|
| + }
|
| + }
|
| +
|
| vp9_free_frame_buffer(&cm->post_proc_buffer);
|
|
|
| vpx_free(cm->mip);
|
| @@ -85,7 +92,7 @@
|
| int mi_size;
|
|
|
| if (vp9_realloc_frame_buffer(&cm->post_proc_buffer, width, height, ss_x, ss_y,
|
| - VP9_DEC_BORDER_IN_PIXELS) < 0)
|
| + VP9_DEC_BORDER_IN_PIXELS, NULL, NULL, NULL) < 0)
|
| goto fail;
|
|
|
| set_mb_mi(cm, aligned_width, aligned_height);
|
| @@ -140,18 +147,18 @@
|
| vp9_free_frame_buffers(cm);
|
|
|
| for (i = 0; i < FRAME_BUFFERS; i++) {
|
| - cm->fb_idx_ref_cnt[i] = 0;
|
| - if (vp9_alloc_frame_buffer(&cm->yv12_fb[i], width, height, ss_x, ss_y,
|
| - VP9_ENC_BORDER_IN_PIXELS) < 0)
|
| + cm->frame_bufs[i].ref_count = 0;
|
| + if (vp9_alloc_frame_buffer(&cm->frame_bufs[i].buf, width, height,
|
| + ss_x, ss_y, VP9_ENC_BORDER_IN_PIXELS) < 0)
|
| goto fail;
|
| }
|
|
|
| cm->new_fb_idx = FRAME_BUFFERS - 1;
|
| - cm->fb_idx_ref_cnt[cm->new_fb_idx] = 1;
|
| + cm->frame_bufs[cm->new_fb_idx].ref_count = 1;
|
|
|
| for (i = 0; i < REF_FRAMES; i++) {
|
| cm->ref_frame_map[i] = i;
|
| - cm->fb_idx_ref_cnt[i] = 1;
|
| + cm->frame_bufs[i].ref_count = 1;
|
| }
|
|
|
| if (vp9_alloc_frame_buffer(&cm->post_proc_buffer, width, height, ss_x, ss_y,
|
| @@ -199,6 +206,7 @@
|
|
|
| void vp9_remove_common(VP9_COMMON *cm) {
|
| vp9_free_frame_buffers(cm);
|
| + vp9_free_internal_frame_buffers(&cm->int_frame_buffers);
|
| }
|
|
|
| void vp9_initialize_common() {
|
|
|