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

Commit 68112fc4 authored by Andy Hung's avatar Andy Hung
Browse files

Update AudioMixer::getTrackName to save channelMask



Change-Id: I4fb4abbff1b05bdd0f6e21b5f5f4c3f2a57ae28d
Signed-off-by: default avatarAndy Hung <hunga@google.com>
parent e541269b
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -159,7 +159,6 @@ int AudioMixer::getTrackName(audio_channel_mask_t channelMask, int sessionId)
    if (names != 0) {
        int n = __builtin_ctz(names);
        ALOGV("add track (%d)", n);
        mTrackNames |= 1 << n;
        // assume default parameters for the track, except where noted below
        track_t* t = &mState.tracks[n];
        t->needs = 0;
@@ -175,10 +174,10 @@ int AudioMixer::getTrackName(audio_channel_mask_t channelMask, int sessionId)
        // no initialization needed
        // t->prevAuxLevel
        // t->frameCount
        t->channelCount = 2;
        t->channelCount = audio_channel_count_from_out_mask(channelMask);
        t->enabled = false;
        t->format = 16;
        t->channelMask = AUDIO_CHANNEL_OUT_STEREO;
        t->channelMask = channelMask;
        t->sessionId = sessionId;
        // setBufferProvider(name, AudioBufferProvider *) is required before enable(name)
        t->bufferProvider = NULL;
@@ -196,12 +195,14 @@ int AudioMixer::getTrackName(audio_channel_mask_t channelMask, int sessionId)
        t->mMixerFormat = AUDIO_FORMAT_PCM_16_BIT;

        status_t status = initTrackDownmix(&mState.tracks[n], n, channelMask);
        if (status == OK) {
            return TRACK0 + n;
        if (status != OK) {
            ALOGE("AudioMixer::getTrackName invalid channelMask (%#x)", channelMask);
            return -1;
        }
        ALOGE("AudioMixer::getTrackName(0x%x) failed, error preparing track for downmix",
                channelMask);
        mTrackNames |= 1 << n;
        return TRACK0 + n;
    }
    ALOGE("AudioMixer::getTrackName out of available tracks");
    return -1;
}

+1 −5
Original line number Diff line number Diff line
@@ -224,17 +224,13 @@ void FastMixer::onStateChange()
            AudioBufferProvider *bufferProvider = fastTrack->mBufferProvider;
            ALOG_ASSERT(bufferProvider != NULL && fastTrackNames[i] == -1);
            if (mixer != NULL) {
                // calling getTrackName with default channel mask and a random invalid
                //   sessionId (no effects here)
                name = mixer->getTrackName(AUDIO_CHANNEL_OUT_STEREO, -555);
                name = mixer->getTrackName(fastTrack->mChannelMask, AUDIO_SESSION_OUTPUT_MIX);
                ALOG_ASSERT(name >= 0);
                fastTrackNames[i] = name;
                mixer->setBufferProvider(name, bufferProvider);
                mixer->setParameter(name, AudioMixer::TRACK, AudioMixer::MAIN_BUFFER,
                        (void *) mixBuffer);
                // newly allocated track names default to full scale volume
                mixer->setParameter(name, AudioMixer::TRACK, AudioMixer::CHANNEL_MASK,
                        (void *)(uintptr_t)fastTrack->mChannelMask);
                mixer->enable(name);
            }
            generations[i] = fastTrack->mGeneration;