Index: source/libvpx/vp9/decoder/vp9_decoder.c |
diff --git a/source/libvpx/vp9/decoder/vp9_decoder.c b/source/libvpx/vp9/decoder/vp9_decoder.c |
index 358f22a8dc19294c8ea625ba94577c1f7f281134..288d8690ca244fb2c9ded53f629e83af974d66ae 100644 |
--- a/source/libvpx/vp9/decoder/vp9_decoder.c |
+++ b/source/libvpx/vp9/decoder/vp9_decoder.c |
@@ -12,6 +12,8 @@ |
#include <limits.h> |
#include <stdio.h> |
+#include "./vp9_rtcd.h" |
+#include "./vpx_dsp_rtcd.h" |
#include "./vpx_scale_rtcd.h" |
#include "vpx_mem/vpx_mem.h" |
@@ -39,6 +41,8 @@ static void initialize_dec(void) { |
if (!init_done) { |
vp9_rtcd(); |
+ vpx_dsp_rtcd(); |
+ vpx_scale_rtcd(); |
vp9_init_intra_predictors(); |
init_done = 1; |
} |
@@ -46,7 +50,10 @@ static void initialize_dec(void) { |
static void vp9_dec_setup_mi(VP9_COMMON *cm) { |
cm->mi = cm->mip + cm->mi_stride + 1; |
- vpx_memset(cm->mip, 0, cm->mi_stride * (cm->mi_rows + 1) * sizeof(*cm->mip)); |
+ memset(cm->mip, 0, cm->mi_stride * (cm->mi_rows + 1) * sizeof(*cm->mip)); |
+ cm->mi_grid_visible = cm->mi_grid_base + cm->mi_stride + 1; |
+ memset(cm->mi_grid_base, 0, |
+ cm->mi_stride * (cm->mi_rows + 1) * sizeof(*cm->mi_grid_base)); |
} |
static int vp9_dec_alloc_mi(VP9_COMMON *cm, int mi_size) { |
@@ -54,12 +61,17 @@ static int vp9_dec_alloc_mi(VP9_COMMON *cm, int mi_size) { |
if (!cm->mip) |
return 1; |
cm->mi_alloc_size = mi_size; |
+ cm->mi_grid_base = (MODE_INFO **)vpx_calloc(mi_size, sizeof(MODE_INFO*)); |
+ if (!cm->mi_grid_base) |
+ return 1; |
return 0; |
} |
static void vp9_dec_free_mi(VP9_COMMON *cm) { |
vpx_free(cm->mip); |
cm->mip = NULL; |
+ vpx_free(cm->mi_grid_base); |
+ cm->mi_grid_base = NULL; |
} |
VP9Decoder *vp9_decoder_create(BufferPool *const pool) { |
@@ -89,8 +101,8 @@ VP9Decoder *vp9_decoder_create(BufferPool *const pool) { |
once(initialize_dec); |
// Initialize the references to not point to any frame buffers. |
- vpx_memset(&cm->ref_frame_map, -1, sizeof(cm->ref_frame_map)); |
- vpx_memset(&cm->next_ref_frame_map, -1, sizeof(cm->next_ref_frame_map)); |
+ memset(&cm->ref_frame_map, -1, sizeof(cm->ref_frame_map)); |
+ memset(&cm->next_ref_frame_map, -1, sizeof(cm->next_ref_frame_map)); |
cm->current_video_frame = 0; |
pbi->ready_for_new_data = 1; |