diff options
author | luming <luming1@xiaomi.com> | 2020-01-03 10:16:22 +0800 |
---|---|---|
committer | Andy Hung <hunga@google.com> | 2020-02-05 21:33:14 +0000 |
commit | 2e56379329873c4be3b5e3e04363020cd82356d9 (patch) | |
tree | 13a689b5ee1c75cf71322f18b92ef8459ee2d831 | |
parent | 79ec36fa8410d9644ae07d2ec25620edf832756f (diff) | |
download | audio-2e56379329873c4be3b5e3e04363020cd82356d9.tar.gz |
visualizer: fix issue of subtraction overflow
Test: playing music and using app to create
Visualizer AudioEffect, enable it and check
whether if audioserver crash.
Test: Clarity app with AAC file, verified visualizer works in offload.
Bug: 148959619
Change-Id: Ia7d02b519a6175fb4b52ef530ebb8c5e60614aeb
-rw-r--r-- | visualizer/offload_visualizer.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/visualizer/offload_visualizer.c b/visualizer/offload_visualizer.c index 74beac7..e445e84 100644 --- a/visualizer/offload_visualizer.c +++ b/visualizer/offload_visualizer.c @@ -835,13 +835,16 @@ int visualizer_command(effect_context_t * context, uint32_t cmdCode, uint32_t cm if (context->state == EFFECT_STATE_ACTIVE) { int32_t latency_ms = visu_ctxt->latency; const uint32_t delta_ms = visualizer_get_delta_time_ms_from_updated_time(visu_ctxt); - latency_ms -= delta_ms; - if (latency_ms < 0) { + if (latency_ms < delta_ms) { latency_ms = 0; + } else { + latency_ms -= delta_ms; } const uint32_t delta_smp = context->config.inputCfg.samplingRate * latency_ms / 1000; - int32_t capture_point = visu_ctxt->capture_idx - visu_ctxt->capture_size - delta_smp; + int32_t capture_point = 0; + __builtin_sub_overflow(visu_ctxt->capture_idx, visu_ctxt->capture_size + delta_smp, + &capture_point); int32_t capture_size = visu_ctxt->capture_size; if (capture_point < 0) { int32_t size = -capture_point; |