Loading services/audioflinger/AudioFlinger.cpp +13 −6 Original line number Diff line number Diff line Loading @@ -1816,6 +1816,18 @@ audio_stream_t* AudioFlinger::PlaybackThread::stream() return &mOutput->stream->common; } uint32_t AudioFlinger::PlaybackThread::activeSleepTimeUs() { // A2DP output latency is not due only to buffering capacity. It also reflects encoding, // decoding and transfer time. So sleeping for half of the latency would likely cause // underruns if (audio_is_a2dp_device((audio_devices_t)mDevice)) { return (uint32_t)((uint32_t)((mFrameCount * 1000) / mSampleRate) * 1000); } else { return (uint32_t)(mOutput->stream->get_latency(mOutput->stream) * 1000) / 2; } } // ---------------------------------------------------------------------------- AudioFlinger::MixerThread::MixerThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device) Loading Loading @@ -2422,11 +2434,6 @@ status_t AudioFlinger::MixerThread::dumpInternals(int fd, const Vector<String16> return NO_ERROR; } uint32_t AudioFlinger::MixerThread::activeSleepTimeUs() { return (uint32_t)(mOutput->stream->get_latency(mOutput->stream) * 1000) / 2; } uint32_t AudioFlinger::MixerThread::idleSleepTimeUs() { return (uint32_t)(((mFrameCount * 1000) / mSampleRate) * 1000) / 2; Loading Loading @@ -2893,7 +2900,7 @@ uint32_t AudioFlinger::DirectOutputThread::activeSleepTimeUs() { uint32_t time; if (audio_is_linear_pcm(mFormat)) { time = (uint32_t)(mOutput->stream->get_latency(mOutput->stream) * 1000) / 2; time = PlaybackThread::activeSleepTimeUs(); } else { time = 10000; } Loading services/audioflinger/AudioFlinger.h +1 −2 Original line number Diff line number Diff line Loading @@ -776,7 +776,7 @@ private: virtual int getTrackName_l() = 0; virtual void deleteTrackName_l(int name) = 0; virtual uint32_t activeSleepTimeUs() = 0; virtual uint32_t activeSleepTimeUs(); virtual uint32_t idleSleepTimeUs() = 0; virtual uint32_t suspendSleepTimeUs() = 0; Loading Loading @@ -833,7 +833,6 @@ private: Vector< sp<Track> > *tracksToRemove); virtual int getTrackName_l(); virtual void deleteTrackName_l(int name); virtual uint32_t activeSleepTimeUs(); virtual uint32_t idleSleepTimeUs(); virtual uint32_t suspendSleepTimeUs(); Loading Loading
services/audioflinger/AudioFlinger.cpp +13 −6 Original line number Diff line number Diff line Loading @@ -1816,6 +1816,18 @@ audio_stream_t* AudioFlinger::PlaybackThread::stream() return &mOutput->stream->common; } uint32_t AudioFlinger::PlaybackThread::activeSleepTimeUs() { // A2DP output latency is not due only to buffering capacity. It also reflects encoding, // decoding and transfer time. So sleeping for half of the latency would likely cause // underruns if (audio_is_a2dp_device((audio_devices_t)mDevice)) { return (uint32_t)((uint32_t)((mFrameCount * 1000) / mSampleRate) * 1000); } else { return (uint32_t)(mOutput->stream->get_latency(mOutput->stream) * 1000) / 2; } } // ---------------------------------------------------------------------------- AudioFlinger::MixerThread::MixerThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device) Loading Loading @@ -2422,11 +2434,6 @@ status_t AudioFlinger::MixerThread::dumpInternals(int fd, const Vector<String16> return NO_ERROR; } uint32_t AudioFlinger::MixerThread::activeSleepTimeUs() { return (uint32_t)(mOutput->stream->get_latency(mOutput->stream) * 1000) / 2; } uint32_t AudioFlinger::MixerThread::idleSleepTimeUs() { return (uint32_t)(((mFrameCount * 1000) / mSampleRate) * 1000) / 2; Loading Loading @@ -2893,7 +2900,7 @@ uint32_t AudioFlinger::DirectOutputThread::activeSleepTimeUs() { uint32_t time; if (audio_is_linear_pcm(mFormat)) { time = (uint32_t)(mOutput->stream->get_latency(mOutput->stream) * 1000) / 2; time = PlaybackThread::activeSleepTimeUs(); } else { time = 10000; } Loading
services/audioflinger/AudioFlinger.h +1 −2 Original line number Diff line number Diff line Loading @@ -776,7 +776,7 @@ private: virtual int getTrackName_l() = 0; virtual void deleteTrackName_l(int name) = 0; virtual uint32_t activeSleepTimeUs() = 0; virtual uint32_t activeSleepTimeUs(); virtual uint32_t idleSleepTimeUs() = 0; virtual uint32_t suspendSleepTimeUs() = 0; Loading Loading @@ -833,7 +833,6 @@ private: Vector< sp<Track> > *tracksToRemove); virtual int getTrackName_l(); virtual void deleteTrackName_l(int name); virtual uint32_t activeSleepTimeUs(); virtual uint32_t idleSleepTimeUs(); virtual uint32_t suspendSleepTimeUs(); Loading