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

Commit 70e2ad56 authored by Shunkai Yao's avatar Shunkai Yao Committed by Automerger Merge Worker
Browse files

Merge "Effect AIDL Check visualizer latency parameter" am: 10b32a70 am: 5b6cccc3

parents 1934aadb 5b6cccc3
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();