| 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 |
| 11 #include <math.h> | 11 #include <math.h> |
| 12 | 12 |
| 13 #include "./vp9_rtcd.h" | 13 #include "./vp9_rtcd.h" |
| 14 #include "./vpx_dsp_rtcd.h" | 14 #include "./vpx_dsp_rtcd.h" |
| 15 #include "vp9/common/vp9_blockd.h" | 15 #include "vp9/common/vp9_blockd.h" |
| 16 #include "vp9/common/vp9_idct.h" | 16 #include "vp9/common/vp9_idct.h" |
| 17 #include "vp9/common/vp9_systemdependent.h" | |
| 18 #include "vpx_dsp/inv_txfm.h" | 17 #include "vpx_dsp/inv_txfm.h" |
| 19 #include "vpx_ports/mem.h" | 18 #include "vpx_ports/mem.h" |
| 20 | 19 |
| 21 void vp9_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride, | 20 void vp9_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride, |
| 22 int tx_type) { | 21 int tx_type) { |
| 23 const transform_2d IHT_4[] = { | 22 const transform_2d IHT_4[] = { |
| 24 { idct4_c, idct4_c }, // DCT_DCT = 0 | 23 { idct4_c, idct4_c }, // DCT_DCT = 0 |
| 25 { iadst4_c, idct4_c }, // ADST_DCT = 1 | 24 { iadst4_c, idct4_c }, // ADST_DCT = 1 |
| 26 { idct4_c, iadst4_c }, // DCT_ADST = 2 | 25 { idct4_c, iadst4_c }, // DCT_ADST = 2 |
| 27 { iadst4_c, iadst4_c } // ADST_ADST = 3 | 26 { iadst4_c, iadst4_c } // ADST_ADST = 3 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 dest[j * stride + i] = clip_pixel_add(dest[j * stride + i], | 115 dest[j * stride + i] = clip_pixel_add(dest[j * stride + i], |
| 117 ROUND_POWER_OF_TWO(temp_out[j], 6)); | 116 ROUND_POWER_OF_TWO(temp_out[j], 6)); |
| 118 } | 117 } |
| 119 } | 118 } |
| 120 } | 119 } |
| 121 | 120 |
| 122 // idct | 121 // idct |
| 123 void vp9_idct4x4_add(const tran_low_t *input, uint8_t *dest, int stride, | 122 void vp9_idct4x4_add(const tran_low_t *input, uint8_t *dest, int stride, |
| 124 int eob) { | 123 int eob) { |
| 125 if (eob > 1) | 124 if (eob > 1) |
| 126 vp9_idct4x4_16_add(input, dest, stride); | 125 vpx_idct4x4_16_add(input, dest, stride); |
| 127 else | 126 else |
| 128 vp9_idct4x4_1_add(input, dest, stride); | 127 vpx_idct4x4_1_add(input, dest, stride); |
| 129 } | 128 } |
| 130 | 129 |
| 131 | 130 |
| 132 void vp9_iwht4x4_add(const tran_low_t *input, uint8_t *dest, int stride, | 131 void vp9_iwht4x4_add(const tran_low_t *input, uint8_t *dest, int stride, |
| 133 int eob) { | 132 int eob) { |
| 134 if (eob > 1) | 133 if (eob > 1) |
| 135 vp9_iwht4x4_16_add(input, dest, stride); | 134 vpx_iwht4x4_16_add(input, dest, stride); |
| 136 else | 135 else |
| 137 vp9_iwht4x4_1_add(input, dest, stride); | 136 vpx_iwht4x4_1_add(input, dest, stride); |
| 138 } | 137 } |
| 139 | 138 |
| 140 void vp9_idct8x8_add(const tran_low_t *input, uint8_t *dest, int stride, | 139 void vp9_idct8x8_add(const tran_low_t *input, uint8_t *dest, int stride, |
| 141 int eob) { | 140 int eob) { |
| 142 // If dc is 1, then input[0] is the reconstructed value, do not need | 141 // If dc is 1, then input[0] is the reconstructed value, do not need |
| 143 // dequantization. Also, when dc is 1, dc is counted in eobs, namely eobs >=1. | 142 // dequantization. Also, when dc is 1, dc is counted in eobs, namely eobs >=1. |
| 144 | 143 |
| 145 // The calculation can be simplified if there are not many non-zero dct | 144 // The calculation can be simplified if there are not many non-zero dct |
| 146 // coefficients. Use eobs to decide what to do. | 145 // coefficients. Use eobs to decide what to do. |
| 147 // TODO(yunqingwang): "eobs = 1" case is also handled in vp9_short_idct8x8_c. | 146 // TODO(yunqingwang): "eobs = 1" case is also handled in vp9_short_idct8x8_c. |
| 148 // Combine that with code here. | 147 // Combine that with code here. |
| 149 if (eob == 1) | 148 if (eob == 1) |
| 150 // DC only DCT coefficient | 149 // DC only DCT coefficient |
| 151 vp9_idct8x8_1_add(input, dest, stride); | 150 vpx_idct8x8_1_add(input, dest, stride); |
| 152 else if (eob <= 12) | 151 else if (eob <= 12) |
| 153 vp9_idct8x8_12_add(input, dest, stride); | 152 vpx_idct8x8_12_add(input, dest, stride); |
| 154 else | 153 else |
| 155 vp9_idct8x8_64_add(input, dest, stride); | 154 vpx_idct8x8_64_add(input, dest, stride); |
| 156 } | 155 } |
| 157 | 156 |
| 158 void vp9_idct16x16_add(const tran_low_t *input, uint8_t *dest, int stride, | 157 void vp9_idct16x16_add(const tran_low_t *input, uint8_t *dest, int stride, |
| 159 int eob) { | 158 int eob) { |
| 160 /* The calculation can be simplified if there are not many non-zero dct | 159 /* The calculation can be simplified if there are not many non-zero dct |
| 161 * coefficients. Use eobs to separate different cases. */ | 160 * coefficients. Use eobs to separate different cases. */ |
| 162 if (eob == 1) | 161 if (eob == 1) |
| 163 /* DC only DCT coefficient. */ | 162 /* DC only DCT coefficient. */ |
| 164 vp9_idct16x16_1_add(input, dest, stride); | 163 vpx_idct16x16_1_add(input, dest, stride); |
| 165 else if (eob <= 10) | 164 else if (eob <= 10) |
| 166 vp9_idct16x16_10_add(input, dest, stride); | 165 vpx_idct16x16_10_add(input, dest, stride); |
| 167 else | 166 else |
| 168 vp9_idct16x16_256_add(input, dest, stride); | 167 vpx_idct16x16_256_add(input, dest, stride); |
| 169 } | 168 } |
| 170 | 169 |
| 171 void vp9_idct32x32_add(const tran_low_t *input, uint8_t *dest, int stride, | 170 void vp9_idct32x32_add(const tran_low_t *input, uint8_t *dest, int stride, |
| 172 int eob) { | 171 int eob) { |
| 173 if (eob == 1) | 172 if (eob == 1) |
| 174 vp9_idct32x32_1_add(input, dest, stride); | 173 vpx_idct32x32_1_add(input, dest, stride); |
| 175 else if (eob <= 34) | 174 else if (eob <= 34) |
| 176 // non-zero coeff only in upper-left 8x8 | 175 // non-zero coeff only in upper-left 8x8 |
| 177 vp9_idct32x32_34_add(input, dest, stride); | 176 vpx_idct32x32_34_add(input, dest, stride); |
| 178 else | 177 else |
| 179 vp9_idct32x32_1024_add(input, dest, stride); | 178 vpx_idct32x32_1024_add(input, dest, stride); |
| 180 } | 179 } |
| 181 | 180 |
| 182 // iht | 181 // iht |
| 183 void vp9_iht4x4_add(TX_TYPE tx_type, const tran_low_t *input, uint8_t *dest, | 182 void vp9_iht4x4_add(TX_TYPE tx_type, const tran_low_t *input, uint8_t *dest, |
| 184 int stride, int eob) { | 183 int stride, int eob) { |
| 185 if (tx_type == DCT_DCT) | 184 if (tx_type == DCT_DCT) |
| 186 vp9_idct4x4_add(input, dest, stride, eob); | 185 vp9_idct4x4_add(input, dest, stride, eob); |
| 187 else | 186 else |
| 188 vp9_iht4x4_16_add(input, dest, stride, tx_type); | 187 vp9_iht4x4_16_add(input, dest, stride, tx_type); |
| 189 } | 188 } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 203 vp9_idct16x16_add(input, dest, stride, eob); | 202 vp9_idct16x16_add(input, dest, stride, eob); |
| 204 } else { | 203 } else { |
| 205 vp9_iht16x16_256_add(input, dest, stride, tx_type); | 204 vp9_iht16x16_256_add(input, dest, stride, tx_type); |
| 206 } | 205 } |
| 207 } | 206 } |
| 208 | 207 |
| 209 #if CONFIG_VP9_HIGHBITDEPTH | 208 #if CONFIG_VP9_HIGHBITDEPTH |
| 210 void vp9_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest8, | 209 void vp9_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest8, |
| 211 int stride, int tx_type, int bd) { | 210 int stride, int tx_type, int bd) { |
| 212 const highbd_transform_2d IHT_4[] = { | 211 const highbd_transform_2d IHT_4[] = { |
| 213 { vp9_highbd_idct4_c, vp9_highbd_idct4_c }, // DCT_DCT = 0 | 212 { vpx_highbd_idct4_c, vpx_highbd_idct4_c }, // DCT_DCT = 0 |
| 214 { highbd_iadst4_c, vp9_highbd_idct4_c }, // ADST_DCT = 1 | 213 { vpx_highbd_iadst4_c, vpx_highbd_idct4_c }, // ADST_DCT = 1 |
| 215 { vp9_highbd_idct4_c, highbd_iadst4_c }, // DCT_ADST = 2 | 214 { vpx_highbd_idct4_c, vpx_highbd_iadst4_c }, // DCT_ADST = 2 |
| 216 { highbd_iadst4_c, highbd_iadst4_c } // ADST_ADST = 3 | 215 { vpx_highbd_iadst4_c, vpx_highbd_iadst4_c } // ADST_ADST = 3 |
| 217 }; | 216 }; |
| 218 uint16_t *dest = CONVERT_TO_SHORTPTR(dest8); | 217 uint16_t *dest = CONVERT_TO_SHORTPTR(dest8); |
| 219 | 218 |
| 220 int i, j; | 219 int i, j; |
| 221 tran_low_t out[4 * 4]; | 220 tran_low_t out[4 * 4]; |
| 222 tran_low_t *outptr = out; | 221 tran_low_t *outptr = out; |
| 223 tran_low_t temp_in[4], temp_out[4]; | 222 tran_low_t temp_in[4], temp_out[4]; |
| 224 | 223 |
| 225 // Inverse transform row vectors. | 224 // Inverse transform row vectors. |
| 226 for (i = 0; i < 4; ++i) { | 225 for (i = 0; i < 4; ++i) { |
| 227 IHT_4[tx_type].rows(input, outptr, bd); | 226 IHT_4[tx_type].rows(input, outptr, bd); |
| 228 input += 4; | 227 input += 4; |
| 229 outptr += 4; | 228 outptr += 4; |
| 230 } | 229 } |
| 231 | 230 |
| 232 // Inverse transform column vectors. | 231 // Inverse transform column vectors. |
| 233 for (i = 0; i < 4; ++i) { | 232 for (i = 0; i < 4; ++i) { |
| 234 for (j = 0; j < 4; ++j) | 233 for (j = 0; j < 4; ++j) |
| 235 temp_in[j] = out[j * 4 + i]; | 234 temp_in[j] = out[j * 4 + i]; |
| 236 IHT_4[tx_type].cols(temp_in, temp_out, bd); | 235 IHT_4[tx_type].cols(temp_in, temp_out, bd); |
| 237 for (j = 0; j < 4; ++j) { | 236 for (j = 0; j < 4; ++j) { |
| 238 dest[j * stride + i] = highbd_clip_pixel_add( | 237 dest[j * stride + i] = highbd_clip_pixel_add( |
| 239 dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 4), bd); | 238 dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 4), bd); |
| 240 } | 239 } |
| 241 } | 240 } |
| 242 } | 241 } |
| 243 | 242 |
| 244 static const highbd_transform_2d HIGH_IHT_8[] = { | 243 static const highbd_transform_2d HIGH_IHT_8[] = { |
| 245 { vp9_highbd_idct8_c, vp9_highbd_idct8_c }, // DCT_DCT = 0 | 244 { vpx_highbd_idct8_c, vpx_highbd_idct8_c }, // DCT_DCT = 0 |
| 246 { highbd_iadst8_c, vp9_highbd_idct8_c }, // ADST_DCT = 1 | 245 { vpx_highbd_iadst8_c, vpx_highbd_idct8_c }, // ADST_DCT = 1 |
| 247 { vp9_highbd_idct8_c, highbd_iadst8_c }, // DCT_ADST = 2 | 246 { vpx_highbd_idct8_c, vpx_highbd_iadst8_c }, // DCT_ADST = 2 |
| 248 { highbd_iadst8_c, highbd_iadst8_c } // ADST_ADST = 3 | 247 { vpx_highbd_iadst8_c, vpx_highbd_iadst8_c } // ADST_ADST = 3 |
| 249 }; | 248 }; |
| 250 | 249 |
| 251 void vp9_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest8, | 250 void vp9_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest8, |
| 252 int stride, int tx_type, int bd) { | 251 int stride, int tx_type, int bd) { |
| 253 int i, j; | 252 int i, j; |
| 254 tran_low_t out[8 * 8]; | 253 tran_low_t out[8 * 8]; |
| 255 tran_low_t *outptr = out; | 254 tran_low_t *outptr = out; |
| 256 tran_low_t temp_in[8], temp_out[8]; | 255 tran_low_t temp_in[8], temp_out[8]; |
| 257 const highbd_transform_2d ht = HIGH_IHT_8[tx_type]; | 256 const highbd_transform_2d ht = HIGH_IHT_8[tx_type]; |
| 258 uint16_t *dest = CONVERT_TO_SHORTPTR(dest8); | 257 uint16_t *dest = CONVERT_TO_SHORTPTR(dest8); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 270 temp_in[j] = out[j * 8 + i]; | 269 temp_in[j] = out[j * 8 + i]; |
| 271 ht.cols(temp_in, temp_out, bd); | 270 ht.cols(temp_in, temp_out, bd); |
| 272 for (j = 0; j < 8; ++j) { | 271 for (j = 0; j < 8; ++j) { |
| 273 dest[j * stride + i] = highbd_clip_pixel_add( | 272 dest[j * stride + i] = highbd_clip_pixel_add( |
| 274 dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 5), bd); | 273 dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 5), bd); |
| 275 } | 274 } |
| 276 } | 275 } |
| 277 } | 276 } |
| 278 | 277 |
| 279 static const highbd_transform_2d HIGH_IHT_16[] = { | 278 static const highbd_transform_2d HIGH_IHT_16[] = { |
| 280 { vp9_highbd_idct16_c, vp9_highbd_idct16_c }, // DCT_DCT = 0 | 279 { vpx_highbd_idct16_c, vpx_highbd_idct16_c }, // DCT_DCT = 0 |
| 281 { highbd_iadst16_c, vp9_highbd_idct16_c }, // ADST_DCT = 1 | 280 { vpx_highbd_iadst16_c, vpx_highbd_idct16_c }, // ADST_DCT = 1 |
| 282 { vp9_highbd_idct16_c, highbd_iadst16_c }, // DCT_ADST = 2 | 281 { vpx_highbd_idct16_c, vpx_highbd_iadst16_c }, // DCT_ADST = 2 |
| 283 { highbd_iadst16_c, highbd_iadst16_c } // ADST_ADST = 3 | 282 { vpx_highbd_iadst16_c, vpx_highbd_iadst16_c } // ADST_ADST = 3 |
| 284 }; | 283 }; |
| 285 | 284 |
| 286 void vp9_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *dest8, | 285 void vp9_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *dest8, |
| 287 int stride, int tx_type, int bd) { | 286 int stride, int tx_type, int bd) { |
| 288 int i, j; | 287 int i, j; |
| 289 tran_low_t out[16 * 16]; | 288 tran_low_t out[16 * 16]; |
| 290 tran_low_t *outptr = out; | 289 tran_low_t *outptr = out; |
| 291 tran_low_t temp_in[16], temp_out[16]; | 290 tran_low_t temp_in[16], temp_out[16]; |
| 292 const highbd_transform_2d ht = HIGH_IHT_16[tx_type]; | 291 const highbd_transform_2d ht = HIGH_IHT_16[tx_type]; |
| 293 uint16_t *dest = CONVERT_TO_SHORTPTR(dest8); | 292 uint16_t *dest = CONVERT_TO_SHORTPTR(dest8); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 308 dest[j * stride + i] = highbd_clip_pixel_add( | 307 dest[j * stride + i] = highbd_clip_pixel_add( |
| 309 dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 6), bd); | 308 dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 6), bd); |
| 310 } | 309 } |
| 311 } | 310 } |
| 312 } | 311 } |
| 313 | 312 |
| 314 // idct | 313 // idct |
| 315 void vp9_highbd_idct4x4_add(const tran_low_t *input, uint8_t *dest, int stride, | 314 void vp9_highbd_idct4x4_add(const tran_low_t *input, uint8_t *dest, int stride, |
| 316 int eob, int bd) { | 315 int eob, int bd) { |
| 317 if (eob > 1) | 316 if (eob > 1) |
| 318 vp9_highbd_idct4x4_16_add(input, dest, stride, bd); | 317 vpx_highbd_idct4x4_16_add(input, dest, stride, bd); |
| 319 else | 318 else |
| 320 vp9_highbd_idct4x4_1_add(input, dest, stride, bd); | 319 vpx_highbd_idct4x4_1_add(input, dest, stride, bd); |
| 321 } | 320 } |
| 322 | 321 |
| 323 | 322 |
| 324 void vp9_highbd_iwht4x4_add(const tran_low_t *input, uint8_t *dest, int stride, | 323 void vp9_highbd_iwht4x4_add(const tran_low_t *input, uint8_t *dest, int stride, |
| 325 int eob, int bd) { | 324 int eob, int bd) { |
| 326 if (eob > 1) | 325 if (eob > 1) |
| 327 vp9_highbd_iwht4x4_16_add(input, dest, stride, bd); | 326 vpx_highbd_iwht4x4_16_add(input, dest, stride, bd); |
| 328 else | 327 else |
| 329 vp9_highbd_iwht4x4_1_add(input, dest, stride, bd); | 328 vpx_highbd_iwht4x4_1_add(input, dest, stride, bd); |
| 330 } | 329 } |
| 331 | 330 |
| 332 void vp9_highbd_idct8x8_add(const tran_low_t *input, uint8_t *dest, int stride, | 331 void vp9_highbd_idct8x8_add(const tran_low_t *input, uint8_t *dest, int stride, |
| 333 int eob, int bd) { | 332 int eob, int bd) { |
| 334 // If dc is 1, then input[0] is the reconstructed value, do not need | 333 // If dc is 1, then input[0] is the reconstructed value, do not need |
| 335 // dequantization. Also, when dc is 1, dc is counted in eobs, namely eobs >=1. | 334 // dequantization. Also, when dc is 1, dc is counted in eobs, namely eobs >=1. |
| 336 | 335 |
| 337 // The calculation can be simplified if there are not many non-zero dct | 336 // The calculation can be simplified if there are not many non-zero dct |
| 338 // coefficients. Use eobs to decide what to do. | 337 // coefficients. Use eobs to decide what to do. |
| 339 // TODO(yunqingwang): "eobs = 1" case is also handled in vp9_short_idct8x8_c. | 338 // TODO(yunqingwang): "eobs = 1" case is also handled in vp9_short_idct8x8_c. |
| 340 // Combine that with code here. | 339 // Combine that with code here. |
| 341 // DC only DCT coefficient | 340 // DC only DCT coefficient |
| 342 if (eob == 1) { | 341 if (eob == 1) { |
| 343 vp9_highbd_idct8x8_1_add(input, dest, stride, bd); | 342 vpx_highbd_idct8x8_1_add(input, dest, stride, bd); |
| 344 } else if (eob <= 10) { | 343 } else if (eob <= 10) { |
| 345 vp9_highbd_idct8x8_10_add(input, dest, stride, bd); | 344 vpx_highbd_idct8x8_10_add(input, dest, stride, bd); |
| 346 } else { | 345 } else { |
| 347 vp9_highbd_idct8x8_64_add(input, dest, stride, bd); | 346 vpx_highbd_idct8x8_64_add(input, dest, stride, bd); |
| 348 } | 347 } |
| 349 } | 348 } |
| 350 | 349 |
| 351 void vp9_highbd_idct16x16_add(const tran_low_t *input, uint8_t *dest, | 350 void vp9_highbd_idct16x16_add(const tran_low_t *input, uint8_t *dest, |
| 352 int stride, int eob, int bd) { | 351 int stride, int eob, int bd) { |
| 353 // The calculation can be simplified if there are not many non-zero dct | 352 // The calculation can be simplified if there are not many non-zero dct |
| 354 // coefficients. Use eobs to separate different cases. | 353 // coefficients. Use eobs to separate different cases. |
| 355 // DC only DCT coefficient. | 354 // DC only DCT coefficient. |
| 356 if (eob == 1) { | 355 if (eob == 1) { |
| 357 vp9_highbd_idct16x16_1_add(input, dest, stride, bd); | 356 vpx_highbd_idct16x16_1_add(input, dest, stride, bd); |
| 358 } else if (eob <= 10) { | 357 } else if (eob <= 10) { |
| 359 vp9_highbd_idct16x16_10_add(input, dest, stride, bd); | 358 vpx_highbd_idct16x16_10_add(input, dest, stride, bd); |
| 360 } else { | 359 } else { |
| 361 vp9_highbd_idct16x16_256_add(input, dest, stride, bd); | 360 vpx_highbd_idct16x16_256_add(input, dest, stride, bd); |
| 362 } | 361 } |
| 363 } | 362 } |
| 364 | 363 |
| 365 void vp9_highbd_idct32x32_add(const tran_low_t *input, uint8_t *dest, | 364 void vp9_highbd_idct32x32_add(const tran_low_t *input, uint8_t *dest, |
| 366 int stride, int eob, int bd) { | 365 int stride, int eob, int bd) { |
| 367 // Non-zero coeff only in upper-left 8x8 | 366 // Non-zero coeff only in upper-left 8x8 |
| 368 if (eob == 1) { | 367 if (eob == 1) { |
| 369 vp9_highbd_idct32x32_1_add(input, dest, stride, bd); | 368 vpx_highbd_idct32x32_1_add(input, dest, stride, bd); |
| 370 } else if (eob <= 34) { | 369 } else if (eob <= 34) { |
| 371 vp9_highbd_idct32x32_34_add(input, dest, stride, bd); | 370 vpx_highbd_idct32x32_34_add(input, dest, stride, bd); |
| 372 } else { | 371 } else { |
| 373 vp9_highbd_idct32x32_1024_add(input, dest, stride, bd); | 372 vpx_highbd_idct32x32_1024_add(input, dest, stride, bd); |
| 374 } | 373 } |
| 375 } | 374 } |
| 376 | 375 |
| 377 // iht | 376 // iht |
| 378 void vp9_highbd_iht4x4_add(TX_TYPE tx_type, const tran_low_t *input, | 377 void vp9_highbd_iht4x4_add(TX_TYPE tx_type, const tran_low_t *input, |
| 379 uint8_t *dest, int stride, int eob, int bd) { | 378 uint8_t *dest, int stride, int eob, int bd) { |
| 380 if (tx_type == DCT_DCT) | 379 if (tx_type == DCT_DCT) |
| 381 vp9_highbd_idct4x4_add(input, dest, stride, eob, bd); | 380 vp9_highbd_idct4x4_add(input, dest, stride, eob, bd); |
| 382 else | 381 else |
| 383 vp9_highbd_iht4x4_16_add(input, dest, stride, tx_type, bd); | 382 vp9_highbd_iht4x4_16_add(input, dest, stride, tx_type, bd); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 394 | 393 |
| 395 void vp9_highbd_iht16x16_add(TX_TYPE tx_type, const tran_low_t *input, | 394 void vp9_highbd_iht16x16_add(TX_TYPE tx_type, const tran_low_t *input, |
| 396 uint8_t *dest, int stride, int eob, int bd) { | 395 uint8_t *dest, int stride, int eob, int bd) { |
| 397 if (tx_type == DCT_DCT) { | 396 if (tx_type == DCT_DCT) { |
| 398 vp9_highbd_idct16x16_add(input, dest, stride, eob, bd); | 397 vp9_highbd_idct16x16_add(input, dest, stride, eob, bd); |
| 399 } else { | 398 } else { |
| 400 vp9_highbd_iht16x16_256_add(input, dest, stride, tx_type, bd); | 399 vp9_highbd_iht16x16_256_add(input, dest, stride, tx_type, bd); |
| 401 } | 400 } |
| 402 } | 401 } |
| 403 #endif // CONFIG_VP9_HIGHBITDEPTH | 402 #endif // CONFIG_VP9_HIGHBITDEPTH |
| OLD | NEW |