NetEq: Fix an UBSan error
UBSan will trigger when shifting a negative value. This change avoids
that by replacing "x << 8" with "x * (1 << 8)".
Bug: chromium:666877
Change-Id: Ic89bd98e5a3feff35075df96b104b386cb4d8803
Reviewed-on: https://webrtc-review.googlesource.com/14552
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20387}
diff --git a/modules/audio_coding/neteq/buffer_level_filter.cc b/modules/audio_coding/neteq/buffer_level_filter.cc
index 5df59c7..6005de6 100644
--- a/modules/audio_coding/neteq/buffer_level_filter.cc
+++ b/modules/audio_coding/neteq/buffer_level_filter.cc
@@ -40,9 +40,9 @@
// value of |time_stretched_samples| from |filtered_current_level_| after
// converting |time_stretched_samples| from samples to packets in Q8.
// Make sure that the filtered value remains non-negative.
- filtered_current_level_ = std::max(0,
- filtered_current_level_ -
- (time_stretched_samples << 8) / static_cast<int>(packet_len_samples));
+ filtered_current_level_ = std::max(
+ 0, filtered_current_level_ - (time_stretched_samples * (1 << 8)) /
+ static_cast<int>(packet_len_samples));
}
}