Rework the level map based txb encoding loop
This commit integrates the level map coding within cb4x4 framework.
Change-Id: Ied9721df0a7ffd21d1d69d68759d91b6c320c179
diff --git a/av1/common/blockd.c b/av1/common/blockd.c
index 5209448..8bc1291 100644
--- a/av1/common/blockd.c
+++ b/av1/common/blockd.c
@@ -158,13 +158,21 @@
#if CONFIG_LV_MAP
void av1_foreach_transformed_block(const MACROBLOCKD *const xd,
- BLOCK_SIZE bsize,
+ BLOCK_SIZE bsize, int mi_row, int mi_col,
foreach_transformed_block_visitor visit,
void *arg) {
int plane;
- for (plane = 0; plane < MAX_MB_PLANE; ++plane)
+ for (plane = 0; plane < MAX_MB_PLANE; ++plane) {
+#if CONFIG_CB4X4
+ if (bsize < BLOCK_8X8 && plane && !is_chroma_reference(mi_row, mi_col))
+ continue;
+#else
+ (void)mi_row;
+ (void)mi_col;
+#endif
av1_foreach_transformed_block_in_plane(xd, bsize, plane, visit, arg);
+ }
}
#endif
diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 12e5eab..5cf0f83 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -999,7 +999,7 @@
#if CONFIG_LV_MAP
void av1_foreach_transformed_block(const MACROBLOCKD *const xd,
- BLOCK_SIZE bsize,
+ BLOCK_SIZE bsize, int mi_row, int mi_col,
foreach_transformed_block_visitor visit,
void *arg);
#endif
diff --git a/av1/encoder/encodetxb.c b/av1/encoder/encodetxb.c
index 85e71c0..2c1e22f 100644
--- a/av1/encoder/encodetxb.c
+++ b/av1/encoder/encodetxb.c
@@ -565,10 +565,11 @@
if (!dry_run) {
td->counts->skip[ctx][0] += skip_inc;
- av1_foreach_transformed_block(xd, bsize, update_and_record_txb_context,
- &arg);
+ av1_foreach_transformed_block(xd, bsize, mi_row, mi_col,
+ update_and_record_txb_context, &arg);
} else if (dry_run == DRY_RUN_NORMAL) {
- av1_foreach_transformed_block(xd, bsize, update_txb_context, &arg);
+ av1_foreach_transformed_block(xd, bsize, mi_row, mi_col, update_txb_context,
+ &arg);
} else {
printf("DRY_RUN_COSTCOEFFS is not supported yet\n");
assert(0);