summaryrefslogtreecommitdiffstats
path: root/media/libmedia/AudioRecord.cpp
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2013-08-06 16:49:16 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-08-06 16:49:16 +0000
commit33f3177c08d238285b296d137e527ec99e34228f (patch)
tree92377e0ceaa8690090254769fe12db61db35d249 /media/libmedia/AudioRecord.cpp
parentb85187332e740be337ce2e3e0d8d21c5c8651bf8 (diff)
parent3151427b6b0adf99929433715bab6f1e505100c1 (diff)
downloadframeworks_av-33f3177c08d238285b296d137e527ec99e34228f.zip
frameworks_av-33f3177c08d238285b296d137e527ec99e34228f.tar.gz
frameworks_av-33f3177c08d238285b296d137e527ec99e34228f.tar.bz2
Merge "AudioRecord::openRecord_l use flags"
Diffstat (limited to 'media/libmedia/AudioRecord.cpp')
-rw-r--r--media/libmedia/AudioRecord.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp
index bc5ce51..b9a3b76 100644
--- a/media/libmedia/AudioRecord.cpp
+++ b/media/libmedia/AudioRecord.cpp
@@ -446,10 +446,22 @@ status_t AudioRecord::openRecord_l(
return NO_INIT;
}
+ IAudioFlinger::track_flags_t trackFlags = IAudioFlinger::TRACK_DEFAULT;
pid_t tid = -1;
- // FIXME see similar logic at AudioTrack for tid
- IAudioFlinger::track_flags_t trackFlags = IAudioFlinger::TRACK_DEFAULT;
+ // Client can only express a preference for FAST. Server will perform additional tests.
+ // The only supported use case for FAST is callback transfer mode.
+ if (flags & AUDIO_INPUT_FLAG_FAST) {
+ if ((mTransfer != TRANSFER_CALLBACK) || (mAudioRecordThread == 0)) {
+ ALOGW("AUDIO_INPUT_FLAG_FAST denied by client");
+ // once denied, do not request again if IAudioRecord is re-created
+ mFlags = (audio_input_flags_t) (flags & ~AUDIO_INPUT_FLAG_FAST);
+ } else {
+ trackFlags |= IAudioFlinger::TRACK_FAST;
+ tid = mAudioRecordThread->getTid();
+ }
+ }
+
int originalSessionId = mSessionId;
sp<IAudioRecord> record = audioFlinger->openRecord(input,
sampleRate, format,