From b7fbf7ecc6b034243ec64f79f3113675b5e3c941 Mon Sep 17 00:00:00 2001 From: Glenn Kasten Date: Wed, 18 Mar 2015 12:57:28 -0700 Subject: AudioRecord TRANSFER_OBTAIN can be used with FAST flag Change-Id: I001ba1a88150dddf79d99baf5927f31799745eef --- media/libmedia/AudioRecord.cpp | 9 ++++++--- services/audioflinger/Threads.cpp | 5 +++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp index 1a65ee8..355baf0 100644 --- a/media/libmedia/AudioRecord.cpp +++ b/media/libmedia/AudioRecord.cpp @@ -439,9 +439,12 @@ status_t AudioRecord::openRecord_l(size_t epoch) } // Client can only express a preference for FAST. Server will perform additional tests. - if ((mFlags & AUDIO_INPUT_FLAG_FAST) && !( - // use case: callback transfer mode - (mTransfer == TRANSFER_CALLBACK) && + if ((mFlags & AUDIO_INPUT_FLAG_FAST) && !(( + // either of these use cases: + // use case 1: callback transfer mode + (mTransfer == TRANSFER_CALLBACK) || + // use case 2: obtain/release mode + (mTransfer == TRANSFER_OBTAIN)) && // matching sample rate (mSampleRate == afSampleRate))) { ALOGW("AUDIO_INPUT_FLAG_FAST denied by client; transfer %d, track %u Hz, primary %u Hz", diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp index d0b825c..48bb21f 100644 --- a/services/audioflinger/Threads.cpp +++ b/services/audioflinger/Threads.cpp @@ -5867,8 +5867,9 @@ sp AudioFlinger::RecordThread::createRe // client expresses a preference for FAST, but we get the final say if (*flags & IAudioFlinger::TRACK_FAST) { if ( - // use case: callback handler - (tid != -1) && + // we formerly checked for a callback handler (non-0 tid), + // but that is no longer required for TRANSFER_OBTAIN mode + // // frame count is not specified, or is exactly the pipe depth ((frameCount == 0) || (frameCount == mPipeFramesP2)) && // PCM data -- cgit v1.1