summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2015-03-18 12:57:28 -0700
committerGlenn Kasten <gkasten@google.com>2015-03-23 14:50:42 -0700
commitb7fbf7ecc6b034243ec64f79f3113675b5e3c941 (patch)
treec90e057b2756c80dd371adc82e5431bb6e044236
parent4c36d6f48f4eecacc148317f775f65961a4f03d2 (diff)
downloadframeworks_av-b7fbf7ecc6b034243ec64f79f3113675b5e3c941.zip
frameworks_av-b7fbf7ecc6b034243ec64f79f3113675b5e3c941.tar.gz
frameworks_av-b7fbf7ecc6b034243ec64f79f3113675b5e3c941.tar.bz2
AudioRecord TRANSFER_OBTAIN can be used with FAST flag
Change-Id: I001ba1a88150dddf79d99baf5927f31799745eef
-rw-r--r--media/libmedia/AudioRecord.cpp9
-rw-r--r--services/audioflinger/Threads.cpp5
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::RecordTrack> 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