Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(310)

Side by Side Diff: webrtc/media/engine/webrtcmediaengine.cc

Issue 2961723004: Allow an external audio processing module to be used in WebRTC (Closed)
Patch Set: Moved creation of APMs from CreateVoiceEngines Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/media/engine/webrtcmediaengine.h ('k') | webrtc/media/engine/webrtcvoiceengine.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 13 matching lines...) Expand all
24 24
25 namespace cricket { 25 namespace cricket {
26 26
27 class WebRtcMediaEngine2 27 class WebRtcMediaEngine2
28 #ifdef HAVE_WEBRTC_VIDEO 28 #ifdef HAVE_WEBRTC_VIDEO
29 : public CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine> { 29 : public CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine> {
30 #else 30 #else
31 : public CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine> { 31 : public CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine> {
32 #endif 32 #endif
33 public: 33 public:
34 WebRtcMediaEngine2(webrtc::AudioDeviceModule* adm, 34 WebRtcMediaEngine2(
35 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& 35 webrtc::AudioDeviceModule* adm,
36 audio_encoder_factory, 36 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
37 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 37 audio_encoder_factory,
38 audio_decoder_factory, 38 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
39 WebRtcVideoEncoderFactory* video_encoder_factory, 39 audio_decoder_factory,
40 WebRtcVideoDecoderFactory* video_decoder_factory, 40 WebRtcVideoEncoderFactory* video_encoder_factory,
41 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) 41 WebRtcVideoDecoderFactory* video_decoder_factory,
42 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer,
43 rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing)
42 #ifdef HAVE_WEBRTC_VIDEO 44 #ifdef HAVE_WEBRTC_VIDEO
43 : CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine>( 45 : CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine>(
44 adm, 46 adm,
45 audio_encoder_factory, 47 audio_encoder_factory,
46 audio_decoder_factory, 48 audio_decoder_factory,
47 audio_mixer){ 49 audio_mixer,
50 audio_processing){
48 #else 51 #else
49 : CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine>( 52 : CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine>(
50 adm, 53 adm,
51 audio_encoder_factory, 54 audio_encoder_factory,
52 audio_decoder_factory, 55 audio_decoder_factory,
53 audio_mixer) { 56 audio_mixer,
57 audio_processing) {
54 #endif 58 #endif
55 video_.SetExternalDecoderFactory(video_decoder_factory); 59 video_.SetExternalDecoderFactory(video_decoder_factory);
56 video_.SetExternalEncoderFactory(video_encoder_factory); 60 video_.SetExternalEncoderFactory(video_encoder_factory);
57 } 61 }
58 }; 62 };
59 63
60 } // namespace cricket 64 } // namespace cricket
61 65
62 cricket::MediaEngineInterface* CreateWebRtcMediaEngine( 66 cricket::MediaEngineInterface* CreateWebRtcMediaEngine(
63 webrtc::AudioDeviceModule* adm, 67 webrtc::AudioDeviceModule* adm,
64 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& 68 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
65 audio_encoder_factory, 69 audio_encoder_factory,
66 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 70 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
67 audio_decoder_factory, 71 audio_decoder_factory,
68 cricket::WebRtcVideoEncoderFactory* video_encoder_factory, 72 cricket::WebRtcVideoEncoderFactory* video_encoder_factory,
69 cricket::WebRtcVideoDecoderFactory* video_decoder_factory, 73 cricket::WebRtcVideoDecoderFactory* video_decoder_factory,
70 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) { 74 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer,
75 rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing) {
71 return new cricket::WebRtcMediaEngine2( 76 return new cricket::WebRtcMediaEngine2(
72 adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory, 77 adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory,
73 video_decoder_factory, audio_mixer); 78 video_decoder_factory, audio_mixer, audio_processing);
74 } 79 }
75 80
76 void DestroyWebRtcMediaEngine(cricket::MediaEngineInterface* media_engine) { 81 void DestroyWebRtcMediaEngine(cricket::MediaEngineInterface* media_engine) {
77 delete media_engine; 82 delete media_engine;
78 } 83 }
79 84
80 namespace cricket { 85 namespace cricket {
81 86
82 // TODO(ossu): Backwards-compatible interface. Will be deprecated once the 87 // TODO(ossu): Backwards-compatible interface. Will be deprecated once the
83 // audio decoder factory is fully plumbed and used throughout WebRTC. 88 // audio decoder factory is fully plumbed and used throughout WebRTC.
84 // See: crbug.com/webrtc/6000 89 // See: crbug.com/webrtc/6000
85 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 90 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
86 webrtc::AudioDeviceModule* adm, 91 webrtc::AudioDeviceModule* adm,
87 WebRtcVideoEncoderFactory* video_encoder_factory, 92 WebRtcVideoEncoderFactory* video_encoder_factory,
88 WebRtcVideoDecoderFactory* video_decoder_factory) { 93 WebRtcVideoDecoderFactory* video_decoder_factory) {
89 return CreateWebRtcMediaEngine( 94 return CreateWebRtcMediaEngine(
90 adm, webrtc::CreateBuiltinAudioEncoderFactory(), 95 adm, webrtc::CreateBuiltinAudioEncoderFactory(),
91 webrtc::CreateBuiltinAudioDecoderFactory(), video_encoder_factory, 96 webrtc::CreateBuiltinAudioDecoderFactory(), video_encoder_factory,
92 video_decoder_factory, nullptr); 97 video_decoder_factory, nullptr, webrtc::AudioProcessing::Create());
93 } 98 }
94 99
95 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 100 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
96 webrtc::AudioDeviceModule* adm, 101 webrtc::AudioDeviceModule* adm,
97 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 102 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
98 audio_decoder_factory, 103 audio_decoder_factory,
99 WebRtcVideoEncoderFactory* video_encoder_factory, 104 WebRtcVideoEncoderFactory* video_encoder_factory,
100 WebRtcVideoDecoderFactory* video_decoder_factory) { 105 WebRtcVideoDecoderFactory* video_decoder_factory) {
101 return CreateWebRtcMediaEngine( 106 return CreateWebRtcMediaEngine(
102 adm, webrtc::CreateBuiltinAudioEncoderFactory(), audio_decoder_factory, 107 adm, webrtc::CreateBuiltinAudioEncoderFactory(), audio_decoder_factory,
103 video_encoder_factory, video_decoder_factory, nullptr); 108 video_encoder_factory, video_decoder_factory, nullptr,
109 webrtc::AudioProcessing::Create());
104 } 110 }
105 111
106 // Used by PeerConnectionFactory to create a media engine passed into 112 // Used by PeerConnectionFactory to create a media engine passed into
107 // ChannelManager. 113 // ChannelManager.
108 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 114 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
109 webrtc::AudioDeviceModule* adm, 115 webrtc::AudioDeviceModule* adm,
110 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 116 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
111 audio_decoder_factory, 117 audio_decoder_factory,
112 WebRtcVideoEncoderFactory* video_encoder_factory, 118 WebRtcVideoEncoderFactory* video_encoder_factory,
113 WebRtcVideoDecoderFactory* video_decoder_factory, 119 WebRtcVideoDecoderFactory* video_decoder_factory,
114 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) { 120 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer,
121 rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing) {
115 return CreateWebRtcMediaEngine( 122 return CreateWebRtcMediaEngine(
116 adm, webrtc::CreateBuiltinAudioEncoderFactory(), audio_decoder_factory, 123 adm, webrtc::CreateBuiltinAudioEncoderFactory(), audio_decoder_factory,
117 video_encoder_factory, video_decoder_factory, audio_mixer); 124 video_encoder_factory, video_decoder_factory, audio_mixer,
125 audio_processing);
118 } 126 }
119 127
120 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 128 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
121 webrtc::AudioDeviceModule* adm, 129 webrtc::AudioDeviceModule* adm,
122 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& 130 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
123 audio_encoder_factory, 131 audio_encoder_factory,
124 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 132 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
125 audio_decoder_factory, 133 audio_decoder_factory,
126 WebRtcVideoEncoderFactory* video_encoder_factory, 134 WebRtcVideoEncoderFactory* video_encoder_factory,
127 WebRtcVideoDecoderFactory* video_decoder_factory) { 135 WebRtcVideoDecoderFactory* video_decoder_factory) {
128 return CreateWebRtcMediaEngine(adm, audio_encoder_factory, 136 return CreateWebRtcMediaEngine(
129 audio_decoder_factory, video_encoder_factory, 137 adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory,
130 video_decoder_factory, nullptr); 138 video_decoder_factory, nullptr, webrtc::AudioProcessing::Create());
131 } 139 }
132 140
133 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 141 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
134 webrtc::AudioDeviceModule* adm, 142 webrtc::AudioDeviceModule* adm,
135 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& 143 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
136 audio_encoder_factory, 144 audio_encoder_factory,
137 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 145 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
138 audio_decoder_factory, 146 audio_decoder_factory,
139 WebRtcVideoEncoderFactory* video_encoder_factory, 147 WebRtcVideoEncoderFactory* video_encoder_factory,
140 WebRtcVideoDecoderFactory* video_decoder_factory, 148 WebRtcVideoDecoderFactory* video_decoder_factory,
141 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) { 149 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer,
142 return CreateWebRtcMediaEngine(adm, audio_encoder_factory, 150 rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing) {
143 audio_decoder_factory, video_encoder_factory, 151 return CreateWebRtcMediaEngine(
144 video_decoder_factory, audio_mixer); 152 adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory,
153 video_decoder_factory, audio_mixer, audio_processing);
145 } 154 }
146 155
147 namespace { 156 namespace {
148 // Remove mutually exclusive extensions with lower priority. 157 // Remove mutually exclusive extensions with lower priority.
149 void DiscardRedundantExtensions( 158 void DiscardRedundantExtensions(
150 std::vector<webrtc::RtpExtension>* extensions, 159 std::vector<webrtc::RtpExtension>* extensions,
151 rtc::ArrayView<const char*> extensions_decreasing_prio) { 160 rtc::ArrayView<const char*> extensions_decreasing_prio) {
152 RTC_DCHECK(extensions); 161 RTC_DCHECK(extensions);
153 bool found = false; 162 bool found = false;
154 for (const char* uri : extensions_decreasing_prio) { 163 for (const char* uri : extensions_decreasing_prio) {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 } 253 }
245 if (codec.GetParam(kCodecParamMaxBitrate, &bitrate_kbps) && 254 if (codec.GetParam(kCodecParamMaxBitrate, &bitrate_kbps) &&
246 bitrate_kbps > 0) { 255 bitrate_kbps > 0) {
247 config.max_bitrate_bps = bitrate_kbps * 1000; 256 config.max_bitrate_bps = bitrate_kbps * 1000;
248 } else { 257 } else {
249 config.max_bitrate_bps = -1; 258 config.max_bitrate_bps = -1;
250 } 259 }
251 return config; 260 return config;
252 } 261 }
253 } // namespace cricket 262 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/media/engine/webrtcmediaengine.h ('k') | webrtc/media/engine/webrtcvoiceengine.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698