Scale variables with bit-depth in first pass
Scale certain variables according to the bit-depth in the first
pass process. The compression performance for 12-bit internal
setting remains neutral for most clips, whereas a few clips improve
1 - 2% range.
BUG=aomedia:2780
STATS_CHANGED
Change-Id: Ia0770eee6c91a8a04905ab9bf7fc041ddd6bc754
diff --git a/av1/encoder/firstpass.c b/av1/encoder/firstpass.c
index a5e91f3..ec1bb0e 100644
--- a/av1/encoder/firstpass.c
+++ b/av1/encoder/firstpass.c
@@ -360,13 +360,6 @@
av1_encode_intra_block_plane(cpi, x, bsize, 0, DRY_RUN_NORMAL, 0);
int this_intra_error = aom_get_mb_ss(x->plane[0].src_diff);
-
- if (this_intra_error < UL_INTRA_THRESH) {
- ++stats->intra_skip_count;
- } else if ((mb_col > 0) && (stats->image_data_start_row == INVALID_ROW)) {
- stats->image_data_start_row = mb_row;
- }
-
if (seq_params->use_highbitdepth) {
switch (seq_params->bit_depth) {
case AOM_BITS_8: break;
@@ -380,6 +373,12 @@
}
}
+ if (this_intra_error < UL_INTRA_THRESH) {
+ ++stats->intra_skip_count;
+ } else if ((mb_col > 0) && (stats->image_data_start_row == INVALID_ROW)) {
+ stats->image_data_start_row = mb_row;
+ }
+
aom_clear_system_state();
double log_intra = log(this_intra_error + 1.0);
if (log_intra < 10.0) {
@@ -394,6 +393,19 @@
} else {
level_sample = x->plane[0].src.buf[0];
}
+
+ if (seq_params->use_highbitdepth) {
+ switch (seq_params->bit_depth) {
+ case AOM_BITS_8: break;
+ case AOM_BITS_10: level_sample >>= 2; break;
+ case AOM_BITS_12: level_sample >>= 4; break;
+ default:
+ assert(0 &&
+ "seq_params->bit_depth should be AOM_BITS_8, "
+ "AOM_BITS_10 or AOM_BITS_12");
+ return -1;
+ }
+ }
if ((level_sample < DARK_THRESH) && (log_intra < 9.0)) {
stats->brightness_factor += 1.0 + (0.01 * (DARK_THRESH - level_sample));
} else {