/* * Copyright (c) 2010 The WebM project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree.
*/
// idct void vp9_idct4x4_add(const tran_low_t *input, uint8_t *dest, int stride, int eob) { if (eob > 1)
vpx_idct4x4_16_add(input, dest, stride); else
vpx_idct4x4_1_add(input, dest, stride);
}
void vp9_iwht4x4_add(const tran_low_t *input, uint8_t *dest, int stride, int eob) { if (eob > 1)
vpx_iwht4x4_16_add(input, dest, stride); else
vpx_iwht4x4_1_add(input, dest, stride);
}
void vp9_idct8x8_add(const tran_low_t *input, uint8_t *dest, int stride, int eob) { // If dc is 1, then input[0] is the reconstructed value, do not need // dequantization. Also, when dc is 1, dc is counted in eobs, namely eobs >=1.
// The calculation can be simplified if there are not many non-zero dct // coefficients. Use eobs to decide what to do. if (eob == 1) // DC only DCT coefficient
vpx_idct8x8_1_add(input, dest, stride); elseif (eob <= 12)
vpx_idct8x8_12_add(input, dest, stride); else
vpx_idct8x8_64_add(input, dest, stride);
}
void vp9_idct16x16_add(const tran_low_t *input, uint8_t *dest, int stride, int eob) {
assert(((intptr_t)input) % 32 == 0); /* The calculation can be simplified if there are not many non-zero dct
* coefficients. Use eobs to separate different cases. */ if (eob == 1) /* DC only DCT coefficient. */
vpx_idct16x16_1_add(input, dest, stride); elseif (eob <= 10)
vpx_idct16x16_10_add(input, dest, stride); elseif (eob <= 38)
vpx_idct16x16_38_add(input, dest, stride); else
vpx_idct16x16_256_add(input, dest, stride);
}
void vp9_idct32x32_add(const tran_low_t *input, uint8_t *dest, int stride, int eob) {
assert(((intptr_t)input) % 32 == 0); if (eob == 1)
vpx_idct32x32_1_add(input, dest, stride); elseif (eob <= 34) // non-zero coeff only in upper-left 8x8
vpx_idct32x32_34_add(input, dest, stride); elseif (eob <= 135) // non-zero coeff only in upper-left 16x16
vpx_idct32x32_135_add(input, dest, stride); else
vpx_idct32x32_1024_add(input, dest, stride);
}
// iht void vp9_iht4x4_add(TX_TYPE tx_type, const tran_low_t *input, uint8_t *dest, int stride, int eob) { if (tx_type == DCT_DCT)
vp9_idct4x4_add(input, dest, stride, eob); else
vp9_iht4x4_16_add(input, dest, stride, tx_type);
}
// idct void vp9_highbd_idct4x4_add(const tran_low_t *input, uint16_t *dest, int stride, int eob, int bd) { if (eob > 1)
vpx_highbd_idct4x4_16_add(input, dest, stride, bd); else
vpx_highbd_idct4x4_1_add(input, dest, stride, bd);
}
void vp9_highbd_iwht4x4_add(const tran_low_t *input, uint16_t *dest, int stride, int eob, int bd) { if (eob > 1)
vpx_highbd_iwht4x4_16_add(input, dest, stride, bd); else
vpx_highbd_iwht4x4_1_add(input, dest, stride, bd);
}
void vp9_highbd_idct8x8_add(const tran_low_t *input, uint16_t *dest, int stride, int eob, int bd) { // If dc is 1, then input[0] is the reconstructed value, do not need // dequantization. Also, when dc is 1, dc is counted in eobs, namely eobs >=1.
// The calculation can be simplified if there are not many non-zero dct // coefficients. Use eobs to decide what to do. // DC only DCT coefficient if (eob == 1) {
vpx_highbd_idct8x8_1_add(input, dest, stride, bd);
} elseif (eob <= 12) {
vpx_highbd_idct8x8_12_add(input, dest, stride, bd);
} else {
vpx_highbd_idct8x8_64_add(input, dest, stride, bd);
}
}
void vp9_highbd_idct16x16_add(const tran_low_t *input, uint16_t *dest, int stride, int eob, int bd) { // The calculation can be simplified if there are not many non-zero dct // coefficients. Use eobs to separate different cases. // DC only DCT coefficient. if (eob == 1) {
vpx_highbd_idct16x16_1_add(input, dest, stride, bd);
} elseif (eob <= 10) {
vpx_highbd_idct16x16_10_add(input, dest, stride, bd);
} elseif (eob <= 38) {
vpx_highbd_idct16x16_38_add(input, dest, stride, bd);
} else {
vpx_highbd_idct16x16_256_add(input, dest, stride, bd);
}
}
void vp9_highbd_idct32x32_add(const tran_low_t *input, uint16_t *dest, int stride, int eob, int bd) { // Non-zero coeff only in upper-left 8x8 if (eob == 1) {
vpx_highbd_idct32x32_1_add(input, dest, stride, bd);
} elseif (eob <= 34) {
vpx_highbd_idct32x32_34_add(input, dest, stride, bd);
} elseif (eob <= 135) {
vpx_highbd_idct32x32_135_add(input, dest, stride, bd);
} else {
vpx_highbd_idct32x32_1024_add(input, dest, stride, bd);
}
}
// iht void vp9_highbd_iht4x4_add(TX_TYPE tx_type, const tran_low_t *input,
uint16_t *dest, int stride, int eob, int bd) { if (tx_type == DCT_DCT)
vp9_highbd_idct4x4_add(input, dest, stride, eob, bd); else
vp9_highbd_iht4x4_16_add(input, dest, stride, tx_type, bd);
}
void vp9_highbd_iht8x8_add(TX_TYPE tx_type, const tran_low_t *input,
uint16_t *dest, int stride, int eob, int bd) { if (tx_type == DCT_DCT) {
vp9_highbd_idct8x8_add(input, dest, stride, eob, bd);
} else {
vp9_highbd_iht8x8_64_add(input, dest, stride, tx_type, bd);
}
}
void vp9_highbd_iht16x16_add(TX_TYPE tx_type, const tran_low_t *input,
uint16_t *dest, int stride, int eob, int bd) { if (tx_type == DCT_DCT) {
vp9_highbd_idct16x16_add(input, dest, stride, eob, bd);
} else {
vp9_highbd_iht16x16_256_add(input, dest, stride, tx_type, bd);
}
} #endif// CONFIG_VP9_HIGHBITDEPTH
Messung V0.5
¤ Dauer der Verarbeitung: 0.20 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.