diff options
author | Glenn Kasten <gkasten@google.com> | 2013-08-06 16:49:16 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-08-06 16:49:16 +0000 |
commit | 33f3177c08d238285b296d137e527ec99e34228f (patch) | |
tree | 92377e0ceaa8690090254769fe12db61db35d249 /media/libmedia/AudioRecord.cpp | |
parent | b85187332e740be337ce2e3e0d8d21c5c8651bf8 (diff) | |
parent | 3151427b6b0adf99929433715bab6f1e505100c1 (diff) | |
download | frameworks_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.cpp | 16 |
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, |