summaryrefslogtreecommitdiff
path: root/vp9/decoder/vp9_decodframe.c
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@google.com>2013-04-30 16:13:20 -0700
committerRonald S. Bultje <rbultje@google.com>2013-04-30 16:13:20 -0700
commitd068d869b93e2139a53d3d3037c009a1aa22e3d4 (patch)
treef51938560cbbac5056d43acabfd259f8524a5c04 /vp9/decoder/vp9_decodframe.c
parentad6890316c4fe742b047fd3d167cc591e01f5ec1 (diff)
downloadlibvpx-d068d869b93e2139a53d3d3037c009a1aa22e3d4.tar
libvpx-d068d869b93e2139a53d3d3037c009a1aa22e3d4.tar.gz
libvpx-d068d869b93e2139a53d3d3037c009a1aa22e3d4.tar.bz2
libvpx-d068d869b93e2139a53d3d3037c009a1aa22e3d4.zip
sb8x8 integration in rd loop.
Work-in-progress, not yet ready for review. TODO items: - bitstream writing (encoder) and reading (decoder) - decoder reconstruction Change-Id: I5afb7284e7e0480847b47cd0097cb469433c9081
Diffstat (limited to 'vp9/decoder/vp9_decodframe.c')
-rw-r--r--vp9/decoder/vp9_decodframe.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c
index 023bfcb96..12f8948d7 100644
--- a/vp9/decoder/vp9_decodframe.c
+++ b/vp9/decoder/vp9_decodframe.c
@@ -203,6 +203,7 @@ static void mb_init_dequantizer(VP9_COMMON *pc, MACROBLOCKD *xd) {
xd->plane[i].dequant = pc->uv_dequant[xd->q_index];
}
+#if !CONFIG_SB8X8
static void decode_16x16(MACROBLOCKD *xd) {
const TX_TYPE tx_type = get_tx_type_16x16(xd, 0);
@@ -283,6 +284,7 @@ static void decode_8x8(MACROBLOCKD *xd) {
xd->plane[1].dst.stride, xd->plane[2].eobs[0]);
}
}
+#endif
static INLINE void dequant_add_y(MACROBLOCKD *xd, TX_TYPE tx_type, int idx) {
struct macroblockd_plane *const y = &xd->plane[0];
@@ -298,6 +300,7 @@ static INLINE void dequant_add_y(MACROBLOCKD *xd, TX_TYPE tx_type, int idx) {
}
}
+#if !CONFIG_SB8X8
static void decode_4x4(VP9D_COMP *pbi, MACROBLOCKD *xd, vp9_reader *r) {
TX_TYPE tx_type;
int i = 0;
@@ -353,6 +356,7 @@ static void decode_4x4(VP9D_COMP *pbi, MACROBLOCKD *xd, vp9_reader *r) {
xd->plane[1].dst.stride, xd->plane[2].eobs);
}
}
+#endif
static int txfrm_block_to_raster_block(MACROBLOCKD *xd,
BLOCK_SIZE_TYPE bsize,
@@ -520,6 +524,7 @@ static void decode_sb(VP9D_COMP *pbi, MACROBLOCKD *xd, int mi_row, int mi_col,
}
}
+#if !CONFIG_SB8X8
// TODO(jingning): Need to merge SB and MB decoding. The MB decoding currently
// couples special handles on I8x8, B_PRED, and splitmv modes.
static void decode_mb(VP9D_COMP *pbi, MACROBLOCKD *xd,
@@ -622,6 +627,7 @@ static void decode_mb(VP9D_COMP *pbi, MACROBLOCKD *xd,
}
#endif
}
+#endif
static int get_delta_q(vp9_reader *r, int *dq) {
const int old_value = *dq;
@@ -708,6 +714,9 @@ static void decode_modes_b(VP9D_COMP *pbi, int mi_row, int mi_col,
vp9_decode_mb_mode_mv(pbi, xd, mi_row, mi_col, r);
set_refs(pbi, mi_row, mi_col);
+#if CONFIG_SB8X8
+ decode_sb(pbi, xd, mi_row, mi_col, r, bsize);
+#else
// TODO(jingning): merge decode_sb_ and decode_mb_
if (bsize > BLOCK_SIZE_MB16X16) {
decode_sb(pbi, xd, mi_row, mi_col, r, bsize);
@@ -724,6 +733,7 @@ static void decode_modes_b(VP9D_COMP *pbi, int mi_row, int mi_col,
// and SPLITMV of 8x8, 16x8, and 8x16. To be migrated into decode_sb.
decode_mb(pbi, xd, mi_row, mi_col, r);
}
+#endif
xd->corrupted |= vp9_reader_has_error(r);
}
@@ -1142,9 +1152,13 @@ static void update_frame_context(FRAME_CONTEXT *fc) {
vp9_copy(fc->pre_sb_ymode_prob, fc->sb_ymode_prob);
vp9_copy(fc->pre_uv_mode_prob, fc->uv_mode_prob);
vp9_copy(fc->pre_bmode_prob, fc->bmode_prob);
+#if !CONFIG_SB8X8
vp9_copy(fc->pre_i8x8_mode_prob, fc->i8x8_mode_prob);
+#endif
vp9_copy(fc->pre_sub_mv_ref_prob, fc->sub_mv_ref_prob);
+#if !CONFIG_SB8X8
vp9_copy(fc->pre_mbsplit_prob, fc->mbsplit_prob);
+#endif
vp9_copy(fc->pre_partition_prob, fc->partition_prob);
fc->pre_nmvc = fc->nmvc;
@@ -1157,9 +1171,13 @@ static void update_frame_context(FRAME_CONTEXT *fc) {
vp9_zero(fc->sb_ymode_counts);
vp9_zero(fc->uv_mode_counts);
vp9_zero(fc->bmode_counts);
+#if !CONFIG_SB8X8
vp9_zero(fc->i8x8_mode_counts);
+#endif
vp9_zero(fc->sub_mv_ref_counts);
+#if !CONFIG_SB8X8
vp9_zero(fc->mbsplit_counts);
+#endif
vp9_zero(fc->NMVcount);
vp9_zero(fc->mv_ref_ct);
vp9_zero(fc->partition_counts);