ref: ff37688a916c5e55aa36ace2e48a096c70a9413e
parent: 29492a5e14c398a907e4be3dacc75a695a1b20c8
author: Ronald S. Bultje <[email protected]>
date: Wed May 1 15:28:17 EDT 2013
Fix block reconstruction with sb8x8 enabled. The encoder reconstruction is now correct. Decoder to follow shortly. Change-Id: Iedf98cdaebb4ca1256c7714cad7024a75853ad6a
--- a/vp9/common/vp9_recon.c
+++ b/vp9/common/vp9_recon.c
@@ -31,9 +31,10 @@
void vp9_recon_b_c(uint8_t *pred_ptr, int16_t *diff_ptr, uint8_t *dst_ptr,
int stride) {
assert(pred_ptr == dst_ptr);
- recon(4, 4, diff_ptr, 16, dst_ptr, stride);
+ recon(4, 4, diff_ptr, 16 >> CONFIG_SB8X8, dst_ptr, stride);
}
+#if !CONFIG_SB8X8
void vp9_recon_uv_b_c(uint8_t *pred_ptr, int16_t *diff_ptr, uint8_t *dst_ptr,
int stride) {
assert(pred_ptr == dst_ptr);
@@ -51,6 +52,7 @@
assert(pred_ptr == dst_ptr);
recon(4, 8, diff_ptr, 8, dst_ptr, stride);
}
+#endif
static void recon_plane(MACROBLOCKD *xd, BLOCK_SIZE_TYPE bsize, int plane) {
const int bw = 4 << (b_width_log2(bsize) - xd->plane[plane].subsampling_x);
--- a/vp9/common/vp9_rtcd_defs.sh
+++ b/vp9/common/vp9_rtcd_defs.sh
@@ -63,6 +63,8 @@
prototype void vp9_recon_b "uint8_t *pred_ptr, int16_t *diff_ptr, uint8_t *dst_ptr, int stride"
specialize vp9_recon_b
+if [ "$CONFIG_SB8X8" != "yes" ]; then
+
prototype void vp9_recon_uv_b "uint8_t *pred_ptr, int16_t *diff_ptr, uint8_t *dst_ptr, int stride"
specialize vp9_recon_uv_b
@@ -75,6 +77,8 @@
prototype void vp9_recon4b "uint8_t *pred_ptr, int16_t *diff_ptr, uint8_t *dst_ptr, int stride"
specialize vp9_recon4b
# specialize vp9_recon4b sse2
+
+fi
prototype void vp9_recon_sb "struct macroblockd *x, enum BLOCK_SIZE_TYPE bsize"
specialize vp9_recon_sb