Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c045a03e authored by Shunkai Yao's avatar Shunkai Yao
Browse files

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
parent 35131702
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -101,7 +101,10 @@ ndk::ScopedAStatus VisualizerImpl::setOnlyParameter(
    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: {
+5 −0
Original line number Diff line number Diff line
@@ -122,6 +122,11 @@ Visualizer::ScalingMode VisualizerContext::getScalingMode() {
}

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;
+6 −7
Original line number Diff line number Diff line
@@ -78,22 +78,21 @@ class VisualizerContext final : public EffectContext {
    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();