Effect AIDL Check visualizer latency parameter

Add default value for class members.
Update mutex locking for some members.

Bug: 258124419
Test: atest VtsHalVisualizerTargetTest
Change-Id: I98c9b7a488e1d6d910428eae7e9f4cb011deb13e
diff --git a/media/libeffects/visualizer/aidl/Visualizer.cpp b/media/libeffects/visualizer/aidl/Visualizer.cpp
index e21aa01..28a7287 100644
--- a/media/libeffects/visualizer/aidl/Visualizer.cpp
+++ b/media/libeffects/visualizer/aidl/Visualizer.cpp
@@ -101,7 +101,10 @@
     auto tag = param.getTag();
     switch (tag) {
         case Visualizer::SetOnlyParameters::latencyMs: {
-            mContext->setDownstreamLatency(param.get<Visualizer::SetOnlyParameters::latencyMs>());
+            RETURN_IF(mContext->setDownstreamLatency(
+                              param.get<Visualizer::SetOnlyParameters::latencyMs>()) !=
+                              RetCode::SUCCESS,
+                      EX_ILLEGAL_ARGUMENT, "setLatencyFailed");
             break;
         }
         default: {
diff --git a/media/libeffects/visualizer/aidl/VisualizerContext.cpp b/media/libeffects/visualizer/aidl/VisualizerContext.cpp
index 35ebdfb..1965e0e 100644
--- a/media/libeffects/visualizer/aidl/VisualizerContext.cpp
+++ b/media/libeffects/visualizer/aidl/VisualizerContext.cpp
@@ -122,6 +122,11 @@
 }
 
 RetCode VisualizerContext::setDownstreamLatency(int latency) {
+    if (latency < 0 || (unsigned)latency > kMaxLatencyMs) {
+        LOG(ERROR) << __func__ << " latency " << latency << " exceed valid range: 0 - "
+                   << kMaxLatencyMs;
+        return RetCode::ERROR_ILLEGAL_PARAMETER;
+    }
     std::lock_guard lg(mMutex);
     mDownstreamLatency = latency;
     return RetCode::SUCCESS;
diff --git a/media/libeffects/visualizer/aidl/VisualizerContext.h b/media/libeffects/visualizer/aidl/VisualizerContext.h
index 26db0b1..bfda0b9 100644
--- a/media/libeffects/visualizer/aidl/VisualizerContext.h
+++ b/media/libeffects/visualizer/aidl/VisualizerContext.h
@@ -78,22 +78,21 @@
     std::mutex mMutex;
     Parameter::Common mCommon GUARDED_BY(mMutex);
     State mState GUARDED_BY(mMutex) = State::UNINITIALIZED;
-    uint32_t mCaptureIdx GUARDED_BY(mMutex);
-    uint32_t mLastCaptureIdx GUARDED_BY(mMutex);
+    uint32_t mCaptureIdx GUARDED_BY(mMutex) = 0;
+    uint32_t mLastCaptureIdx GUARDED_BY(mMutex) = 0;
     Visualizer::ScalingMode mScalingMode GUARDED_BY(mMutex) = Visualizer::ScalingMode::NORMALIZED;
     struct timespec mBufferUpdateTime GUARDED_BY(mMutex);
     // capture buf with 8 bits PCM
     std::array<uint8_t, kMaxCaptureBufSize> mCaptureBuf GUARDED_BY(mMutex);
-    // no mutex, only accessed by parameters
-    uint32_t mDownstreamLatency;
-    uint32_t mCaptureSamples = kMaxCaptureBufSize;
+    uint32_t mDownstreamLatency GUARDED_BY(mMutex) = 0;
+    uint32_t mCaptureSamples GUARDED_BY(mMutex) = kMaxCaptureBufSize;
 
     // to avoid recomputing it every time a buffer is processed
-    uint8_t mChannelCount GUARDED_BY(mMutex);
+    uint8_t mChannelCount GUARDED_BY(mMutex) = 0;
     Visualizer::MeasurementMode mMeasurementMode GUARDED_BY(mMutex) =
             Visualizer::MeasurementMode::NONE;
     uint8_t mMeasurementWindowSizeInBuffers = kMeasurementWindowMaxSizeInBuffers;
-    uint8_t mMeasurementBufferIdx GUARDED_BY(mMutex);
+    uint8_t mMeasurementBufferIdx GUARDED_BY(mMutex) = 0;
     std::array<BufferStats, kMeasurementWindowMaxSizeInBuffers> mPastMeasurements;
     void init_params();