Add an option to avoid early initialization of audio capture

This can cause issues on Android S if this initialization happens when
the app doesn't have permission to access the microphone.

Bug: b/197461765
Change-Id: Iebccff9d15f5bb12a7b2c78e1c373e379b37a127
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/246104
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Xavier Lepaul‎ <xalep@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35689}
diff --git a/sdk/media_constraints.cc b/sdk/media_constraints.cc
index 08bd9dc..3cc08b2 100644
--- a/sdk/media_constraints.cc
+++ b/sdk/media_constraints.cc
@@ -106,6 +106,8 @@
 const char MediaConstraints::kAudioMirroring[] = "googAudioMirroring";
 const char MediaConstraints::kAudioNetworkAdaptorConfig[] =
     "googAudioNetworkAdaptorConfig";
+const char MediaConstraints::kInitAudioRecordingOnSend[] =
+    "InitAudioRecordingOnSend";
 
 // Constraint keys for CreateOffer / CreateAnswer defined in W3C specification.
 const char MediaConstraints::kOfferToReceiveAudio[] = "OfferToReceiveAudio";
@@ -211,6 +213,9 @@
   if (options->audio_network_adaptor_config) {
     options->audio_network_adaptor = true;
   }
+  ConstraintToOptional<bool>(constraints,
+                             MediaConstraints::kInitAudioRecordingOnSend,
+                             &options->init_recording_on_send);
 }
 
 bool CopyConstraintsIntoOfferAnswerOptions(
diff --git a/sdk/media_constraints.h b/sdk/media_constraints.h
index fd95a60..f41ad25 100644
--- a/sdk/media_constraints.h
+++ b/sdk/media_constraints.h
@@ -67,7 +67,8 @@
   static const char kTypingNoiseDetection[];  // googTypingNoiseDetection
   static const char kAudioMirroring[];        // googAudioMirroring
   static const char
-      kAudioNetworkAdaptorConfig[];  // goodAudioNetworkAdaptorConfig
+      kAudioNetworkAdaptorConfig[];  // googAudioNetworkAdaptorConfig
+  static const char kInitAudioRecordingOnSend[];  // InitAudioRecordingOnSend;
 
   // Constraint keys for CreateOffer / CreateAnswer
   // Specified by the W3C PeerConnection spec