From 74935e44734c1ec235c2b6677db3e0dbefa5ddb8 Mon Sep 17 00:00:00 2001 From: Glenn Kasten Date: Thu, 19 Dec 2013 08:56:45 -0800 Subject: Replace control block frameCount_ by explicit in/out parameter in IAudioFlinger::createTrack and IAudioFlinger::openRecord Change-Id: I09c644c80e92c8e744b1b99055988a2588b2a83d --- services/audioflinger/AudioFlinger.cpp | 4 ++-- services/audioflinger/AudioFlinger.h | 4 ++-- services/audioflinger/Threads.cpp | 10 ++++++++-- services/audioflinger/Threads.h | 4 ++-- services/audioflinger/Tracks.cpp | 5 ++--- 5 files changed, 16 insertions(+), 11 deletions(-) (limited to 'services') diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp index 443051c..b688c9e 100644 --- a/services/audioflinger/AudioFlinger.cpp +++ b/services/audioflinger/AudioFlinger.cpp @@ -481,7 +481,7 @@ sp AudioFlinger::createTrack( uint32_t sampleRate, audio_format_t format, audio_channel_mask_t channelMask, - size_t frameCount, + size_t *frameCount, IAudioFlinger::track_flags_t *flags, const sp& sharedBuffer, audio_io_handle_t output, @@ -1276,7 +1276,7 @@ sp AudioFlinger::openRecord( uint32_t sampleRate, audio_format_t format, audio_channel_mask_t channelMask, - size_t frameCount, + size_t *frameCount, IAudioFlinger::track_flags_t *flags, pid_t tid, int *sessionId, diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h index 066d5d5..bfb217f 100644 --- a/services/audioflinger/AudioFlinger.h +++ b/services/audioflinger/AudioFlinger.h @@ -102,7 +102,7 @@ public: uint32_t sampleRate, audio_format_t format, audio_channel_mask_t channelMask, - size_t frameCount, + size_t *pFrameCount, IAudioFlinger::track_flags_t *flags, const sp& sharedBuffer, audio_io_handle_t output, @@ -117,7 +117,7 @@ public: uint32_t sampleRate, audio_format_t format, audio_channel_mask_t channelMask, - size_t frameCount, + size_t *pFrameCount, IAudioFlinger::track_flags_t *flags, pid_t tid, int *sessionId, diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp index 35b8575..d28f9d9 100644 --- a/services/audioflinger/Threads.cpp +++ b/services/audioflinger/Threads.cpp @@ -1190,7 +1190,7 @@ sp AudioFlinger::PlaybackThread::createTrac uint32_t sampleRate, audio_format_t format, audio_channel_mask_t channelMask, - size_t frameCount, + size_t *pFrameCount, const sp& sharedBuffer, int sessionId, IAudioFlinger::track_flags_t *flags, @@ -1198,6 +1198,7 @@ sp AudioFlinger::PlaybackThread::createTrac int uid, status_t *status) { + size_t frameCount = *pFrameCount; sp track; status_t lStatus; @@ -1266,6 +1267,7 @@ sp AudioFlinger::PlaybackThread::createTrac } } } + *pFrameCount = frameCount; if (mType == DIRECT) { if ((format & AUDIO_FORMAT_MAIN_MASK) == AUDIO_FORMAT_PCM) { @@ -3037,10 +3039,12 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTrac // add frames already consumed but not yet released by the resampler // because mAudioTrackServerProxy->framesReady() will include these frames desiredFrames += mAudioMixer->getUnreleasedFrames(track->name()); +#if 0 // the minimum track buffer size is normally twice the number of frames necessary // to fill one buffer and the resampler should not leave more than one buffer worth // of unreleased frames after each pass, but just in case... ALOG_ASSERT(desiredFrames <= cblk->frameCount_); +#endif } uint32_t minFrames = 1; if ((track->sharedBuffer() == 0) && !track->isStopped() && !track->isPausing() && @@ -4778,13 +4782,14 @@ sp AudioFlinger::RecordThread::createRe uint32_t sampleRate, audio_format_t format, audio_channel_mask_t channelMask, - size_t frameCount, + size_t *pFrameCount, int sessionId, int uid, IAudioFlinger::track_flags_t *flags, pid_t tid, status_t *status) { + size_t frameCount = *pFrameCount; sp track; status_t lStatus; @@ -4843,6 +4848,7 @@ sp AudioFlinger::RecordThread::createRe } } } + *pFrameCount = frameCount; // FIXME use flags and tid similar to createTrack_l() diff --git a/services/audioflinger/Threads.h b/services/audioflinger/Threads.h index 6b81c38..f8a7a98 100644 --- a/services/audioflinger/Threads.h +++ b/services/audioflinger/Threads.h @@ -422,7 +422,7 @@ public: uint32_t sampleRate, audio_format_t format, audio_channel_mask_t channelMask, - size_t frameCount, + size_t *pFrameCount, const sp& sharedBuffer, int sessionId, IAudioFlinger::track_flags_t *flags, @@ -880,7 +880,7 @@ public: uint32_t sampleRate, audio_format_t format, audio_channel_mask_t channelMask, - size_t frameCount, + size_t *pFrameCount, int sessionId, int uid, IAudioFlinger::track_flags_t *flags, diff --git a/services/audioflinger/Tracks.cpp b/services/audioflinger/Tracks.cpp index 53196c8..f84ebb9 100644 --- a/services/audioflinger/Tracks.cpp +++ b/services/audioflinger/Tracks.cpp @@ -133,7 +133,6 @@ AudioFlinger::ThreadBase::TrackBase::TrackBase( if (mCblk != NULL) { new(mCblk) audio_track_cblk_t(); // clear all buffers - mCblk->frameCount_ = frameCount; if (sharedBuffer == 0) { mBuffer = (char*)mCblk + sizeof(audio_track_cblk_t); memset(mBuffer, 0, bufferSize); @@ -1516,9 +1515,9 @@ AudioFlinger::PlaybackThread::OutputTrack::OutputTrack( mOutBuffer.frameCount = 0; playbackThread->mTracks.add(this); ALOGV("OutputTrack constructor mCblk %p, mBuffer %p, " - "mCblk->frameCount_ %u, mChannelMask 0x%08x", + "frameCount %u, mChannelMask 0x%08x", mCblk, mBuffer, - mCblk->frameCount_, mChannelMask); + frameCount, mChannelMask); // since client and server are in the same process, // the buffer has the same virtual address on both sides mClientProxy = new AudioTrackClientProxy(mCblk, mBuffer, mFrameCount, mFrameSize); -- cgit v1.1