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

Commit 5c0ad10b authored by Glenn Kasten's avatar Glenn Kasten Committed by Android (Google) Code Review
Browse files

Merge "Cleanup thread types"

parents 62da7fbd 23bb8bec
Loading
Loading
Loading
Loading
+15 −14
Original line number Original line Diff line number Diff line
@@ -985,8 +985,10 @@ void AudioFlinger::removeClient_l(pid_t pid)


// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------


AudioFlinger::ThreadBase::ThreadBase(const sp<AudioFlinger>& audioFlinger, int id, uint32_t device)
AudioFlinger::ThreadBase::ThreadBase(const sp<AudioFlinger>& audioFlinger, int id, uint32_t device,
        type_t type)
    :   Thread(false),
    :   Thread(false),
        mType(type),
        mAudioFlinger(audioFlinger), mSampleRate(0), mFrameCount(0), mChannelCount(0),
        mAudioFlinger(audioFlinger), mSampleRate(0), mFrameCount(0), mChannelCount(0),
        mFrameSize(1), mFormat(AUDIO_FORMAT_INVALID), mStandby(false), mId(id), mExiting(false),
        mFrameSize(1), mFormat(AUDIO_FORMAT_INVALID), mStandby(false), mId(id), mExiting(false),
        mDevice(device)
        mDevice(device)
