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

Commit 55be03e1 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 2331 into donut

* changes:
  Fix issue 1846343 - part 1
parents 49f98ce1 570dd0b4
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -1553,7 +1553,6 @@ size_t AudioFlinger::MixerThread::getOutputFrameCount()
AudioFlinger::MixerThread::TrackBase::TrackBase(
            const sp<MixerThread>& mixerThread,
            const sp<Client>& client,
            int streamType,
            uint32_t sampleRate,
            int format,
            int channelCount,
@@ -1563,7 +1562,6 @@ AudioFlinger::MixerThread::TrackBase::TrackBase(
    :   RefBase(),
        mMixerThread(mixerThread),
        mClient(client),
        mStreamType(streamType),
        mFrameCount(0),
        mState(IDLE),
        mClientTid(-1),
@@ -1713,12 +1711,13 @@ AudioFlinger::MixerThread::Track::Track(
            int channelCount,
            int frameCount,
            const sp<IMemory>& sharedBuffer)
    :   TrackBase(mixerThread, client, streamType, sampleRate, format, channelCount, frameCount, 0, sharedBuffer)
    :   TrackBase(mixerThread, client, sampleRate, format, channelCount, frameCount, 0, sharedBuffer)
{
    mVolume[0] = 1.0f;
    mVolume[1] = 1.0f;
    mMute = false;
    mSharedBuffer = sharedBuffer;
    mStreamType = streamType;
}

AudioFlinger::MixerThread::Track::~Track()
@@ -1902,15 +1901,15 @@ void AudioFlinger::MixerThread::Track::setVolume(float left, float right)
AudioFlinger::MixerThread::RecordTrack::RecordTrack(
            const sp<MixerThread>& mixerThread,
            const sp<Client>& client,
            int streamType,
            int inputSource,
            uint32_t sampleRate,
            int format,
            int channelCount,
            int frameCount,
            uint32_t flags)
    :   TrackBase(mixerThread, client, streamType, sampleRate, format,
    :   TrackBase(mixerThread, client, sampleRate, format,
                  channelCount, frameCount, flags, 0),
        mOverflow(false)
        mOverflow(false), mInputSource(inputSource)
{
}

@@ -2235,7 +2234,7 @@ status_t AudioFlinger::TrackHandle::onTransact(

sp<IAudioRecord> AudioFlinger::openRecord(
        pid_t pid,
        int streamType,
        int inputSource,
        uint32_t sampleRate,
        int format,
        int channelCount,
@@ -2258,7 +2257,7 @@ sp<IAudioRecord> AudioFlinger::openRecord(
        goto Exit;
    }

    if (uint32_t(streamType) >= AudioRecord::NUM_STREAM_TYPES) {
    if (uint32_t(inputSource) >= AudioRecord::NUM_INPUT_SOURCES) {
        LOGE("invalid stream type");
        lStatus = BAD_VALUE;
        goto Exit;
@@ -2301,7 +2300,7 @@ sp<IAudioRecord> AudioFlinger::openRecord(
        frameCount = ((frameCount - 1)/inFrameCount + 1) * inFrameCount;
    
        // create new record track. The record track uses one track in mHardwareMixerThread by convention.
        recordTrack = new MixerThread::RecordTrack(mHardwareMixerThread, client, streamType, sampleRate,
        recordTrack = new MixerThread::RecordTrack(mHardwareMixerThread, client, inputSource, sampleRate,
                                                   format, channelCount, frameCount, flags);
    }
    if (recordTrack->getCblk() == NULL) {
@@ -2408,7 +2407,7 @@ bool AudioFlinger::AudioRecordThread::threadLoop()
                LOGV("AudioRecordThread: loop starting");
                if (mRecordTrack != 0) {
                    input = mAudioHardware->openInputStream(
                                    mRecordTrack->type(),
                                    mRecordTrack->inputSource(),
                                    mRecordTrack->format(), 
                                    mRecordTrack->channelCount(), 
                                    mRecordTrack->sampleRate(), 
+11 −8
Original line number Diff line number Diff line
@@ -139,7 +139,7 @@ public:
    // record interface
    virtual sp<IAudioRecord> openRecord(
                                pid_t pid,
                                int streamType,
                                int inputSource,
                                uint32_t sampleRate,
                                int format,
                                int channelCount,
@@ -232,7 +232,6 @@ private:

                                TrackBase(const sp<MixerThread>& mixerThread,
                                        const sp<Client>& client,
                                        int streamType,
                                        uint32_t sampleRate,
                                        int format,
                                        int channelCount,
@@ -260,10 +259,6 @@ private:
                return mCblk;
            }

            int type() const {
                return mStreamType;
            }

            int format() const {
                return mFormat;
            }
@@ -293,7 +288,6 @@ private:
            sp<Client>          mClient;
            sp<IMemory>         mCblkMemory;
            audio_track_cblk_t* mCblk;
            int                 mStreamType;
            void*               mBuffer;
            void*               mBufferEnd;
            uint32_t            mFrameCount;
@@ -328,6 +322,11 @@ private:
                    void        mute(bool);
                    void        setVolume(float left, float right);

                    int type() const {
                        return mStreamType;
                    }


        protected:
            friend class MixerThread;
            friend class AudioFlinger;
@@ -364,6 +363,7 @@ private:
            int8_t              mRetryCount;
            sp<IMemory>         mSharedBuffer;
            bool                mResetDone;
            int                 mStreamType;
        };  // end of Track

        // record track
@@ -371,7 +371,7 @@ private:
        public:
                                RecordTrack(const sp<MixerThread>& mixerThread,
                                        const sp<Client>& client,
                                        int streamType,
                                        int inputSource,
                                        uint32_t sampleRate,
                                        int format,
                                        int channelCount,
@@ -385,6 +385,8 @@ private:
                    bool        overflow() { bool tmp = mOverflow; mOverflow = false; return tmp; }
                    bool        setOverflow() { bool tmp = mOverflow; mOverflow = true; return tmp; }

                    int         inputSource() const { return mInputSource; }

        private:
            friend class AudioFlinger;
            friend class AudioFlinger::RecordHandle;
@@ -397,6 +399,7 @@ private:
            virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer);

            bool                mOverflow;
            int                 mInputSource;
        };

        // playback track
+2 −2
Original line number Diff line number Diff line
@@ -98,8 +98,8 @@ AudioStreamIn* AudioHardwareGeneric::openInputStream(
        status_t *status, AudioSystem::audio_in_acoustics acoustics)
{
    // check for valid input source
    if ((inputSource != AudioRecord::DEFAULT_INPUT) &&
            (inputSource != AudioRecord::MIC_INPUT)) {
    if ((inputSource < AudioRecord::DEFAULT_INPUT) ||
        (inputSource >= AudioRecord::NUM_INPUT_SOURCES)) {
        return 0;
    }

+2 −2
Original line number Diff line number Diff line
@@ -61,8 +61,8 @@ AudioStreamIn* AudioHardwareStub::openInputStream(
        status_t *status, AudioSystem::audio_in_acoustics acoustics)
{
    // check for valid input source
    if ((inputSource != AudioRecord::DEFAULT_INPUT) &&
            (inputSource != AudioRecord::MIC_INPUT)) {
    if ((inputSource < AudioRecord::DEFAULT_INPUT) ||
        (inputSource >= AudioRecord::NUM_INPUT_SOURCES)) {
        return 0;
    }