diff options
Diffstat (limited to 'media/libmedia/AudioTrack.cpp')
| -rw-r--r-- | media/libmedia/AudioTrack.cpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp index 048be1d..bafde3a 100644 --- a/media/libmedia/AudioTrack.cpp +++ b/media/libmedia/AudioTrack.cpp @@ -104,9 +104,10 @@ AudioTrack::AudioTrack( { mStatus = set(streamType, sampleRate, format, channelMask, frameCount, flags, cbf, user, notificationFrames, - 0, false, sessionId); + 0 /*sharedBuffer*/, false /*threadCanCallJava*/, sessionId); } +// DEPRECATED AudioTrack::AudioTrack( int streamType, uint32_t sampleRate, @@ -124,7 +125,7 @@ AudioTrack::AudioTrack( { mStatus = set((audio_stream_type_t)streamType, sampleRate, (audio_format_t)format, channelMask, frameCount, (audio_policy_output_flags_t)flags, cbf, user, notificationFrames, - 0, false, sessionId); + 0 /*sharedBuffer*/, false /*threadCanCallJava*/, sessionId); } AudioTrack::AudioTrack( @@ -144,8 +145,8 @@ AudioTrack::AudioTrack( mPreviousSchedulingGroup(ANDROID_TGROUP_DEFAULT) { mStatus = set(streamType, sampleRate, format, channelMask, - 0, flags, cbf, user, notificationFrames, - sharedBuffer, false, sessionId); + 0 /*frameCount*/, flags, cbf, user, notificationFrames, + sharedBuffer, false /*threadCanCallJava*/, sessionId); } AudioTrack::~AudioTrack() @@ -194,6 +195,7 @@ status_t AudioTrack::set( if (AudioSystem::getOutputSamplingRate(&afSampleRate, streamType) != NO_ERROR) { return NO_INIT; } + uint32_t afLatency; if (AudioSystem::getOutputLatency(&afLatency, streamType) != NO_ERROR) { return NO_INIT; @@ -203,9 +205,11 @@ status_t AudioTrack::set( if (streamType == AUDIO_STREAM_DEFAULT) { streamType = AUDIO_STREAM_MUSIC; } + if (sampleRate == 0) { sampleRate = afSampleRate; } + // these below should probably come from the audioFlinger too... if (format == AUDIO_FORMAT_DEFAULT) { format = AUDIO_FORMAT_PCM_16_BIT; @@ -257,8 +261,7 @@ status_t AudioTrack::set( frameCount, flags, sharedBuffer, - output, - true); + output); if (status != NO_ERROR) { return status; @@ -737,8 +740,7 @@ status_t AudioTrack::createTrack_l( int frameCount, audio_policy_output_flags_t flags, const sp<IMemory>& sharedBuffer, - audio_io_handle_t output, - bool enforceFrameCount) + audio_io_handle_t output) { status_t status; const sp<IAudioFlinger>& audioFlinger = AudioSystem::get_audio_flinger(); @@ -785,7 +787,8 @@ status_t AudioTrack::createTrack_l( mNotificationFramesAct = frameCount/2; } if (frameCount < minFrameCount) { - ALOGW_IF(enforceFrameCount, "Minimum buffer size corrected from %d to %d", + // not ALOGW because it happens all the time when playing key clicks over A2DP + ALOGV("Minimum buffer size corrected from %d to %d", frameCount, minFrameCount); frameCount = minFrameCount; } @@ -800,16 +803,19 @@ status_t AudioTrack::createTrack_l( } } + IAudioFlinger::track_flags_t trackFlags = IAudioFlinger::TRACK_DEFAULT; + if (mIsTimed) { + trackFlags |= IAudioFlinger::TRACK_TIMED; + } sp<IAudioTrack> track = audioFlinger->createTrack(getpid(), streamType, sampleRate, format, channelMask, frameCount, - ((uint16_t)flags) << 16, + trackFlags, sharedBuffer, output, - mIsTimed, &mSessionId, &status); @@ -1245,8 +1251,7 @@ status_t AudioTrack::restoreTrack_l(audio_track_cblk_t*& cblk, bool fromStart) mFrameCount, mFlags, mSharedBuffer, - getOutput_l(), - false); + getOutput_l()); if (result == NO_ERROR) { uint32_t user = cblk->user; |
