Opus implementation of the AudioEncoderFactoryTemplate API

This was previously reverted, because external projects were using the
internal webrtc::AudioEncoderOpus class and broke when it was renamed.
This re-land avoids renaming it immediately, to give those projects
time to adapt. It also has to revert some of the changes I had made to the
Config struct, since that was also used by the same external projects.

BUG=webrtc:7831

Review-Url: https://codereview.webrtc.org/2948483002
Cr-Commit-Position: refs/heads/master@{#18852}
diff --git a/webrtc/api/DEPS b/webrtc/api/DEPS
index e48b568..b0493fa 100644
--- a/webrtc/api/DEPS
+++ b/webrtc/api/DEPS
@@ -21,6 +21,13 @@
     "+webrtc/modules/audio_coding/codecs/builtin_audio_encoder_factory.h",
   ],
 
+  # Needed because AudioEncoderOpus is in the wrong place for
+  # backwards compatibilty reasons. See
+  # https://bugs.chromium.org/p/webrtc/issues/detail?id=7847
+  "audio_encoder_opus\.h": [
+    "+webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h",
+  ],
+
   # We allow .cc files in webrtc/api/ to #include a bunch of stuff
   # that's off-limits for the .h files. That's because .h files leak
   # their #includes to whoever's #including them, but .cc files do not