| 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 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 } | 179 } |
| 180 | 180 |
| 181 // TODO(hkuang) do not extend 2*bs pixels for all modes. | 181 // TODO(hkuang) do not extend 2*bs pixels for all modes. |
| 182 // above | 182 // above |
| 183 if (up_available) { | 183 if (up_available) { |
| 184 const uint16_t *above_ref = ref - ref_stride; | 184 const uint16_t *above_ref = ref - ref_stride; |
| 185 if (xd->mb_to_right_edge < 0) { | 185 if (xd->mb_to_right_edge < 0) { |
| 186 /* slower path if the block needs border extension */ | 186 /* slower path if the block needs border extension */ |
| 187 if (x0 + 2 * bs <= frame_width) { | 187 if (x0 + 2 * bs <= frame_width) { |
| 188 if (right_available && bs == 4) { | 188 if (right_available && bs == 4) { |
| 189 memcpy(above_row, above_ref, 2 * bs * sizeof(uint16_t)); | 189 memcpy(above_row, above_ref, 2 * bs * sizeof(above_row[0])); |
| 190 } else { | 190 } else { |
| 191 memcpy(above_row, above_ref, bs * sizeof(uint16_t)); | 191 memcpy(above_row, above_ref, bs * sizeof(above_row[0])); |
| 192 vpx_memset16(above_row + bs, above_row[bs - 1], bs); | 192 vpx_memset16(above_row + bs, above_row[bs - 1], bs); |
| 193 } | 193 } |
| 194 } else if (x0 + bs <= frame_width) { | 194 } else if (x0 + bs <= frame_width) { |
| 195 const int r = frame_width - x0; | 195 const int r = frame_width - x0; |
| 196 if (right_available && bs == 4) { | 196 if (right_available && bs == 4) { |
| 197 memcpy(above_row, above_ref, r * sizeof(uint16_t)); | 197 memcpy(above_row, above_ref, r * sizeof(above_row[0])); |
| 198 vpx_memset16(above_row + r, above_row[r - 1], | 198 vpx_memset16(above_row + r, above_row[r - 1], |
| 199 x0 + 2 * bs - frame_width); | 199 x0 + 2 * bs - frame_width); |
| 200 } else { | 200 } else { |
| 201 memcpy(above_row, above_ref, bs * sizeof(uint16_t)); | 201 memcpy(above_row, above_ref, bs * sizeof(above_row[0])); |
| 202 vpx_memset16(above_row + bs, above_row[bs - 1], bs); | 202 vpx_memset16(above_row + bs, above_row[bs - 1], bs); |
| 203 } | 203 } |
| 204 } else if (x0 <= frame_width) { | 204 } else if (x0 <= frame_width) { |
| 205 const int r = frame_width - x0; | 205 const int r = frame_width - x0; |
| 206 memcpy(above_row, above_ref, r * sizeof(uint16_t)); | 206 memcpy(above_row, above_ref, r * sizeof(above_row[0])); |
| 207 vpx_memset16(above_row + r, above_row[r - 1], | 207 vpx_memset16(above_row + r, above_row[r - 1], |
| 208 x0 + 2 * bs - frame_width); | 208 x0 + 2 * bs - frame_width); |
| 209 } | 209 } |
| 210 // TODO(Peter) this value should probably change for high bitdepth | 210 // TODO(Peter) this value should probably change for high bitdepth |
| 211 above_row[-1] = left_available ? above_ref[-1] : (base+1); | 211 above_row[-1] = left_available ? above_ref[-1] : (base+1); |
| 212 } else { | 212 } else { |
| 213 /* faster path if the block does not need extension */ | 213 /* faster path if the block does not need extension */ |
| 214 if (bs == 4 && right_available && left_available) { | 214 if (bs == 4 && right_available && left_available) { |
| 215 const_above_row = above_ref; | 215 const_above_row = above_ref; |
| 216 } else { | 216 } else { |
| 217 memcpy(above_row, above_ref, bs * sizeof(uint16_t)); | 217 memcpy(above_row, above_ref, bs * sizeof(above_row[0])); |
| 218 if (bs == 4 && right_available) | 218 if (bs == 4 && right_available) |
| 219 memcpy(above_row + bs, above_ref + bs, bs * sizeof(uint16_t)); | 219 memcpy(above_row + bs, above_ref + bs, bs * sizeof(above_row[0])); |
| 220 else | 220 else |
| 221 vpx_memset16(above_row + bs, above_row[bs - 1], bs); | 221 vpx_memset16(above_row + bs, above_row[bs - 1], bs); |
| 222 // TODO(Peter): this value should probably change for high bitdepth | 222 // TODO(Peter): this value should probably change for high bitdepth |
| 223 above_row[-1] = left_available ? above_ref[-1] : (base+1); | 223 above_row[-1] = left_available ? above_ref[-1] : (base+1); |
| 224 } | 224 } |
| 225 } | 225 } |
| 226 } else { | 226 } else { |
| 227 vpx_memset16(above_row, base - 1, bs * 2); | 227 vpx_memset16(above_row, base - 1, bs * 2); |
| 228 // TODO(Peter): this value should probably change for high bitdepth | 228 // TODO(Peter): this value should probably change for high bitdepth |
| 229 above_row[-1] = base - 1; | 229 above_row[-1] = base - 1; |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 return; | 406 return; |
| 407 } | 407 } |
| 408 #endif | 408 #endif |
| 409 build_intra_predictors(xd, ref, ref_stride, dst, dst_stride, mode, tx_size, | 409 build_intra_predictors(xd, ref, ref_stride, dst, dst_stride, mode, tx_size, |
| 410 have_top, have_left, have_right, x, y, plane); | 410 have_top, have_left, have_right, x, y, plane); |
| 411 } | 411 } |
| 412 | 412 |
| 413 void vp9_init_intra_predictors(void) { | 413 void vp9_init_intra_predictors(void) { |
| 414 once(vp9_init_intra_predictors_internal); | 414 once(vp9_init_intra_predictors_internal); |
| 415 } | 415 } |
| OLD | NEW |