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

Commit 477e88a0 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 7816887 from 4a872860 to sc-v2-release

Change-Id: Ic51e3987cf53c30e8619253ae25c99e401caa010
parents 601209c5 4a872860
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -31,4 +31,9 @@ oneway interface INativeSpatializerCallback {
     * (e.g. when the spatializer is enabled or disabled)
     */
    void onLevelChanged(SpatializationLevel level);

    /** Called when the output stream the Spatializer is attached to changes.
     * Indicates the IO Handle of the new output.
     */
    void onOutputChanged(int output);
}
+31 −11
Original line number Diff line number Diff line
@@ -627,6 +627,9 @@ void Spatializer::onActualModeChangeMsg(HeadTrackingMode mode) {

status_t Spatializer::attachOutput(audio_io_handle_t output) {
    std::shared_ptr<SpatializerPoseController> poseController;
    bool outputChanged = false;
    sp<media::INativeSpatializerCallback> callback;

    {
        std::lock_guard lock(mLock);
        ALOGV("%s output %d mOutput %d", __func__, (int)output, (int)mOutput);
@@ -654,6 +657,7 @@ status_t Spatializer::attachOutput(audio_io_handle_t output) {
                             std::vector<SpatializerHeadTrackingMode>{mActualHeadTrackingMode});

        mEngine->setEnabled(true);
        outputChanged = mOutput != output;
        mOutput = output;

        if (mSupportsHeadTracking) {
@@ -668,17 +672,26 @@ status_t Spatializer::attachOutput(audio_io_handle_t output) {
            mPoseController->setDisplayOrientation(mDisplayOrientation);
            poseController = mPoseController;
        }
        callback = mSpatializerCallback;
    }
    if (poseController != nullptr) {
        poseController->waitUntilCalculated();
    }

    if (outputChanged && callback != nullptr) {
        callback->onOutputChanged(output);
    }

    return NO_ERROR;
}

audio_io_handle_t Spatializer::detachOutput() {
    audio_io_handle_t output = AUDIO_IO_HANDLE_NONE;
    sp<media::INativeSpatializerCallback> callback;

    {
        std::lock_guard lock(mLock);
        ALOGV("%s mOutput %d", __func__, (int)mOutput);
    audio_io_handle_t output = AUDIO_IO_HANDLE_NONE;
        if (mOutput == AUDIO_IO_HANDLE_NONE) {
            return output;
        }
@@ -688,6 +701,13 @@ audio_io_handle_t Spatializer::detachOutput() {
        output = mOutput;
        mOutput = AUDIO_IO_HANDLE_NONE;
        mPoseController.reset();

        callback = mSpatializerCallback;
    }

    if (callback != nullptr) {
        callback->onOutputChanged(AUDIO_IO_HANDLE_NONE);
    }
    return output;
}