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

Commit 9356f2fb authored by Oskar Andero's avatar Oskar Andero
Browse files

audio: fix inputClientId for ST-E audio support

This fixes a uninitialized parameter to getInput() which is needed for
audio recording.

Change-Id: I9a8c2580f847e9a581bda3ccef1cd3b6887f3e5e
parent ba54a844
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -385,6 +385,9 @@ private:
    uint32_t                mChannelMask;
    audio_io_handle_t       mInput;
    int                     mSessionId;
#ifdef STE_AUDIO
    audio_input_clients     *mpInputClientId;
#endif
};

}; // namespace android
+5 −0
Original line number Diff line number Diff line
@@ -176,7 +176,12 @@ public:
                                    uint32_t format = AUDIO_FORMAT_DEFAULT,
                                    uint32_t channels = AUDIO_CHANNEL_IN_MONO,
                                    audio_in_acoustics_t acoustics = (audio_in_acoustics_t)0,
#ifdef STE_AUDIO
                                    int sessionId = 0,
                                    audio_input_clients *inputClientId = NULL);
#else
                                    int sessionId = 0);
#endif
    static status_t startInput(audio_io_handle_t input);
    static status_t stopInput(audio_io_handle_t input);
    static void releaseInput(audio_io_handle_t input);
+32 −0
Original line number Diff line number Diff line
@@ -81,7 +81,17 @@ status_t AudioRecord::getMinFrameCount(

AudioRecord::AudioRecord()
    : mStatus(NO_INIT), mSessionId(0)
#ifdef STE_AUDIO
      , mpInputClientId(NULL)
#endif
{
#ifdef STE_AUDIO
    const sp<IAudioFlinger>& audioFlinger = AudioSystem::get_audio_flinger();
    if (audioFlinger != 0) {
        mpInputClientId = (audio_input_clients*)audioFlinger->addInputClient(
                                                 (uint32_t)AUDIO_INPUT_CLIENT_RECORD);
    }
#endif
}

AudioRecord::AudioRecord(
@@ -96,7 +106,18 @@ AudioRecord::AudioRecord(
        int notificationFrames,
        int sessionId)
    : mStatus(NO_INIT), mSessionId(0)
#ifdef STE_AUDIO
      , mpInputClientId(NULL)
#endif
{
#ifdef STE_AUDIO
    const sp<IAudioFlinger>& audioFlinger = AudioSystem::get_audio_flinger();
    if (audioFlinger != 0) {
        mpInputClientId = (audio_input_clients*)audioFlinger->addInputClient(
                                                 (uint32_t)AUDIO_INPUT_CLIENT_RECORD);
    }
#endif

    mStatus = set(inputSource, sampleRate, format, channelMask,
            frameCount, flags, cbf, user, notificationFrames, sessionId);
}
@@ -148,6 +169,12 @@ AudioRecord::~AudioRecord()
        IPCThreadState::self()->flushCommands();
        AudioSystem::releaseAudioSessionId(mSessionId);
    }
#ifdef STE_AUDIO
    const sp<IAudioFlinger>& audioFlinger = AudioSystem::get_audio_flinger();
    if (audioFlinger != 0) {
        audioFlinger->removeInputClient((uint32_t*)mpInputClientId);
    }
#endif
}

status_t AudioRecord::set(
@@ -207,7 +234,12 @@ status_t AudioRecord::set(
                                                    format,
                                                    channelMask,
                                                    (audio_in_acoustics_t)flags,
#ifdef STE_AUDIO
                                                    mSessionId,
                                                    mpInputClientId);
#else
                                                    mSessionId);
#endif
    if (input == 0) {
        LOGE("Could not get audio input for record source %d", inputSource);
        return BAD_VALUE;
+9 −0
Original line number Diff line number Diff line
@@ -670,11 +670,20 @@ audio_io_handle_t AudioSystem::getInput(int inputSource,
                                    uint32_t format,
                                    uint32_t channels,
                                    audio_in_acoustics_t acoustics,
#ifdef STE_AUDIO
                                    int sessionId,
                                    audio_input_clients *inputClientId)
#else
                                    int sessionId)
#endif
{
    const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
    if (aps == 0) return 0;
#ifdef STE_AUDIO
    return aps->getInput(inputSource, samplingRate, format, channels, acoustics, sessionId, inputClientId);
#else
    return aps->getInput(inputSource, samplingRate, format, channels, acoustics, sessionId);
#endif
}

status_t AudioSystem::startInput(audio_io_handle_t input)