rtp_encode: Unify the encoder configs somewhat

For uniformity. Uniformity is nice.

Bug: webrtc:2692
Change-Id: Id85e54fa31bf3cc79e73a72805e57d5e3164252f
Reviewed-on: https://webrtc-review.googlesource.com/27400
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21135}
diff --git a/modules/audio_coding/neteq/tools/rtp_encode.cc b/modules/audio_coding/neteq/tools/rtp_encode.cc
index ddf6ed8..ce07199 100644
--- a/modules/audio_coding/neteq/tools/rtp_encode.cc
+++ b/modules/audio_coding/neteq/tools/rtp_encode.cc
@@ -163,9 +163,16 @@
   }
 }
 
-AudioEncoderL16::Config Pcm16bConfig(CodecType codec_type) {
-  AudioEncoderL16::Config config;
+template <typename T>
+typename T::Config GetCodecConfig() {
+  typename T::Config config;
   SetFrameLenIfFlagIsPositive(&config.frame_size_ms);
+  RTC_CHECK(config.IsOk());
+  return config;
+}
+
+AudioEncoderL16::Config Pcm16bConfig(CodecType codec_type) {
+  auto config = GetCodecConfig<AudioEncoderL16>();
   switch (codec_type) {
     case CodecType::kPcm16b8:
       config.sample_rate_hz = 8000;
@@ -189,20 +196,18 @@
                                             int payload_type) {
   switch (codec_type) {
     case CodecType::kOpus: {
-      AudioEncoderOpusConfig config;
+      AudioEncoderOpus::Config config = GetCodecConfig<AudioEncoderOpus>();
       if (FLAG_bitrate > 0) {
         config.bitrate_bps = FLAG_bitrate;
       }
       config.dtx_enabled = FLAG_dtx;
-      SetFrameLenIfFlagIsPositive(&config.frame_size_ms);
       RTC_CHECK(config.IsOk());
       return AudioEncoderOpus::MakeAudioEncoder(config, payload_type);
     }
 
     case CodecType::kPcmU:
     case CodecType::kPcmA: {
-      AudioEncoderG711::Config config;
-      SetFrameLenIfFlagIsPositive(&config.frame_size_ms);
+      AudioEncoderG711::Config config = GetCodecConfig<AudioEncoderG711>();
       config.type = codec_type == CodecType::kPcmU
                         ? AudioEncoderG711::Config::Type::kPcmU
                         : AudioEncoderG711::Config::Type::kPcmA;
@@ -211,10 +216,8 @@
     }
 
     case CodecType::kG722: {
-      AudioEncoderG722Config config;
-      SetFrameLenIfFlagIsPositive(&config.frame_size_ms);
-      RTC_CHECK(config.IsOk());
-      return AudioEncoderG722::MakeAudioEncoder(config, payload_type);
+      return AudioEncoderG722::MakeAudioEncoder(
+          GetCodecConfig<AudioEncoderG722>(), payload_type);
     }
 
     case CodecType::kPcm16b8:
@@ -226,17 +229,13 @@
     }
 
     case CodecType::kIlbc: {
-      AudioEncoderIlbcConfig config;
-      SetFrameLenIfFlagIsPositive(&config.frame_size_ms);
-      RTC_CHECK(config.IsOk());
-      return AudioEncoderIlbc::MakeAudioEncoder(config, payload_type);
+      return AudioEncoderIlbc::MakeAudioEncoder(
+          GetCodecConfig<AudioEncoderIlbc>(), payload_type);
     }
 
     case CodecType::kIsac: {
-      AudioEncoderIsac::Config config;
-      SetFrameLenIfFlagIsPositive(&config.frame_size_ms);
-      RTC_CHECK(config.IsOk());
-      return AudioEncoderIsac::MakeAudioEncoder(config, payload_type);
+      return AudioEncoderIsac::MakeAudioEncoder(
+          GetCodecConfig<AudioEncoderIsac>(), payload_type);
     }
   }
   RTC_NOTREACHED();