| 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 16 matching lines...) Expand all  Loading... | 
| 27   vpx_memset(mi, 0, sizeof(MODE_INFO) * stride); | 27   vpx_memset(mi, 0, sizeof(MODE_INFO) * stride); | 
| 28 | 28 | 
| 29   // Clear left border column | 29   // Clear left border column | 
| 30   for (i = 1; i < cm->mi_rows + 1; i++) | 30   for (i = 1; i < cm->mi_rows + 1; i++) | 
| 31     vpx_memset(&mi[i * stride], 0, sizeof(MODE_INFO)); | 31     vpx_memset(&mi[i * stride], 0, sizeof(MODE_INFO)); | 
| 32 } | 32 } | 
| 33 | 33 | 
| 34 void vp9_free_frame_buffers(VP9_COMMON *cm) { | 34 void vp9_free_frame_buffers(VP9_COMMON *cm) { | 
| 35   int i; | 35   int i; | 
| 36 | 36 | 
| 37   for (i = 0; i < NUM_YV12_BUFFERS; i++) | 37   for (i = 0; i < cm->fb_count; i++) | 
| 38     vp9_free_frame_buffer(&cm->yv12_fb[i]); | 38     vp9_free_frame_buffer(&cm->yv12_fb[i]); | 
| 39 | 39 | 
| 40   vp9_free_frame_buffer(&cm->post_proc_buffer); | 40   vp9_free_frame_buffer(&cm->post_proc_buffer); | 
| 41 | 41 | 
| 42   vpx_free(cm->mip); | 42   vpx_free(cm->mip); | 
| 43   vpx_free(cm->prev_mip); | 43   vpx_free(cm->prev_mip); | 
| 44   vpx_free(cm->last_frame_seg_map); | 44   vpx_free(cm->last_frame_seg_map); | 
| 45   vpx_free(cm->mi_grid_base); | 45   vpx_free(cm->mi_grid_base); | 
| 46   vpx_free(cm->prev_mi_grid_base); | 46   vpx_free(cm->prev_mi_grid_base); | 
| 47 | 47 | 
| (...skipping 20 matching lines...) Expand all  Loading... | 
| 68   cm->mi_grid_visible = cm->mi_grid_base + cm->mode_info_stride + 1; | 68   cm->mi_grid_visible = cm->mi_grid_base + cm->mode_info_stride + 1; | 
| 69   cm->prev_mi_grid_visible = cm->prev_mi_grid_base + cm->mode_info_stride + 1; | 69   cm->prev_mi_grid_visible = cm->prev_mi_grid_base + cm->mode_info_stride + 1; | 
| 70 | 70 | 
| 71   vpx_memset(cm->mip, 0, | 71   vpx_memset(cm->mip, 0, | 
| 72              cm->mode_info_stride * (cm->mi_rows + 1) * sizeof(MODE_INFO)); | 72              cm->mode_info_stride * (cm->mi_rows + 1) * sizeof(MODE_INFO)); | 
| 73 | 73 | 
| 74   vpx_memset(cm->mi_grid_base, 0, | 74   vpx_memset(cm->mi_grid_base, 0, | 
| 75              cm->mode_info_stride * (cm->mi_rows + 1) * | 75              cm->mode_info_stride * (cm->mi_rows + 1) * | 
| 76              sizeof(*cm->mi_grid_base)); | 76              sizeof(*cm->mi_grid_base)); | 
| 77 | 77 | 
| 78   vp9_update_mode_info_border(cm, cm->mip); |  | 
| 79   vp9_update_mode_info_border(cm, cm->prev_mip); | 78   vp9_update_mode_info_border(cm, cm->prev_mip); | 
| 80 } | 79 } | 
| 81 | 80 | 
|  | 81 int vp9_resize_frame_buffers(VP9_COMMON *cm, int width, int height) { | 
|  | 82   const int aligned_width = ALIGN_POWER_OF_TWO(width, MI_SIZE_LOG2); | 
|  | 83   const int aligned_height = ALIGN_POWER_OF_TWO(height, MI_SIZE_LOG2); | 
|  | 84   const int ss_x = cm->subsampling_x; | 
|  | 85   const int ss_y = cm->subsampling_y; | 
|  | 86   int mi_size; | 
|  | 87 | 
|  | 88   if (vp9_realloc_frame_buffer(&cm->post_proc_buffer, width, height, ss_x, ss_y, | 
|  | 89                                VP9BORDERINPIXELS, NULL, NULL, NULL) < 0) | 
|  | 90     goto fail; | 
|  | 91 | 
|  | 92   set_mb_mi(cm, aligned_width, aligned_height); | 
|  | 93 | 
|  | 94   // Allocation | 
|  | 95   mi_size = cm->mode_info_stride * (cm->mi_rows + MI_BLOCK_SIZE); | 
|  | 96 | 
|  | 97   vpx_free(cm->mip); | 
|  | 98   cm->mip = vpx_calloc(mi_size, sizeof(MODE_INFO)); | 
|  | 99   if (!cm->mip) | 
|  | 100     goto fail; | 
|  | 101 | 
|  | 102   vpx_free(cm->prev_mip); | 
|  | 103   cm->prev_mip = vpx_calloc(mi_size, sizeof(MODE_INFO)); | 
|  | 104   if (!cm->prev_mip) | 
|  | 105     goto fail; | 
|  | 106 | 
|  | 107   vpx_free(cm->mi_grid_base); | 
|  | 108   cm->mi_grid_base = vpx_calloc(mi_size, sizeof(*cm->mi_grid_base)); | 
|  | 109   if (!cm->mi_grid_base) | 
|  | 110     goto fail; | 
|  | 111 | 
|  | 112   vpx_free(cm->prev_mi_grid_base); | 
|  | 113   cm->prev_mi_grid_base = vpx_calloc(mi_size, sizeof(*cm->prev_mi_grid_base)); | 
|  | 114   if (!cm->prev_mi_grid_base) | 
|  | 115     goto fail; | 
|  | 116 | 
|  | 117   setup_mi(cm); | 
|  | 118 | 
|  | 119   // Create the segmentation map structure and set to 0. | 
|  | 120   vpx_free(cm->last_frame_seg_map); | 
|  | 121   cm->last_frame_seg_map = vpx_calloc(cm->mi_rows * cm->mi_cols, 1); | 
|  | 122   if (!cm->last_frame_seg_map) | 
|  | 123     goto fail; | 
|  | 124 | 
|  | 125   return 0; | 
|  | 126 | 
|  | 127  fail: | 
|  | 128   vp9_free_frame_buffers(cm); | 
|  | 129   return 1; | 
|  | 130 } | 
|  | 131 | 
| 82 int vp9_alloc_frame_buffers(VP9_COMMON *cm, int width, int height) { | 132 int vp9_alloc_frame_buffers(VP9_COMMON *cm, int width, int height) { | 
| 83   int i; | 133   int i; | 
| 84 | 134 | 
| 85   const int aligned_width = ALIGN_POWER_OF_TWO(width, MI_SIZE_LOG2); | 135   const int aligned_width = ALIGN_POWER_OF_TWO(width, MI_SIZE_LOG2); | 
| 86   const int aligned_height = ALIGN_POWER_OF_TWO(height, MI_SIZE_LOG2); | 136   const int aligned_height = ALIGN_POWER_OF_TWO(height, MI_SIZE_LOG2); | 
| 87   const int ss_x = cm->subsampling_x; | 137   const int ss_x = cm->subsampling_x; | 
| 88   const int ss_y = cm->subsampling_y; | 138   const int ss_y = cm->subsampling_y; | 
| 89   int mi_size; | 139   int mi_size; | 
| 90 | 140 | 
|  | 141   if (cm->fb_count == 0) { | 
|  | 142     cm->fb_count = FRAME_BUFFERS; | 
|  | 143     CHECK_MEM_ERROR(cm, cm->yv12_fb, | 
|  | 144                     vpx_calloc(cm->fb_count, sizeof(*cm->yv12_fb))); | 
|  | 145     CHECK_MEM_ERROR(cm, cm->fb_idx_ref_cnt, | 
|  | 146                     vpx_calloc(cm->fb_count, sizeof(*cm->fb_idx_ref_cnt))); | 
|  | 147     if (cm->fb_lru) { | 
|  | 148       CHECK_MEM_ERROR(cm, cm->fb_idx_ref_lru, | 
|  | 149                       vpx_calloc(cm->fb_count, sizeof(*cm->fb_idx_ref_lru))); | 
|  | 150     } | 
|  | 151   } | 
|  | 152 | 
| 91   vp9_free_frame_buffers(cm); | 153   vp9_free_frame_buffers(cm); | 
| 92 | 154 | 
| 93   for (i = 0; i < NUM_YV12_BUFFERS; i++) { | 155   for (i = 0; i < cm->fb_count; i++) { | 
| 94     cm->fb_idx_ref_cnt[i] = 0; | 156     cm->fb_idx_ref_cnt[i] = 0; | 
| 95     if (vp9_alloc_frame_buffer(&cm->yv12_fb[i], width, height, ss_x, ss_y, | 157     if (vp9_alloc_frame_buffer(&cm->yv12_fb[i], width, height, ss_x, ss_y, | 
| 96                                VP9BORDERINPIXELS) < 0) | 158                                VP9BORDERINPIXELS) < 0) | 
| 97       goto fail; | 159       goto fail; | 
| 98   } | 160   } | 
| 99 | 161 | 
| 100   cm->new_fb_idx = NUM_YV12_BUFFERS - 1; | 162   cm->new_fb_idx = cm->fb_count - 1; | 
| 101   cm->fb_idx_ref_cnt[cm->new_fb_idx] = 1; | 163   cm->fb_idx_ref_cnt[cm->new_fb_idx] = 1; | 
| 102 | 164 | 
| 103   for (i = 0; i < ALLOWED_REFS_PER_FRAME; i++) | 165   for (i = 0; i < REFS_PER_FRAME; i++) | 
| 104     cm->active_ref_idx[i] = i; | 166     cm->active_ref_idx[i] = i; | 
| 105 | 167 | 
| 106   for (i = 0; i < NUM_REF_FRAMES; i++) { | 168   for (i = 0; i < REF_FRAMES; i++) { | 
| 107     cm->ref_frame_map[i] = i; | 169     cm->ref_frame_map[i] = i; | 
| 108     cm->fb_idx_ref_cnt[i] = 1; | 170     cm->fb_idx_ref_cnt[i] = 1; | 
| 109   } | 171   } | 
| 110 | 172 | 
| 111   if (vp9_alloc_frame_buffer(&cm->post_proc_buffer, width, height, ss_x, ss_y, | 173   if (vp9_alloc_frame_buffer(&cm->post_proc_buffer, width, height, ss_x, ss_y, | 
| 112                              VP9BORDERINPIXELS) < 0) | 174                              VP9BORDERINPIXELS) < 0) | 
| 113     goto fail; | 175     goto fail; | 
| 114 | 176 | 
| 115   set_mb_mi(cm, aligned_width, aligned_height); | 177   set_mb_mi(cm, aligned_width, aligned_height); | 
| 116 | 178 | 
| (...skipping 25 matching lines...) Expand all  Loading... | 
| 142 | 204 | 
| 143   return 0; | 205   return 0; | 
| 144 | 206 | 
| 145  fail: | 207  fail: | 
| 146   vp9_free_frame_buffers(cm); | 208   vp9_free_frame_buffers(cm); | 
| 147   return 1; | 209   return 1; | 
| 148 } | 210 } | 
| 149 | 211 | 
| 150 void vp9_create_common(VP9_COMMON *cm) { | 212 void vp9_create_common(VP9_COMMON *cm) { | 
| 151   vp9_machine_specific_config(cm); | 213   vp9_machine_specific_config(cm); | 
| 152 |  | 
| 153   cm->tx_mode = ONLY_4X4; |  | 
| 154   cm->comp_pred_mode = HYBRID_PREDICTION; |  | 
| 155 } | 214 } | 
| 156 | 215 | 
| 157 void vp9_remove_common(VP9_COMMON *cm) { | 216 void vp9_remove_common(VP9_COMMON *cm) { | 
| 158   vp9_free_frame_buffers(cm); | 217   vp9_free_frame_buffers(cm); | 
|  | 218 | 
|  | 219   vpx_free(cm->yv12_fb); | 
|  | 220   vpx_free(cm->fb_idx_ref_cnt); | 
|  | 221   vpx_free(cm->fb_idx_ref_lru); | 
|  | 222 | 
|  | 223   cm->yv12_fb = NULL; | 
|  | 224   cm->fb_idx_ref_cnt = NULL; | 
|  | 225   cm->fb_idx_ref_lru = NULL; | 
| 159 } | 226 } | 
| 160 | 227 | 
| 161 void vp9_initialize_common() { | 228 void vp9_initialize_common() { | 
| 162   vp9_init_neighbors(); | 229   vp9_init_neighbors(); | 
| 163   vp9_coef_tree_initialize(); |  | 
| 164   vp9_entropy_mode_init(); |  | 
| 165   vp9_entropy_mv_init(); |  | 
| 166 } | 230 } | 
| 167 | 231 | 
| 168 void vp9_update_frame_size(VP9_COMMON *cm) { | 232 void vp9_update_frame_size(VP9_COMMON *cm) { | 
| 169   const int aligned_width = ALIGN_POWER_OF_TWO(cm->width, MI_SIZE_LOG2); | 233   const int aligned_width = ALIGN_POWER_OF_TWO(cm->width, MI_SIZE_LOG2); | 
| 170   const int aligned_height = ALIGN_POWER_OF_TWO(cm->height, MI_SIZE_LOG2); | 234   const int aligned_height = ALIGN_POWER_OF_TWO(cm->height, MI_SIZE_LOG2); | 
| 171 | 235 | 
| 172   set_mb_mi(cm, aligned_width, aligned_height); | 236   set_mb_mi(cm, aligned_width, aligned_height); | 
| 173   setup_mi(cm); | 237   setup_mi(cm); | 
| 174 | 238 | 
| 175   // Initialize the previous frame segment map to 0. | 239   // Initialize the previous frame segment map to 0. | 
| 176   if (cm->last_frame_seg_map) | 240   if (cm->last_frame_seg_map) | 
| 177     vpx_memset(cm->last_frame_seg_map, 0, cm->mi_rows * cm->mi_cols); | 241     vpx_memset(cm->last_frame_seg_map, 0, cm->mi_rows * cm->mi_cols); | 
| 178 } | 242 } | 
| OLD | NEW | 
|---|