}
}
+void vp9_short_idct1_32x32_c(int16_t *input, int16_t *output) {
+ int tmp;
+ int16_t out;
+ tmp = input[0] * cospi_16_64;
+ out = dct_const_round_shift(tmp);
+ tmp = out * cospi_16_64;
+ out = dct_const_round_shift(tmp);
+ *output = (out + 32) >> 6;
+}
+
#else // !CONFIG_DWTDCTHYBRID
#if DWT_TYPE == 53
prototype void vp9_short_idct32x32 "int16_t *input, int16_t *output, int pitch"
specialize vp9_short_idct32x32
+prototype void vp9_short_idct1_32x32 "int16_t *input, int16_t *output"
+specialize vp9_short_idct1_32x32
+
prototype void vp9_ihtllm "const int16_t *input, int16_t *output, int pitch, int tx_type, int tx_dim, int16_t eobs"
specialize vp9_ihtllm
int i;
if (eob) {
- input[0]= input[0] * dq[0] / 2;
- for (i = 1; i < 1024; i++)
- input[i] = input[i] * dq[1] / 2;
- vp9_short_idct32x32_c(input, output, 64);
- vpx_memset(input, 0, 2048);
-
- add_residual(output, pred, pitch, dest, stride, 32, 32);
+ input[0] = input[0] * dq[0] / 2;
+#if !CONFIG_DWTDCTHYBRID
+ if (eob == 1) {
+ vp9_short_idct1_32x32_c(input, output);
+ add_constant_residual(output[0], pred, pitch, dest, stride, 32, 32);
+ input[0] = 0;
+ } else {
+#endif
+ for (i = 1; i < 1024; i++)
+ input[i] = input[i] * dq[1] / 2;
+ vp9_short_idct32x32_c(input, output, 64);
+ vpx_memset(input, 0, 2048);
+ add_residual(output, pred, pitch, dest, stride, 32, 32);
+#if !CONFIG_DWTDCTHYBRID
+ }
+#endif
}
}