@@ -1372,8 +1374,9 @@ void AudioFlinger::ThreadBase::checkSuspendOnEffectEnabled_l(const sp<EffectModu
AudioFlinger::PlaybackThread::PlaybackThread(const sp<AudioFlinger>& audioFlinger,
AudioFlinger::PlaybackThread::PlaybackThread(const sp<AudioFlinger>& audioFlinger,
                                             AudioStreamOut* output,
                                             AudioStreamOut* output,
                                             int id,
                                             int id,
                                             uint32_t device)
                                             uint32_t device,
    :   ThreadBase(audioFlinger, id, device),
                                             type_t type)
    :   ThreadBase(audioFlinger, id, device, type),
        mMixBuffer(NULL), mSuspended(0), mBytesWritten(0), mOutput(output),
        mMixBuffer(NULL), mSuspended(0), mBytesWritten(0), mOutput(output),
        mLastWriteTime(0), mNumWrites(0), mNumDelayedWrites(0), mInWrite(false)
        mLastWriteTime(0), mNumWrites(0), mNumDelayedWrites(0), mInWrite(false)
{
{
@@ -1845,11 +1848,11 @@ uint32_t AudioFlinger::PlaybackThread::activeSleepTimeUs()


// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------


AudioFlinger::MixerThread::MixerThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device)
AudioFlinger::MixerThread::MixerThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output,
    :   PlaybackThread(audioFlinger, output, id, device),
        int id, uint32_t device, type_t type)
    :   PlaybackThread(audioFlinger, output, id, device, type),
        mAudioMixer(NULL), mPrevMixerStatus(MIXER_IDLE)
        mAudioMixer(NULL), mPrevMixerStatus(MIXER_IDLE)
{
{
    mType = ThreadBase::MIXER;
    mAudioMixer = new AudioMixer(mFrameCount, mSampleRate);
    mAudioMixer = new AudioMixer(mFrameCount, mSampleRate);


    // FIXME - Current mixer implementation only supports stereo output
    // FIXME - Current mixer implementation only supports stereo output
@@ -2515,9 +2518,8 @@ uint32_t AudioFlinger::MixerThread::suspendSleepTimeUs()


// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
AudioFlinger::DirectOutputThread::DirectOutputThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device)
AudioFlinger::DirectOutputThread::DirectOutputThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device)
    :   PlaybackThread(audioFlinger, output, id, device)
    :   PlaybackThread(audioFlinger, output, id, device, DIRECT)
{
{
    mType = ThreadBase::DIRECT;
}
}


AudioFlinger::DirectOutputThread::~DirectOutputThread()
AudioFlinger::DirectOutputThread::~DirectOutputThread()
@@ -2994,10 +2996,11 @@ uint32_t AudioFlinger::DirectOutputThread::suspendSleepTimeUs()


// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------


AudioFlinger::DuplicatingThread::DuplicatingThread(const sp<AudioFlinger>& audioFlinger, AudioFlinger::MixerThread* mainThread, int id)
AudioFlinger::DuplicatingThread::DuplicatingThread(const sp<AudioFlinger>& audioFlinger,
    :   MixerThread(audioFlinger, mainThread->getOutput(), id, mainThread->device()), mWaitTimeMs(UINT_MAX)
        AudioFlinger::MixerThread* mainThread, int id)
    :   MixerThread(audioFlinger, mainThread->getOutput(), id, mainThread->device(), DUPLICATING),
        mWaitTimeMs(UINT_MAX)
{
{
    mType = ThreadBase::DUPLICATING;
    addOutputTrack(mainThread);
    addOutputTrack(mainThread);
}
}


@@ -4267,11 +4270,9 @@ AudioFlinger::RecordThread::RecordThread(const sp<AudioFlinger>& audioFlinger,
                                         uint32_t channels,
                                         uint32_t channels,
                                         int id,
                                         int id,
                                         uint32_t device) :
                                         uint32_t device) :
    ThreadBase(audioFlinger, id, device),
    ThreadBase(audioFlinger, id, device, RECORD),
    mInput(input), mTrack(NULL), mResampler(NULL), mRsmpOutBuffer(NULL), mRsmpInBuffer(NULL)
    mInput(input), mTrack(NULL), mResampler(NULL), mRsmpOutBuffer(NULL), mRsmpInBuffer(NULL)
{
{
    mType = ThreadBase::RECORD;

    snprintf(mName, kNameLength, "AudioIn_%d", id);
    snprintf(mName, kNameLength, "AudioIn_%d", id);


    mReqChannelCount = popcount(channels);
    mReqChannelCount = popcount(channels);
+10 −8
Original line number Original line Diff line number Diff line
@@ -277,17 +277,17 @@ private:


    class ThreadBase : public Thread {
    class ThreadBase : public Thread {
    public:
    public:
        ThreadBase (const sp<AudioFlinger>& audioFlinger, int id, uint32_t device);
        virtual             ~ThreadBase();



        enum type {
        enum type_t {
            MIXER,              // Thread class is MixerThread
            MIXER,              // Thread class is MixerThread
            DIRECT,             // Thread class is DirectOutputThread
            DIRECT,             // Thread class is DirectOutputThread
            DUPLICATING,        // Thread class is DuplicatingThread
            DUPLICATING,        // Thread class is DuplicatingThread
            RECORD              // Thread class is RecordThread
            RECORD              // Thread class is RecordThread
        };
        };


        ThreadBase (const sp<AudioFlinger>& audioFlinger, int id, uint32_t device, type_t type);
        virtual             ~ThreadBase();

        status_t dumpBase(int fd, const Vector<String16>& args);
        status_t dumpBase(int fd, const Vector<String16>& args);
        status_t dumpEffectChains(int fd, const Vector<String16>& args);
        status_t dumpEffectChains(int fd, const Vector<String16>& args);


@@ -408,7 +408,7 @@ private:
        };
        };


        virtual     status_t    initCheck() const = 0;
        virtual     status_t    initCheck() const = 0;
                    int         type() const { return mType; }
                    type_t      type() const { return mType; }
                    uint32_t    sampleRate() const;
                    uint32_t    sampleRate() const;
                    int         channelCount() const;
                    int         channelCount() const;
                    audio_format_t format() const;
                    audio_format_t format() const;
@@ -530,7 +530,7 @@ private:
        friend class RecordThread;
        friend class RecordThread;
        friend class RecordTrack;
        friend class RecordTrack;


                    int                     mType;
                    const type_t            mType;
                    Condition               mWaitWorkCV;
                    Condition               mWaitWorkCV;
                    sp<AudioFlinger>        mAudioFlinger;
                    sp<AudioFlinger>        mAudioFlinger;
                    uint32_t                mSampleRate;
                    uint32_t                mSampleRate;
@@ -691,7 +691,8 @@ private:
            DuplicatingThread*          mSourceThread;
            DuplicatingThread*          mSourceThread;
        };  // end of OutputTrack
        };  // end of OutputTrack


        PlaybackThread (const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device);
        PlaybackThread (const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id,
                        uint32_t device, type_t type);
        virtual             ~PlaybackThread();
        virtual             ~PlaybackThread();


        virtual     status_t    dump(int fd, const Vector<String16>& args);
        virtual     status_t    dump(int fd, const Vector<String16>& args);
@@ -817,7 +818,8 @@ private:
        MixerThread (const sp<AudioFlinger>& audioFlinger,
        MixerThread (const sp<AudioFlinger>& audioFlinger,
                     AudioStreamOut* output,
                     AudioStreamOut* output,
                     int id,
                     int id,
                     uint32_t device);
                     uint32_t device,
                     type_t type = MIXER);
        virtual             ~MixerThread();
        virtual             ~MixerThread();


        // Thread virtuals
        // Thread virtuals