{aq_variance,firstpass,ratectrl}.c: quiet -Wshorten warnings
ported from libvpx:
Added casts to remove warnings:
In regards to the safety of these casts they are of two types:-
- Normalized bits per (16x16) MB stored in a 32 bit int (This is safe as
bits per MB even with << 9 normalization cant overflow 32 bits. Even
raw 12 bits hdr source even would only be 29 bits :- (4+4+12+9) and
the encoder imposes much stricter limits than this on max bit rate.
- Cast as part of variance calculations. There is an internal cast up
to 64 bit for the Sum X Sum calculation, but after normalization
dividing by the number of points the result will always be <= the SSE
value.
BUG=aomedia:445
Change-Id: I4e700236ed83d6b2b1955e92e84c3b1978b9eaa0
diff --git a/av1/encoder/ratectrl.c b/av1/encoder/ratectrl.c
index 2e31699..1f2ea36 100644
--- a/av1/encoder/ratectrl.c
+++ b/av1/encoder/ratectrl.c
@@ -494,7 +494,7 @@
// Calculate required scaling factor based on target frame size and size of
// frame produced using previous Q.
target_bits_per_mb =
- ((uint64_t)target_bits_per_frame << BPER_MB_NORMBITS) / cm->MBs;
+ (int)((uint64_t)target_bits_per_frame << BPER_MB_NORMBITS) / cm->MBs;
i = active_best_quality;
@@ -1165,8 +1165,8 @@
rate_thresh_mult[rc->frame_size_selector]);
// Target rate per SB64 (including partial SB64s.
- rc->sb64_target_rate =
- ((int64_t)rc->this_frame_target * 64 * 64) / (cm->width * cm->height);
+ rc->sb64_target_rate = (int)((int64_t)rc->this_frame_target * 64 * 64) /
+ (cm->width * cm->height);
}
static void update_alt_ref_frame_stats(AV1_COMP *cpi) {