Adding build switch for Opus that supports 120ms ptime.

BUG=webrtc:7097

TEST=Set "ptime=120", try WebRTC calls over custom build Chromium with and without Opus 120ms. Try both Chromium w <-> Chromium w and Chromium w <-> Chromium w/o

Review-Url: https://codereview.webrtc.org/2668633004
Cr-Commit-Position: refs/heads/master@{#16408}
diff --git a/webrtc/modules/audio_coding/BUILD.gn b/webrtc/modules/audio_coding/BUILD.gn
index 1d3c2d1..59c166d 100644
--- a/webrtc/modules/audio_coding/BUILD.gn
+++ b/webrtc/modules/audio_coding/BUILD.gn
@@ -872,6 +872,8 @@
     "codecs/opus/opus_interface.h",
   ]
 
+  defines = audio_coding_defines
+
   if (rtc_build_opus) {
     public_deps = [
       rtc_opus_dir,
diff --git a/webrtc/modules/audio_coding/acm2/acm_codec_database.cc b/webrtc/modules/audio_coding/acm2/acm_codec_database.cc
index 4f5b263..0fae75b 100644
--- a/webrtc/modules/audio_coding/acm2/acm_codec_database.cc
+++ b/webrtc/modules/audio_coding/acm2/acm_codec_database.cc
@@ -151,8 +151,12 @@
     // Opus supports frames shorter than 10ms,
     // but it doesn't help us to use them.
     // Mono and stereo.
+#if WEBRTC_OPUS_SUPPORT_120MS_PTIME
+    {5, {480, 960, 1920, 2880, 5760}, 0, 2},
+#else
     {4, {480, 960, 1920, 2880}, 0, 2},
 #endif
+#endif
     // Comfort noise for three different sampling frequencies.
     {1, {240}, 240, 1},
     {1, {480}, 480, 1},
diff --git a/webrtc/modules/audio_coding/audio_coding.gni b/webrtc/modules/audio_coding/audio_coding.gni
index 0f3a75f..41dcf00 100644
--- a/webrtc/modules/audio_coding/audio_coding.gni
+++ b/webrtc/modules/audio_coding/audio_coding.gni
@@ -15,6 +15,11 @@
 if (rtc_include_opus) {
   audio_codec_defines += [ "WEBRTC_CODEC_OPUS" ]
 }
+if (rtc_opus_support_120ms_ptime) {
+  audio_codec_defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
+} else {
+  audio_codec_defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
+}
 if (!build_with_mozilla) {
   if (current_cpu == "arm") {
     audio_codec_defines += [ "WEBRTC_CODEC_ISACFX" ]
diff --git a/webrtc/modules/audio_coding/codecs/opus/opus_interface.c b/webrtc/modules/audio_coding/codecs/opus/opus_interface.c
index e2b4fdb..d544d85 100644
--- a/webrtc/modules/audio_coding/codecs/opus/opus_interface.c
+++ b/webrtc/modules/audio_coding/codecs/opus/opus_interface.c
@@ -17,8 +17,13 @@
 #include <string.h>
 
 enum {
+#if WEBRTC_OPUS_SUPPORT_120MS_PTIME
+  /* Maximum supported frame size in WebRTC is 120 ms. */
+  kWebRtcOpusMaxEncodeFrameSizeMs = 120,
+#else
   /* Maximum supported frame size in WebRTC is 60 ms. */
   kWebRtcOpusMaxEncodeFrameSizeMs = 60,
+#endif
 
   /* The format allows up to 120 ms frames. Since we don't control the other
    * side, we must allow for packets of that size. NetEq is currently limited