| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. | 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 cm->mi_stride = calc_mi_size(cm->mi_cols); | 37 cm->mi_stride = calc_mi_size(cm->mi_cols); |
| 38 | 38 |
| 39 cm->mb_cols = (cm->mi_cols + 1) >> 1; | 39 cm->mb_cols = (cm->mi_cols + 1) >> 1; |
| 40 cm->mb_rows = (cm->mi_rows + 1) >> 1; | 40 cm->mb_rows = (cm->mi_rows + 1) >> 1; |
| 41 cm->MBs = cm->mb_rows * cm->mb_cols; | 41 cm->MBs = cm->mb_rows * cm->mb_cols; |
| 42 } | 42 } |
| 43 | 43 |
| 44 static void setup_mi(VP9_COMMON *cm) { | 44 static void setup_mi(VP9_COMMON *cm) { |
| 45 cm->mi = cm->mip + cm->mi_stride + 1; | 45 cm->mi = cm->mip + cm->mi_stride + 1; |
| 46 cm->prev_mi = cm->prev_mip + cm->mi_stride + 1; | 46 cm->prev_mi = cm->prev_mip + cm->mi_stride + 1; |
| 47 cm->mi_grid_visible = cm->mi_grid_base + cm->mi_stride + 1; | |
| 48 cm->prev_mi_grid_visible = cm->prev_mi_grid_base + cm->mi_stride + 1; | |
| 49 | 47 |
| 50 vpx_memset(cm->mip, 0, cm->mi_stride * (cm->mi_rows + 1) * sizeof(*cm->mip)); | 48 vpx_memset(cm->mip, 0, cm->mi_stride * (cm->mi_rows + 1) * sizeof(*cm->mip)); |
| 51 | |
| 52 vpx_memset(cm->mi_grid_base, 0, cm->mi_stride * (cm->mi_rows + 1) * | |
| 53 sizeof(*cm->mi_grid_base)); | |
| 54 | |
| 55 clear_mi_border(cm, cm->prev_mip); | 49 clear_mi_border(cm, cm->prev_mip); |
| 56 } | 50 } |
| 57 | 51 |
| 58 static int alloc_mi(VP9_COMMON *cm, int mi_size) { | 52 static int alloc_mi(VP9_COMMON *cm, int mi_size) { |
| 59 int i; | 53 int i; |
| 60 | 54 |
| 61 for (i = 0; i < 2; ++i) { | 55 for (i = 0; i < 2; ++i) { |
| 62 cm->mip_array[i] = | 56 cm->mip_array[i] = |
| 63 (MODE_INFO *)vpx_calloc(mi_size, sizeof(MODE_INFO)); | 57 (MODE_INFO *)vpx_calloc(mi_size, sizeof(MODE_INFO)); |
| 64 if (cm->mip_array[i] == NULL) | 58 if (cm->mip_array[i] == NULL) |
| 65 return 1; | 59 return 1; |
| 66 | |
| 67 cm->mi_grid_base_array[i] = | |
| 68 (MODE_INFO **)vpx_calloc(mi_size, sizeof(MODE_INFO*)); | |
| 69 if (cm->mi_grid_base_array[i] == NULL) | |
| 70 return 1; | |
| 71 } | 60 } |
| 72 | 61 |
| 73 cm->mi_alloc_size = mi_size; | 62 cm->mi_alloc_size = mi_size; |
| 74 | 63 |
| 75 // Init the index. | 64 // Init the index. |
| 76 cm->mi_idx = 0; | 65 cm->mi_idx = 0; |
| 77 cm->prev_mi_idx = 1; | 66 cm->prev_mi_idx = 1; |
| 78 | 67 |
| 79 cm->mip = cm->mip_array[cm->mi_idx]; | 68 cm->mip = cm->mip_array[cm->mi_idx]; |
| 80 cm->prev_mip = cm->mip_array[cm->prev_mi_idx]; | 69 cm->prev_mip = cm->mip_array[cm->prev_mi_idx]; |
| 81 cm->mi_grid_base = cm->mi_grid_base_array[cm->mi_idx]; | |
| 82 cm->prev_mi_grid_base = cm->mi_grid_base_array[cm->prev_mi_idx]; | |
| 83 | 70 |
| 84 return 0; | 71 return 0; |
| 85 } | 72 } |
| 86 | 73 |
| 87 static void free_mi(VP9_COMMON *cm) { | 74 static void free_mi(VP9_COMMON *cm) { |
| 88 int i; | 75 int i; |
| 89 | 76 |
| 90 for (i = 0; i < 2; ++i) { | 77 for (i = 0; i < 2; ++i) { |
| 91 vpx_free(cm->mip_array[i]); | 78 vpx_free(cm->mip_array[i]); |
| 92 cm->mip_array[i] = NULL; | 79 cm->mip_array[i] = NULL; |
| 93 vpx_free(cm->mi_grid_base_array[i]); | |
| 94 cm->mi_grid_base_array[i] = NULL; | |
| 95 } | 80 } |
| 96 | 81 |
| 97 cm->mip = NULL; | 82 cm->mip = NULL; |
| 98 cm->prev_mip = NULL; | 83 cm->prev_mip = NULL; |
| 99 cm->mi_grid_base = NULL; | |
| 100 cm->prev_mi_grid_base = NULL; | |
| 101 } | 84 } |
| 102 | 85 |
| 103 void vp9_free_ref_frame_buffers(VP9_COMMON *cm) { | 86 void vp9_free_ref_frame_buffers(VP9_COMMON *cm) { |
| 104 int i; | 87 int i; |
| 105 | 88 |
| 106 for (i = 0; i < FRAME_BUFFERS; ++i) { | 89 for (i = 0; i < FRAME_BUFFERS; ++i) { |
| 107 vp9_free_frame_buffer(&cm->frame_bufs[i].buf); | 90 vp9_free_frame_buffer(&cm->frame_bufs[i].buf); |
| 108 | 91 |
| 109 if (cm->frame_bufs[i].ref_count > 0 && | 92 if (cm->frame_bufs[i].ref_count > 0 && |
| 110 cm->frame_bufs[i].raw_frame_buffer.data != NULL) { | 93 cm->frame_bufs[i].raw_frame_buffer.data != NULL) { |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 | 200 |
| 218 void vp9_swap_mi_and_prev_mi(VP9_COMMON *cm) { | 201 void vp9_swap_mi_and_prev_mi(VP9_COMMON *cm) { |
| 219 // Swap indices. | 202 // Swap indices. |
| 220 const int tmp = cm->mi_idx; | 203 const int tmp = cm->mi_idx; |
| 221 cm->mi_idx = cm->prev_mi_idx; | 204 cm->mi_idx = cm->prev_mi_idx; |
| 222 cm->prev_mi_idx = tmp; | 205 cm->prev_mi_idx = tmp; |
| 223 | 206 |
| 224 // Current mip will be the prev_mip for the next frame. | 207 // Current mip will be the prev_mip for the next frame. |
| 225 cm->mip = cm->mip_array[cm->mi_idx]; | 208 cm->mip = cm->mip_array[cm->mi_idx]; |
| 226 cm->prev_mip = cm->mip_array[cm->prev_mi_idx]; | 209 cm->prev_mip = cm->mip_array[cm->prev_mi_idx]; |
| 227 cm->mi_grid_base = cm->mi_grid_base_array[cm->mi_idx]; | |
| 228 cm->prev_mi_grid_base = cm->mi_grid_base_array[cm->prev_mi_idx]; | |
| 229 | 210 |
| 230 // Update the upper left visible macroblock ptrs. | 211 // Update the upper left visible macroblock ptrs. |
| 231 cm->mi = cm->mip + cm->mi_stride + 1; | 212 cm->mi = cm->mip + cm->mi_stride + 1; |
| 232 cm->prev_mi = cm->prev_mip + cm->mi_stride + 1; | 213 cm->prev_mi = cm->prev_mip + cm->mi_stride + 1; |
| 233 cm->mi_grid_visible = cm->mi_grid_base + cm->mi_stride + 1; | |
| 234 cm->prev_mi_grid_visible = cm->prev_mi_grid_base + cm->mi_stride + 1; | |
| 235 } | 214 } |
| OLD | NEW |