Loading services/audioflinger/AudioFlinger.cpp +15 −14 Original line number Diff line number Diff line Loading @@ -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), mType(type), mAudioFlinger(audioFlinger), mSampleRate(0), mFrameCount(0), mChannelCount(0), mFrameSize(1), mFormat(AUDIO_FORMAT_INVALID), mStandby(false), mId(id), mExiting(false), mDevice(device) Loading Loading @@ -1372,8 +1374,9 @@ void AudioFlinger::ThreadBase::checkSuspendOnEffectEnabled_l(const sp<EffectModu AudioFlinger::PlaybackThread::PlaybackThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device) : ThreadBase(audioFlinger, id, device), uint32_t device, type_t type) : ThreadBase(audioFlinger, id, device, type), mMixBuffer(NULL), mSuspended(0), mBytesWritten(0), mOutput(output), mLastWriteTime(0), mNumWrites(0), mNumDelayedWrites(0), mInWrite(false) { Loading Loading @@ -1845,11 +1848,11 @@ uint32_t AudioFlinger::PlaybackThread::activeSleepTimeUs() // ---------------------------------------------------------------------------- AudioFlinger::MixerThread::MixerThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device) : PlaybackThread(audioFlinger, output, id, device), AudioFlinger::MixerThread::MixerThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device, type_t type) : PlaybackThread(audioFlinger, output, id, device, type), mAudioMixer(NULL), mPrevMixerStatus(MIXER_IDLE) { mType = ThreadBase::MIXER; mAudioMixer = new AudioMixer(mFrameCount, mSampleRate); // FIXME - Current mixer implementation only supports stereo output Loading Loading @@ -2515,9 +2518,8 @@ uint32_t AudioFlinger::MixerThread::suspendSleepTimeUs() // ---------------------------------------------------------------------------- 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() Loading Loading @@ -2994,10 +2996,11 @@ uint32_t AudioFlinger::DirectOutputThread::suspendSleepTimeUs() // ---------------------------------------------------------------------------- AudioFlinger::DuplicatingThread::DuplicatingThread(const sp<AudioFlinger>& audioFlinger, AudioFlinger::MixerThread* mainThread, int id) : MixerThread(audioFlinger, mainThread->getOutput(), id, mainThread->device()), mWaitTimeMs(UINT_MAX) AudioFlinger::DuplicatingThread::DuplicatingThread(const sp<AudioFlinger>& audioFlinger, AudioFlinger::MixerThread* mainThread, int id) : MixerThread(audioFlinger, mainThread->getOutput(), id, mainThread->device(), DUPLICATING), mWaitTimeMs(UINT_MAX) { mType = ThreadBase::DUPLICATING; addOutputTrack(mainThread); } Loading Loading @@ -4267,11 +4270,9 @@ AudioFlinger::RecordThread::RecordThread(const sp<AudioFlinger>& audioFlinger, uint32_t channels, int id, uint32_t device) : ThreadBase(audioFlinger, id, device), ThreadBase(audioFlinger, id, device, RECORD), mInput(input), mTrack(NULL), mResampler(NULL), mRsmpOutBuffer(NULL), mRsmpInBuffer(NULL) { mType = ThreadBase::RECORD; snprintf(mName, kNameLength, "AudioIn_%d", id); mReqChannelCount = popcount(channels); Loading services/audioflinger/AudioFlinger.h +10 −8 Original line number Diff line number Diff line Loading @@ -277,17 +277,17 @@ private: class ThreadBase : public Thread { public: ThreadBase (const sp<AudioFlinger>& audioFlinger, int id, uint32_t device); virtual ~ThreadBase(); enum type { enum type_t { MIXER, // Thread class is MixerThread DIRECT, // Thread class is DirectOutputThread DUPLICATING, // Thread class is DuplicatingThread 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 dumpEffectChains(int fd, const Vector<String16>& args); Loading Loading @@ -408,7 +408,7 @@ private: }; virtual status_t initCheck() const = 0; int type() const { return mType; } type_t type() const { return mType; } uint32_t sampleRate() const; int channelCount() const; audio_format_t format() const; Loading Loading @@ -530,7 +530,7 @@ private: friend class RecordThread; friend class RecordTrack; int mType; const type_t mType; Condition mWaitWorkCV; sp<AudioFlinger> mAudioFlinger; uint32_t mSampleRate; Loading Loading @@ -691,7 +691,8 @@ private: DuplicatingThread* mSourceThread; }; // 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 status_t dump(int fd, const Vector<String16>& args); Loading Loading @@ -817,7 +818,8 @@ private: MixerThread (const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device); uint32_t device, type_t type = MIXER); virtual ~MixerThread(); // Thread virtuals Loading Loading
services/audioflinger/AudioFlinger.cpp +15 −14 Original line number Diff line number Diff line Loading @@ -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), mType(type), mAudioFlinger(audioFlinger), mSampleRate(0), mFrameCount(0), mChannelCount(0), mFrameSize(1), mFormat(AUDIO_FORMAT_INVALID), mStandby(false), mId(id), mExiting(false), mDevice(device) Loading Loading @@ -1372,8 +1374,9 @@ void AudioFlinger::ThreadBase::checkSuspendOnEffectEnabled_l(const sp<EffectModu AudioFlinger::PlaybackThread::PlaybackThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device) : ThreadBase(audioFlinger, id, device), uint32_t device, type_t type) : ThreadBase(audioFlinger, id, device, type), mMixBuffer(NULL), mSuspended(0), mBytesWritten(0), mOutput(output), mLastWriteTime(0), mNumWrites(0), mNumDelayedWrites(0), mInWrite(false) { Loading Loading @@ -1845,11 +1848,11 @@ uint32_t AudioFlinger::PlaybackThread::activeSleepTimeUs() // ---------------------------------------------------------------------------- AudioFlinger::MixerThread::MixerThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device) : PlaybackThread(audioFlinger, output, id, device), AudioFlinger::MixerThread::MixerThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device, type_t type) : PlaybackThread(audioFlinger, output, id, device, type), mAudioMixer(NULL), mPrevMixerStatus(MIXER_IDLE) { mType = ThreadBase::MIXER; mAudioMixer = new AudioMixer(mFrameCount, mSampleRate); // FIXME - Current mixer implementation only supports stereo output Loading Loading @@ -2515,9 +2518,8 @@ uint32_t AudioFlinger::MixerThread::suspendSleepTimeUs() // ---------------------------------------------------------------------------- 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() Loading Loading @@ -2994,10 +2996,11 @@ uint32_t AudioFlinger::DirectOutputThread::suspendSleepTimeUs() // ---------------------------------------------------------------------------- AudioFlinger::DuplicatingThread::DuplicatingThread(const sp<AudioFlinger>& audioFlinger, AudioFlinger::MixerThread* mainThread, int id) : MixerThread(audioFlinger, mainThread->getOutput(), id, mainThread->device()), mWaitTimeMs(UINT_MAX) AudioFlinger::DuplicatingThread::DuplicatingThread(const sp<AudioFlinger>& audioFlinger, AudioFlinger::MixerThread* mainThread, int id) : MixerThread(audioFlinger, mainThread->getOutput(), id, mainThread->device(), DUPLICATING), mWaitTimeMs(UINT_MAX) { mType = ThreadBase::DUPLICATING; addOutputTrack(mainThread); } Loading Loading @@ -4267,11 +4270,9 @@ AudioFlinger::RecordThread::RecordThread(const sp<AudioFlinger>& audioFlinger, uint32_t channels, int id, uint32_t device) : ThreadBase(audioFlinger, id, device), ThreadBase(audioFlinger, id, device, RECORD), mInput(input), mTrack(NULL), mResampler(NULL), mRsmpOutBuffer(NULL), mRsmpInBuffer(NULL) { mType = ThreadBase::RECORD; snprintf(mName, kNameLength, "AudioIn_%d", id); mReqChannelCount = popcount(channels); Loading
services/audioflinger/AudioFlinger.h +10 −8 Original line number Diff line number Diff line Loading @@ -277,17 +277,17 @@ private: class ThreadBase : public Thread { public: ThreadBase (const sp<AudioFlinger>& audioFlinger, int id, uint32_t device); virtual ~ThreadBase(); enum type { enum type_t { MIXER, // Thread class is MixerThread DIRECT, // Thread class is DirectOutputThread DUPLICATING, // Thread class is DuplicatingThread 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 dumpEffectChains(int fd, const Vector<String16>& args); Loading Loading @@ -408,7 +408,7 @@ private: }; virtual status_t initCheck() const = 0; int type() const { return mType; } type_t type() const { return mType; } uint32_t sampleRate() const; int channelCount() const; audio_format_t format() const; Loading Loading @@ -530,7 +530,7 @@ private: friend class RecordThread; friend class RecordTrack; int mType; const type_t mType; Condition mWaitWorkCV; sp<AudioFlinger> mAudioFlinger; uint32_t mSampleRate; Loading Loading @@ -691,7 +691,8 @@ private: DuplicatingThread* mSourceThread; }; // 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 status_t dump(int fd, const Vector<String16>& args); Loading Loading @@ -817,7 +818,8 @@ private: MixerThread (const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device); uint32_t device, type_t type = MIXER); virtual ~MixerThread(); // Thread virtuals Loading