FRAME_SUPERRES: Rework to use scale factor of 8/D
Earlier, the superres scale was in the form of:
N/16, where N ranged from 8 to 16.
We change this to the form:
8/D, where D ranges from 8 to 16.
This helps on the decoder side, by making it possible to work on 8x8
blocks at a time.
Change-Id: I6c72d4b3e8d1c830e61d4bb8d7f6337a100c3064
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index c2a48c4..e140847 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -3038,15 +3038,15 @@
cm->superres_upscaled_width = *width;
cm->superres_upscaled_height = *height;
if (aom_rb_read_bit(rb)) {
- cm->superres_scale_numerator =
+ cm->superres_scale_denominator =
(uint8_t)aom_rb_read_literal(rb, SUPERRES_SCALE_BITS);
- cm->superres_scale_numerator += SUPERRES_SCALE_NUMERATOR_MIN;
+ cm->superres_scale_denominator += SUPERRES_SCALE_DENOMINATOR_MIN;
// Don't edit cm->width or cm->height directly, or the buffers won't get
// resized correctly
- av1_calculate_scaled_size(width, height, cm->superres_scale_numerator);
+ av1_calculate_scaled_size(width, height, cm->superres_scale_denominator);
} else {
// 1:1 scaling - ie. no scaling, scale not provided
- cm->superres_scale_numerator = SCALE_DENOMINATOR;
+ cm->superres_scale_denominator = SCALE_NUMERATOR;
}
}
#endif // CONFIG_FRAME_SUPERRES