Merge "AudioRecord::set and constructor now take flags"
diff --git a/include/media/AudioRecord.h b/include/media/AudioRecord.h
index 8b7f20c..329910e 100644
--- a/include/media/AudioRecord.h
+++ b/include/media/AudioRecord.h
@@ -143,6 +143,7 @@
      *                     frames are ready in record track output buffer.
      * sessionId:          Not yet supported.
      * transferType:       How data is transferred from AudioRecord.
+     * flags:              See comments on audio_input_flags_t in <system/audio.h>
      * threadCanCallJava:  Not present in parameter list, and so is fixed at false.
      */
 
@@ -155,7 +156,8 @@
                                     void* user = NULL,
                                     int notificationFrames = 0,
                                     int sessionId = 0,
-                                    transfer_type transferType = TRANSFER_DEFAULT);
+                                    transfer_type transferType = TRANSFER_DEFAULT,
+                                    audio_input_flags_t flags = AUDIO_INPUT_FLAG_NONE);
 
     /* Terminates the AudioRecord and unregisters it from AudioFlinger.
      * Also destroys all resources associated with the AudioRecord.
@@ -187,7 +189,8 @@
                             int notificationFrames = 0,
                             bool threadCanCallJava = false,
                             int sessionId = 0,
-                            transfer_type transferType = TRANSFER_DEFAULT);
+                            transfer_type transferType = TRANSFER_DEFAULT,
+                            audio_input_flags_t flags = AUDIO_INPUT_FLAG_NONE);
 
     /* Result of constructing the AudioRecord. This must be checked
      * before using any AudioRecord API (except for set()), because using
@@ -468,6 +471,7 @@
     audio_source_t          mInputSource;
     uint32_t                mLatency;           // in ms
     audio_channel_mask_t    mChannelMask;
+    audio_input_flags_t     mFlags;
     int                     mSessionId;
     transfer_type           mTransfer;
 
diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp
index d88c1ed..f039ec2 100644
--- a/media/libmedia/AudioRecord.cpp
+++ b/media/libmedia/AudioRecord.cpp
@@ -86,7 +86,8 @@
         void* user,
         int notificationFrames,
         int sessionId,
-        transfer_type transferType)
+        transfer_type transferType,
+        audio_input_flags_t flags)
     : mStatus(NO_INIT), mSessionId(0),
       mPreviousPriority(ANDROID_PRIORITY_NORMAL),
       mPreviousSchedulingGroup(SP_DEFAULT),
@@ -128,7 +129,8 @@
         int notificationFrames,
         bool threadCanCallJava,
         int sessionId,
-        transfer_type transferType)
+        transfer_type transferType,
+        audio_input_flags_t flags)
 {
     switch (transferType) {
     case TRANSFER_DEFAULT:
@@ -215,6 +217,8 @@
     }
     ALOGV("set(): mSessionId %d", mSessionId);
 
+    mFlags = flags;
+
     audio_io_handle_t input = AudioSystem::getInput(inputSource,
                                                     sampleRate,
                                                     format,