From 7b1291fa459106ee64d26064242e067065ad52d3 Mon Sep 17 00:00:00 2001 From: Mikhail Naganov Date: Tue, 19 Apr 2022 21:24:30 +0000 Subject: [PATCH] Visualizer: use actual sampling rate of the instance Visualizer.getSamplingRate method was always returning the same value. This is not valid since the actual sampling rate depends on the audio stream where the Visualizer is instantiated. Bug: 162727518 Test: atest CtsMediaAudioTestCases:VisualizerTest Change-Id: Ia2fc453ce8b6b0e11e61bc00c764f822b39cf951 --- media/jni/audioeffect/Visualizer.cpp | 11 +++++++++++ media/jni/audioeffect/Visualizer.h | 1 + 2 files changed, 12 insertions(+) diff --git a/media/jni/audioeffect/Visualizer.cpp b/media/jni/audioeffect/Visualizer.cpp index 193a5d4f3dc05..d0f1ec6064c1b 100644 --- a/media/jni/audioeffect/Visualizer.cpp +++ b/media/jni/audioeffect/Visualizer.cpp @@ -60,6 +60,7 @@ status_t Visualizer::set(int32_t priority, SL_IID_VISUALIZATION, nullptr, priority, cbf, user, sessionId, io, device, probe); if (status == NO_ERROR || status == ALREADY_EXISTS) { initCaptureSize(); + initSampleRate(); } return status; } @@ -413,6 +414,16 @@ uint32_t Visualizer::initCaptureSize() return size; } +void Visualizer::initSampleRate() +{ + audio_config_base_t inputConfig, outputConfig; + status_t status = getConfigs(&inputConfig, &outputConfig); + if (status == NO_ERROR) { + mSampleRate = outputConfig.sample_rate * 1000; + } + ALOGV("%s sample rate %d status %d", __func__, mSampleRate, status); +} + void Visualizer::controlStatusChanged(bool controlGranted) { if (controlGranted) { // this Visualizer instance regained control of the effect, reset the scaling mode diff --git a/media/jni/audioeffect/Visualizer.h b/media/jni/audioeffect/Visualizer.h index c402c10ccae1b..3d5d74a99d0e3 100644 --- a/media/jni/audioeffect/Visualizer.h +++ b/media/jni/audioeffect/Visualizer.h @@ -170,6 +170,7 @@ private: status_t doFft(uint8_t *fft, uint8_t *waveform); void periodicCapture(); uint32_t initCaptureSize(); + void initSampleRate(); Mutex mCaptureLock; uint32_t mCaptureRate = CAPTURE_RATE_DEF;