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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 } | 80 } |
81 | 81 |
82 static TX_SIZE read_tx_size(VP9_COMMON *cm, MACROBLOCKD *xd, | 82 static TX_SIZE read_tx_size(VP9_COMMON *cm, MACROBLOCKD *xd, |
83 int allow_select, vpx_reader *r) { | 83 int allow_select, vpx_reader *r) { |
84 TX_MODE tx_mode = cm->tx_mode; | 84 TX_MODE tx_mode = cm->tx_mode; |
85 BLOCK_SIZE bsize = xd->mi[0]->mbmi.sb_type; | 85 BLOCK_SIZE bsize = xd->mi[0]->mbmi.sb_type; |
86 const TX_SIZE max_tx_size = max_txsize_lookup[bsize]; | 86 const TX_SIZE max_tx_size = max_txsize_lookup[bsize]; |
87 if (allow_select && tx_mode == TX_MODE_SELECT && bsize >= BLOCK_8X8) | 87 if (allow_select && tx_mode == TX_MODE_SELECT && bsize >= BLOCK_8X8) |
88 return read_selected_tx_size(cm, xd, max_tx_size, r); | 88 return read_selected_tx_size(cm, xd, max_tx_size, r); |
89 else | 89 else |
90 return MIN(max_tx_size, tx_mode_to_biggest_tx_size[tx_mode]); | 90 return VPXMIN(max_tx_size, tx_mode_to_biggest_tx_size[tx_mode]); |
91 } | 91 } |
92 | 92 |
93 static int dec_get_segment_id(const VP9_COMMON *cm, const uint8_t *segment_ids, | 93 static int dec_get_segment_id(const VP9_COMMON *cm, const uint8_t *segment_ids, |
94 int mi_offset, int x_mis, int y_mis) { | 94 int mi_offset, int x_mis, int y_mis) { |
95 int x, y, segment_id = INT_MAX; | 95 int x, y, segment_id = INT_MAX; |
96 | 96 |
97 for (y = 0; y < y_mis; y++) | 97 for (y = 0; y < y_mis; y++) |
98 for (x = 0; x < x_mis; x++) | 98 for (x = 0; x < x_mis; x++) |
99 segment_id = MIN(segment_id, | 99 segment_id = |
100 segment_ids[mi_offset + y * cm->mi_cols + x]); | 100 VPXMIN(segment_id, segment_ids[mi_offset + y * cm->mi_cols + x]); |
101 | 101 |
102 assert(segment_id >= 0 && segment_id < MAX_SEGMENTS); | 102 assert(segment_id >= 0 && segment_id < MAX_SEGMENTS); |
103 return segment_id; | 103 return segment_id; |
104 } | 104 } |
105 | 105 |
106 static void set_segment_id(VP9_COMMON *cm, int mi_offset, | 106 static void set_segment_id(VP9_COMMON *cm, int mi_offset, |
107 int x_mis, int y_mis, int segment_id) { | 107 int x_mis, int y_mis, int segment_id) { |
108 int x, y; | 108 int x, y; |
109 | 109 |
110 assert(segment_id >= 0 && segment_id < MAX_SEGMENTS); | 110 assert(segment_id >= 0 && segment_id < MAX_SEGMENTS); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 static int read_inter_segment_id(VP9_COMMON *const cm, MACROBLOCKD *const xd, | 149 static int read_inter_segment_id(VP9_COMMON *const cm, MACROBLOCKD *const xd, |
150 int mi_row, int mi_col, vpx_reader *r) { | 150 int mi_row, int mi_col, vpx_reader *r) { |
151 struct segmentation *const seg = &cm->seg; | 151 struct segmentation *const seg = &cm->seg; |
152 MB_MODE_INFO *const mbmi = &xd->mi[0]->mbmi; | 152 MB_MODE_INFO *const mbmi = &xd->mi[0]->mbmi; |
153 int predicted_segment_id, segment_id; | 153 int predicted_segment_id, segment_id; |
154 const int mi_offset = mi_row * cm->mi_cols + mi_col; | 154 const int mi_offset = mi_row * cm->mi_cols + mi_col; |
155 const int bw = xd->plane[0].n4_w >> 1; | 155 const int bw = xd->plane[0].n4_w >> 1; |
156 const int bh = xd->plane[0].n4_h >> 1; | 156 const int bh = xd->plane[0].n4_h >> 1; |
157 | 157 |
158 // TODO(slavarnway): move x_mis, y_mis into xd ????? | 158 // TODO(slavarnway): move x_mis, y_mis into xd ????? |
159 const int x_mis = MIN(cm->mi_cols - mi_col, bw); | 159 const int x_mis = VPXMIN(cm->mi_cols - mi_col, bw); |
160 const int y_mis = MIN(cm->mi_rows - mi_row, bh); | 160 const int y_mis = VPXMIN(cm->mi_rows - mi_row, bh); |
161 | 161 |
162 if (!seg->enabled) | 162 if (!seg->enabled) |
163 return 0; // Default for disabled segmentation | 163 return 0; // Default for disabled segmentation |
164 | 164 |
165 predicted_segment_id = cm->last_frame_seg_map ? | 165 predicted_segment_id = cm->last_frame_seg_map ? |
166 dec_get_segment_id(cm, cm->last_frame_seg_map, mi_offset, x_mis, y_mis) : | 166 dec_get_segment_id(cm, cm->last_frame_seg_map, mi_offset, x_mis, y_mis) : |
167 0; | 167 0; |
168 | 168 |
169 if (!seg->update_map) { | 169 if (!seg->update_map) { |
170 copy_segment_id(cm, cm->last_frame_seg_map, cm->current_frame_seg_map, | 170 copy_segment_id(cm, cm->last_frame_seg_map, cm->current_frame_seg_map, |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 MB_MODE_INFO *const mbmi = &mi->mbmi; | 205 MB_MODE_INFO *const mbmi = &mi->mbmi; |
206 const MODE_INFO *above_mi = xd->above_mi; | 206 const MODE_INFO *above_mi = xd->above_mi; |
207 const MODE_INFO *left_mi = xd->left_mi; | 207 const MODE_INFO *left_mi = xd->left_mi; |
208 const BLOCK_SIZE bsize = mbmi->sb_type; | 208 const BLOCK_SIZE bsize = mbmi->sb_type; |
209 int i; | 209 int i; |
210 const int mi_offset = mi_row * cm->mi_cols + mi_col; | 210 const int mi_offset = mi_row * cm->mi_cols + mi_col; |
211 const int bw = xd->plane[0].n4_w >> 1; | 211 const int bw = xd->plane[0].n4_w >> 1; |
212 const int bh = xd->plane[0].n4_h >> 1; | 212 const int bh = xd->plane[0].n4_h >> 1; |
213 | 213 |
214 // TODO(slavarnway): move x_mis, y_mis into xd ????? | 214 // TODO(slavarnway): move x_mis, y_mis into xd ????? |
215 const int x_mis = MIN(cm->mi_cols - mi_col, bw); | 215 const int x_mis = VPXMIN(cm->mi_cols - mi_col, bw); |
216 const int y_mis = MIN(cm->mi_rows - mi_row, bh); | 216 const int y_mis = VPXMIN(cm->mi_rows - mi_row, bh); |
217 | 217 |
218 mbmi->segment_id = read_intra_segment_id(cm, mi_offset, x_mis, y_mis, r); | 218 mbmi->segment_id = read_intra_segment_id(cm, mi_offset, x_mis, y_mis, r); |
219 mbmi->skip = read_skip(cm, xd, mbmi->segment_id, r); | 219 mbmi->skip = read_skip(cm, xd, mbmi->segment_id, r); |
220 mbmi->tx_size = read_tx_size(cm, xd, 1, r); | 220 mbmi->tx_size = read_tx_size(cm, xd, 1, r); |
221 mbmi->ref_frame[0] = INTRA_FRAME; | 221 mbmi->ref_frame[0] = INTRA_FRAME; |
222 mbmi->ref_frame[1] = NONE; | 222 mbmi->ref_frame[1] = NONE; |
223 | 223 |
224 switch (bsize) { | 224 switch (bsize) { |
225 case BLOCK_4X4: | 225 case BLOCK_4X4: |
226 for (i = 0; i < 4; ++i) | 226 for (i = 0; i < 4; ++i) |
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 &nearest_sub8x8[ref], | 553 &nearest_sub8x8[ref], |
554 &near_sub8x8[ref], | 554 &near_sub8x8[ref], |
555 dummy_mode_ctx); | 555 dummy_mode_ctx); |
556 } | 556 } |
557 | 557 |
558 if (!assign_mv(cm, xd, b_mode, block, nearestmv, | 558 if (!assign_mv(cm, xd, b_mode, block, nearestmv, |
559 nearest_sub8x8, near_sub8x8, | 559 nearest_sub8x8, near_sub8x8, |
560 is_compound, allow_hp, r)) { | 560 is_compound, allow_hp, r)) { |
561 xd->corrupted |= 1; | 561 xd->corrupted |= 1; |
562 break; | 562 break; |
563 }; | 563 } |
564 | 564 |
565 mi->bmi[j].as_mv[0].as_int = block[0].as_int; | 565 mi->bmi[j].as_mv[0].as_int = block[0].as_int; |
566 if (is_compound) | 566 if (is_compound) |
567 mi->bmi[j].as_mv[1].as_int = block[1].as_int; | 567 mi->bmi[j].as_mv[1].as_int = block[1].as_int; |
568 | 568 |
569 if (num_4x4_h == 2) | 569 if (num_4x4_h == 2) |
570 mi->bmi[j + 2] = mi->bmi[j]; | 570 mi->bmi[j + 2] = mi->bmi[j]; |
571 if (num_4x4_w == 2) | 571 if (num_4x4_w == 2) |
572 mi->bmi[j + 1] = mi->bmi[j]; | 572 mi->bmi[j + 1] = mi->bmi[j]; |
573 } | 573 } |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 for (w = 0; w < x_mis; ++w) { | 622 for (w = 0; w < x_mis; ++w) { |
623 MV_REF *const mv = frame_mv + w; | 623 MV_REF *const mv = frame_mv + w; |
624 mv->ref_frame[0] = mi->mbmi.ref_frame[0]; | 624 mv->ref_frame[0] = mi->mbmi.ref_frame[0]; |
625 mv->ref_frame[1] = mi->mbmi.ref_frame[1]; | 625 mv->ref_frame[1] = mi->mbmi.ref_frame[1]; |
626 mv->mv[0].as_int = mi->mbmi.mv[0].as_int; | 626 mv->mv[0].as_int = mi->mbmi.mv[0].as_int; |
627 mv->mv[1].as_int = mi->mbmi.mv[1].as_int; | 627 mv->mv[1].as_int = mi->mbmi.mv[1].as_int; |
628 } | 628 } |
629 } | 629 } |
630 } | 630 } |
631 } | 631 } |
OLD | NEW |