Chromium Code Reviews

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

Issue 2570993002: Support external audio mixer in webrtc 2. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
« 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 15 matching lines...)
26 #ifdef HAVE_WEBRTC_VIDEO 26 #ifdef HAVE_WEBRTC_VIDEO
27 : public CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine2> { 27 : public CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine2> {
28 #else 28 #else
29 : public CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine> { 29 : public CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine> {
30 #endif 30 #endif
31 public: 31 public:
32 WebRtcMediaEngine2(webrtc::AudioDeviceModule* adm, 32 WebRtcMediaEngine2(webrtc::AudioDeviceModule* adm,
33 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 33 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
34 audio_decoder_factory, 34 audio_decoder_factory,
35 WebRtcVideoEncoderFactory* video_encoder_factory, 35 WebRtcVideoEncoderFactory* video_encoder_factory,
36 WebRtcVideoDecoderFactory* video_decoder_factory) 36 WebRtcVideoDecoderFactory* video_decoder_factory,
37 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer)
37 #ifdef HAVE_WEBRTC_VIDEO 38 #ifdef HAVE_WEBRTC_VIDEO
38 : CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine2>( 39 : CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine2>(
39 adm, audio_decoder_factory){ 40 adm,
41 audio_decoder_factory,
42 audio_mixer){
40 #else 43 #else
41 : CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine>( 44 : CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine>(
42 adm, audio_decoder_factory) { 45 adm,
46 audio_decoder_factory,
47 audio_mixer) {
43 #endif 48 #endif
44 video_.SetExternalDecoderFactory(video_decoder_factory); 49 video_.SetExternalDecoderFactory(video_decoder_factory);
45 video_.SetExternalEncoderFactory(video_encoder_factory); 50 video_.SetExternalEncoderFactory(video_encoder_factory);
46 } 51 }
47 }; 52 };
48 53
49 } // namespace cricket 54 } // namespace cricket
50 55
51 cricket::MediaEngineInterface* CreateWebRtcMediaEngine( 56 cricket::MediaEngineInterface* CreateWebRtcMediaEngine(
52 webrtc::AudioDeviceModule* adm, 57 webrtc::AudioDeviceModule* adm,
53 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 58 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
54 audio_decoder_factory, 59 audio_decoder_factory,
55 cricket::WebRtcVideoEncoderFactory* video_encoder_factory, 60 cricket::WebRtcVideoEncoderFactory* video_encoder_factory,
56 cricket::WebRtcVideoDecoderFactory* video_decoder_factory) { 61 cricket::WebRtcVideoDecoderFactory* video_decoder_factory,
57 return new cricket::WebRtcMediaEngine2( 62 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) {
58 adm, audio_decoder_factory, video_encoder_factory, video_decoder_factory); 63 return new cricket::WebRtcMediaEngine2(adm, audio_decoder_factory,
64 video_encoder_factory,
65 video_decoder_factory, audio_mixer);
59 } 66 }
60 67
61 void DestroyWebRtcMediaEngine(cricket::MediaEngineInterface* media_engine) { 68 void DestroyWebRtcMediaEngine(cricket::MediaEngineInterface* media_engine) {
62 delete media_engine; 69 delete media_engine;
63 } 70 }
64 71
65 namespace cricket { 72 namespace cricket {
66 73
67 // TODO(ossu): Backwards-compatible interface. Will be deprecated once the 74 // TODO(ossu): Backwards-compatible interface. Will be deprecated once the
68 // audio decoder factory is fully plumbed and used throughout WebRTC. 75 // audio decoder factory is fully plumbed and used throughout WebRTC.
69 // See: crbug.com/webrtc/6000 76 // See: crbug.com/webrtc/6000
70 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 77 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
71 webrtc::AudioDeviceModule* adm, 78 webrtc::AudioDeviceModule* adm,
72 WebRtcVideoEncoderFactory* video_encoder_factory, 79 WebRtcVideoEncoderFactory* video_encoder_factory,
73 WebRtcVideoDecoderFactory* video_decoder_factory) { 80 WebRtcVideoDecoderFactory* video_decoder_factory) {
74 return CreateWebRtcMediaEngine(adm, 81 return CreateWebRtcMediaEngine(
75 webrtc::CreateBuiltinAudioDecoderFactory(), 82 adm, webrtc::CreateBuiltinAudioDecoderFactory(), video_encoder_factory,
76 video_encoder_factory, video_decoder_factory); 83 video_decoder_factory, nullptr);
84 }
85
86 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
87 webrtc::AudioDeviceModule* adm,
88 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
89 audio_decoder_factory,
90 WebRtcVideoEncoderFactory* video_encoder_factory,
91 WebRtcVideoDecoderFactory* video_decoder_factory) {
92 return CreateWebRtcMediaEngine(adm, audio_decoder_factory,
93 video_encoder_factory, video_decoder_factory,
94 nullptr);
77 } 95 }
78 96
79 // Used by PeerConnectionFactory to create a media engine passed into 97 // Used by PeerConnectionFactory to create a media engine passed into
80 // ChannelManager. 98 // ChannelManager.
81 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 99 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
82 webrtc::AudioDeviceModule* adm, 100 webrtc::AudioDeviceModule* adm,
83 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 101 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
84 audio_decoder_factory, 102 audio_decoder_factory,
85 WebRtcVideoEncoderFactory* video_encoder_factory, 103 WebRtcVideoEncoderFactory* video_encoder_factory,
86 WebRtcVideoDecoderFactory* video_decoder_factory) { 104 WebRtcVideoDecoderFactory* video_decoder_factory,
105 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) {
87 return CreateWebRtcMediaEngine(adm, audio_decoder_factory, 106 return CreateWebRtcMediaEngine(adm, audio_decoder_factory,
88 video_encoder_factory, video_decoder_factory); 107 video_encoder_factory, video_decoder_factory,
108 audio_mixer);
89 } 109 }
90 110
91 namespace { 111 namespace {
92 // Remove mutually exclusive extensions with lower priority. 112 // Remove mutually exclusive extensions with lower priority.
93 void DiscardRedundantExtensions( 113 void DiscardRedundantExtensions(
94 std::vector<webrtc::RtpExtension>* extensions, 114 std::vector<webrtc::RtpExtension>* extensions,
95 rtc::ArrayView<const char*> extensions_decreasing_prio) { 115 rtc::ArrayView<const char*> extensions_decreasing_prio) {
96 RTC_DCHECK(extensions); 116 RTC_DCHECK(extensions);
97 bool found = false; 117 bool found = false;
98 for (const char* uri : extensions_decreasing_prio) { 118 for (const char* uri : extensions_decreasing_prio) {
(...skipping 89 matching lines...)
188 } 208 }
189 if (codec.GetParam(kCodecParamMaxBitrate, &bitrate_kbps) && 209 if (codec.GetParam(kCodecParamMaxBitrate, &bitrate_kbps) &&
190 bitrate_kbps > 0) { 210 bitrate_kbps > 0) {
191 config.max_bitrate_bps = bitrate_kbps * 1000; 211 config.max_bitrate_bps = bitrate_kbps * 1000;
192 } else { 212 } else {
193 config.max_bitrate_bps = -1; 213 config.max_bitrate_bps = -1;
194 } 214 }
195 return config; 215 return config;
196 } 216 }
197 } // namespace cricket 217 } // 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