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

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

Issue 2799033006: Injectable audio encoders: Moved audio encoder, factory and builtin factory to api/. (Closed)
Patch Set: More backwards-compatibility! Created 3 years, 7 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
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
11 #include "webrtc/media/engine/webrtcmediaengine.h" 11 #include "webrtc/media/engine/webrtcmediaengine.h"
12 12
13 #include <algorithm> 13 #include <algorithm>
14 14
15 #include "webrtc/api/audio_codecs/builtin_audio_decoder_factory.h" 15 #include "webrtc/api/audio_codecs/builtin_audio_decoder_factory.h"
16 #include "webrtc/api/audio_codecs/builtin_audio_encoder_factory.h"
16 #include "webrtc/media/engine/webrtcvoiceengine.h" 17 #include "webrtc/media/engine/webrtcvoiceengine.h"
17 18
18 #ifdef HAVE_WEBRTC_VIDEO 19 #ifdef HAVE_WEBRTC_VIDEO
19 #include "webrtc/media/engine/webrtcvideoengine2.h" 20 #include "webrtc/media/engine/webrtcvideoengine2.h"
20 #else 21 #else
21 #include "webrtc/media/engine/nullwebrtcvideoengine.h" 22 #include "webrtc/media/engine/nullwebrtcvideoengine.h"
22 #endif 23 #endif
23 24
24 namespace cricket { 25 namespace cricket {
25 26
26 class WebRtcMediaEngine2 27 class WebRtcMediaEngine2
27 #ifdef HAVE_WEBRTC_VIDEO 28 #ifdef HAVE_WEBRTC_VIDEO
28 : public CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine2> { 29 : public CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine2> {
29 #else 30 #else
30 : public CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine> { 31 : public CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine> {
31 #endif 32 #endif
32 public: 33 public:
33 WebRtcMediaEngine2(webrtc::AudioDeviceModule* adm, 34 WebRtcMediaEngine2(webrtc::AudioDeviceModule* adm,
35 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
36 audio_encoder_factory,
34 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 37 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
35 audio_decoder_factory, 38 audio_decoder_factory,
36 WebRtcVideoEncoderFactory* video_encoder_factory, 39 WebRtcVideoEncoderFactory* video_encoder_factory,
37 WebRtcVideoDecoderFactory* video_decoder_factory, 40 WebRtcVideoDecoderFactory* video_decoder_factory,
38 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) 41 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer)
39 #ifdef HAVE_WEBRTC_VIDEO 42 #ifdef HAVE_WEBRTC_VIDEO
40 : CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine2>( 43 : CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine2>(
41 adm, 44 adm,
45 audio_encoder_factory,
42 audio_decoder_factory, 46 audio_decoder_factory,
43 audio_mixer){ 47 audio_mixer){
44 #else 48 #else
45 : CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine>( 49 : CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine>(
46 adm, 50 adm,
51 audio_encoder_factory,
47 audio_decoder_factory, 52 audio_decoder_factory,
48 audio_mixer) { 53 audio_mixer) {
49 #endif 54 #endif
50 video_.SetExternalDecoderFactory(video_decoder_factory); 55 video_.SetExternalDecoderFactory(video_decoder_factory);
51 video_.SetExternalEncoderFactory(video_encoder_factory); 56 video_.SetExternalEncoderFactory(video_encoder_factory);
52 } 57 }
53 }; 58 };
54 59
55 } // namespace cricket 60 } // namespace cricket
56 61
57 cricket::MediaEngineInterface* CreateWebRtcMediaEngine( 62 cricket::MediaEngineInterface* CreateWebRtcMediaEngine(
58 webrtc::AudioDeviceModule* adm, 63 webrtc::AudioDeviceModule* adm,
64 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
65 audio_encoder_factory,
59 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 66 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
60 audio_decoder_factory, 67 audio_decoder_factory,
61 cricket::WebRtcVideoEncoderFactory* video_encoder_factory, 68 cricket::WebRtcVideoEncoderFactory* video_encoder_factory,
62 cricket::WebRtcVideoDecoderFactory* video_decoder_factory, 69 cricket::WebRtcVideoDecoderFactory* video_decoder_factory,
63 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) { 70 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) {
64 return new cricket::WebRtcMediaEngine2(adm, audio_decoder_factory, 71 return new cricket::WebRtcMediaEngine2(
65 video_encoder_factory, 72 adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory,
66 video_decoder_factory, audio_mixer); 73 video_decoder_factory, audio_mixer);
67 } 74 }
68 75
69 void DestroyWebRtcMediaEngine(cricket::MediaEngineInterface* media_engine) { 76 void DestroyWebRtcMediaEngine(cricket::MediaEngineInterface* media_engine) {
70 delete media_engine; 77 delete media_engine;
71 } 78 }
72 79
73 namespace cricket { 80 namespace cricket {
74 81
75 // TODO(ossu): Backwards-compatible interface. Will be deprecated once the 82 // TODO(ossu): Backwards-compatible interface. Will be deprecated once the
76 // audio decoder factory is fully plumbed and used throughout WebRTC. 83 // audio decoder factory is fully plumbed and used throughout WebRTC.
77 // See: crbug.com/webrtc/6000 84 // See: crbug.com/webrtc/6000
78 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 85 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
79 webrtc::AudioDeviceModule* adm, 86 webrtc::AudioDeviceModule* adm,
80 WebRtcVideoEncoderFactory* video_encoder_factory, 87 WebRtcVideoEncoderFactory* video_encoder_factory,
81 WebRtcVideoDecoderFactory* video_decoder_factory) { 88 WebRtcVideoDecoderFactory* video_decoder_factory) {
82 return CreateWebRtcMediaEngine( 89 return CreateWebRtcMediaEngine(
83 adm, webrtc::CreateBuiltinAudioDecoderFactory(), video_encoder_factory, 90 adm, webrtc::CreateBuiltinAudioEncoderFactory(),
91 webrtc::CreateBuiltinAudioDecoderFactory(), video_encoder_factory,
84 video_decoder_factory, nullptr); 92 video_decoder_factory, nullptr);
85 } 93 }
86 94
87 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 95 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
88 webrtc::AudioDeviceModule* adm, 96 webrtc::AudioDeviceModule* adm,
89 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 97 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
90 audio_decoder_factory, 98 audio_decoder_factory,
91 WebRtcVideoEncoderFactory* video_encoder_factory, 99 WebRtcVideoEncoderFactory* video_encoder_factory,
92 WebRtcVideoDecoderFactory* video_decoder_factory) { 100 WebRtcVideoDecoderFactory* video_decoder_factory) {
93 return CreateWebRtcMediaEngine(adm, audio_decoder_factory, 101 return CreateWebRtcMediaEngine(
94 video_encoder_factory, video_decoder_factory, 102 adm, webrtc::CreateBuiltinAudioEncoderFactory(), audio_decoder_factory,
95 nullptr); 103 video_encoder_factory, video_decoder_factory, nullptr);
96 } 104 }
97 105
98 // Used by PeerConnectionFactory to create a media engine passed into 106 // Used by PeerConnectionFactory to create a media engine passed into
99 // ChannelManager. 107 // ChannelManager.
100 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 108 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
101 webrtc::AudioDeviceModule* adm, 109 webrtc::AudioDeviceModule* adm,
102 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 110 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
103 audio_decoder_factory, 111 audio_decoder_factory,
104 WebRtcVideoEncoderFactory* video_encoder_factory, 112 WebRtcVideoEncoderFactory* video_encoder_factory,
105 WebRtcVideoDecoderFactory* video_decoder_factory, 113 WebRtcVideoDecoderFactory* video_decoder_factory,
106 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) { 114 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) {
107 return CreateWebRtcMediaEngine(adm, audio_decoder_factory, 115 return CreateWebRtcMediaEngine(
108 video_encoder_factory, video_decoder_factory, 116 adm, webrtc::CreateBuiltinAudioEncoderFactory(), audio_decoder_factory,
109 audio_mixer); 117 video_encoder_factory, video_decoder_factory, audio_mixer);
118 }
119
120 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
121 webrtc::AudioDeviceModule* adm,
122 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
123 audio_encoder_factory,
124 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
125 audio_decoder_factory,
126 WebRtcVideoEncoderFactory* video_encoder_factory,
127 WebRtcVideoDecoderFactory* video_decoder_factory) {
128 return CreateWebRtcMediaEngine(adm, audio_encoder_factory,
129 audio_decoder_factory, video_encoder_factory,
130 video_decoder_factory, nullptr);
131 }
132
133 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
134 webrtc::AudioDeviceModule* adm,
135 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
136 audio_encoder_factory,
137 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
138 audio_decoder_factory,
139 WebRtcVideoEncoderFactory* video_encoder_factory,
140 WebRtcVideoDecoderFactory* video_decoder_factory,
141 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) {
142 return CreateWebRtcMediaEngine(adm, audio_encoder_factory,
143 audio_decoder_factory, video_encoder_factory,
144 video_decoder_factory, audio_mixer);
110 } 145 }
111 146
112 namespace { 147 namespace {
113 // Remove mutually exclusive extensions with lower priority. 148 // Remove mutually exclusive extensions with lower priority.
114 void DiscardRedundantExtensions( 149 void DiscardRedundantExtensions(
115 std::vector<webrtc::RtpExtension>* extensions, 150 std::vector<webrtc::RtpExtension>* extensions,
116 rtc::ArrayView<const char*> extensions_decreasing_prio) { 151 rtc::ArrayView<const char*> extensions_decreasing_prio) {
117 RTC_DCHECK(extensions); 152 RTC_DCHECK(extensions);
118 bool found = false; 153 bool found = false;
119 for (const char* uri : extensions_decreasing_prio) { 154 for (const char* uri : extensions_decreasing_prio) {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 } 244 }
210 if (codec.GetParam(kCodecParamMaxBitrate, &bitrate_kbps) && 245 if (codec.GetParam(kCodecParamMaxBitrate, &bitrate_kbps) &&
211 bitrate_kbps > 0) { 246 bitrate_kbps > 0) {
212 config.max_bitrate_bps = bitrate_kbps * 1000; 247 config.max_bitrate_bps = bitrate_kbps * 1000;
213 } else { 248 } else {
214 config.max_bitrate_bps = -1; 249 config.max_bitrate_bps = -1;
215 } 250 }
216 return config; 251 return config;
217 } 252 }
218 } // namespace cricket 253 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/media/engine/webrtcmediaengine.h ('k') | webrtc/media/engine/webrtcmediaengine_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698