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

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

Issue 2888303003: Work-in-progress upload to add worker task queue to PC factory.
Patch Set: Rebase. 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
« 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 20 matching lines...) Expand all
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(webrtc::AudioDeviceModule* adm,
35 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& 35 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
36 audio_encoder_factory, 36 audio_encoder_factory,
37 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 37 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
38 audio_decoder_factory, 38 audio_decoder_factory,
39 WebRtcVideoEncoderFactory* video_encoder_factory, 39 WebRtcVideoEncoderFactory* video_encoder_factory,
40 WebRtcVideoDecoderFactory* video_decoder_factory, 40 WebRtcVideoDecoderFactory* video_decoder_factory,
41 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) 41 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer,
42 rtc::TaskQueue* low_priority_worker_queue)
42 #ifdef HAVE_WEBRTC_VIDEO 43 #ifdef HAVE_WEBRTC_VIDEO
43 : CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine2>( 44 : CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine2>(
44 adm, 45 adm,
45 audio_encoder_factory, 46 audio_encoder_factory,
46 audio_decoder_factory, 47 audio_decoder_factory,
47 audio_mixer){ 48 audio_mixer,
49 low_priority_worker_queue) {
48 #else 50 #else
49 : CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine>( 51 : CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine>(
50 adm, 52 adm,
51 audio_encoder_factory, 53 audio_encoder_factory,
52 audio_decoder_factory, 54 audio_decoder_factory,
53 audio_mixer) { 55 audio_mixer,
56 low_priority_worker_queue) {
54 #endif 57 #endif
55 video_.SetExternalDecoderFactory(video_decoder_factory); 58 video_.SetExternalDecoderFactory(video_decoder_factory);
56 video_.SetExternalEncoderFactory(video_encoder_factory); 59 video_.SetExternalEncoderFactory(video_encoder_factory);
57 } 60 }
61
62 private:
63 std::unique_ptr<rtc::TaskQueue> low_priority_task_queue_;
58 }; 64 };
59 65
60 } // namespace cricket 66 } // namespace cricket
61 67
62 cricket::MediaEngineInterface* CreateWebRtcMediaEngine( 68 cricket::MediaEngineInterface* CreateWebRtcMediaEngine(
63 webrtc::AudioDeviceModule* adm, 69 webrtc::AudioDeviceModule* adm,
64 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& 70 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
65 audio_encoder_factory, 71 audio_encoder_factory,
66 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 72 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
67 audio_decoder_factory, 73 audio_decoder_factory,
68 cricket::WebRtcVideoEncoderFactory* video_encoder_factory, 74 cricket::WebRtcVideoEncoderFactory* video_encoder_factory,
69 cricket::WebRtcVideoDecoderFactory* video_decoder_factory, 75 cricket::WebRtcVideoDecoderFactory* video_decoder_factory,
70 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) { 76 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer,
77 rtc::TaskQueue* low_priority_worker_queue) {
71 return new cricket::WebRtcMediaEngine2( 78 return new cricket::WebRtcMediaEngine2(
72 adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory, 79 adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory,
73 video_decoder_factory, audio_mixer); 80 video_decoder_factory, audio_mixer, low_priority_worker_queue);
74 } 81 }
75 82
76 void DestroyWebRtcMediaEngine(cricket::MediaEngineInterface* media_engine) { 83 void DestroyWebRtcMediaEngine(cricket::MediaEngineInterface* media_engine) {
77 delete media_engine; 84 delete media_engine;
78 } 85 }
79 86
80 namespace cricket { 87 namespace cricket {
81 88
82 // TODO(ossu): Backwards-compatible interface. Will be deprecated once the 89 // TODO(ossu): Backwards-compatible interface. Will be deprecated once the
83 // audio decoder factory is fully plumbed and used throughout WebRTC. 90 // audio decoder factory is fully plumbed and used throughout WebRTC.
84 // See: crbug.com/webrtc/6000 91 // See: crbug.com/webrtc/6000
85 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 92 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
86 webrtc::AudioDeviceModule* adm, 93 webrtc::AudioDeviceModule* adm,
87 WebRtcVideoEncoderFactory* video_encoder_factory, 94 WebRtcVideoEncoderFactory* video_encoder_factory,
88 WebRtcVideoDecoderFactory* video_decoder_factory) { 95 WebRtcVideoDecoderFactory* video_decoder_factory) {
89 return CreateWebRtcMediaEngine( 96 return CreateWebRtcMediaEngine(
90 adm, webrtc::CreateBuiltinAudioEncoderFactory(), 97 adm, webrtc::CreateBuiltinAudioEncoderFactory(),
91 webrtc::CreateBuiltinAudioDecoderFactory(), video_encoder_factory, 98 webrtc::CreateBuiltinAudioDecoderFactory(), video_encoder_factory,
92 video_decoder_factory, nullptr); 99 video_decoder_factory, nullptr, nullptr);
93 } 100 }
94 101
95 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 102 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
96 webrtc::AudioDeviceModule* adm, 103 webrtc::AudioDeviceModule* adm,
97 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 104 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
98 audio_decoder_factory, 105 audio_decoder_factory,
99 WebRtcVideoEncoderFactory* video_encoder_factory, 106 WebRtcVideoEncoderFactory* video_encoder_factory,
100 WebRtcVideoDecoderFactory* video_decoder_factory) { 107 WebRtcVideoDecoderFactory* video_decoder_factory) {
101 return CreateWebRtcMediaEngine( 108 return CreateWebRtcMediaEngine(
102 adm, webrtc::CreateBuiltinAudioEncoderFactory(), audio_decoder_factory, 109 adm, webrtc::CreateBuiltinAudioEncoderFactory(), audio_decoder_factory,
103 video_encoder_factory, video_decoder_factory, nullptr); 110 video_encoder_factory, video_decoder_factory, nullptr, nullptr);
104 } 111 }
105 112
106 // Used by PeerConnectionFactory to create a media engine passed into 113 // Used by PeerConnectionFactory to create a media engine passed into
107 // ChannelManager. 114 // ChannelManager.
108 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 115 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
109 webrtc::AudioDeviceModule* adm, 116 webrtc::AudioDeviceModule* adm,
110 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 117 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
111 audio_decoder_factory, 118 audio_decoder_factory,
112 WebRtcVideoEncoderFactory* video_encoder_factory, 119 WebRtcVideoEncoderFactory* video_encoder_factory,
113 WebRtcVideoDecoderFactory* video_decoder_factory, 120 WebRtcVideoDecoderFactory* video_decoder_factory,
114 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) { 121 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) {
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, nullptr);
118 } 125 }
119 126
120 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 127 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
121 webrtc::AudioDeviceModule* adm, 128 webrtc::AudioDeviceModule* adm,
122 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& 129 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
123 audio_encoder_factory, 130 audio_encoder_factory,
124 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 131 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
125 audio_decoder_factory, 132 audio_decoder_factory,
126 WebRtcVideoEncoderFactory* video_encoder_factory, 133 WebRtcVideoEncoderFactory* video_encoder_factory,
127 WebRtcVideoDecoderFactory* video_decoder_factory) { 134 WebRtcVideoDecoderFactory* video_decoder_factory) {
128 return CreateWebRtcMediaEngine(adm, audio_encoder_factory, 135 return CreateWebRtcMediaEngine(adm, audio_encoder_factory,
129 audio_decoder_factory, video_encoder_factory, 136 audio_decoder_factory, video_encoder_factory,
130 video_decoder_factory, nullptr); 137 video_decoder_factory, nullptr, nullptr);
131 } 138 }
132 139
133 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 140 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
134 webrtc::AudioDeviceModule* adm, 141 webrtc::AudioDeviceModule* adm,
135 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& 142 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
136 audio_encoder_factory, 143 audio_encoder_factory,
137 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 144 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
138 audio_decoder_factory, 145 audio_decoder_factory,
139 WebRtcVideoEncoderFactory* video_encoder_factory, 146 WebRtcVideoEncoderFactory* video_encoder_factory,
140 WebRtcVideoDecoderFactory* video_decoder_factory, 147 WebRtcVideoDecoderFactory* video_decoder_factory,
141 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) { 148 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) {
142 return CreateWebRtcMediaEngine(adm, audio_encoder_factory, 149 return CreateWebRtcMediaEngine(adm, audio_encoder_factory,
143 audio_decoder_factory, video_encoder_factory, 150 audio_decoder_factory, video_encoder_factory,
144 video_decoder_factory, audio_mixer); 151 video_decoder_factory, audio_mixer, nullptr);
152 }
153
154 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
155 webrtc::AudioDeviceModule* adm,
156 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
157 audio_encoder_factory,
158 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
159 audio_decoder_factory,
160 WebRtcVideoEncoderFactory* video_encoder_factory,
161 WebRtcVideoDecoderFactory* video_decoder_factory,
162 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer,
163 rtc::TaskQueue* low_priority_worker_queue) {
164 return CreateWebRtcMediaEngine(
165 adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory,
166 video_decoder_factory, audio_mixer, low_priority_worker_queue);
145 } 167 }
146 168
147 namespace { 169 namespace {
148 // Remove mutually exclusive extensions with lower priority. 170 // Remove mutually exclusive extensions with lower priority.
149 void DiscardRedundantExtensions( 171 void DiscardRedundantExtensions(
150 std::vector<webrtc::RtpExtension>* extensions, 172 std::vector<webrtc::RtpExtension>* extensions,
151 rtc::ArrayView<const char*> extensions_decreasing_prio) { 173 rtc::ArrayView<const char*> extensions_decreasing_prio) {
152 RTC_DCHECK(extensions); 174 RTC_DCHECK(extensions);
153 bool found = false; 175 bool found = false;
154 for (const char* uri : extensions_decreasing_prio) { 176 for (const char* uri : extensions_decreasing_prio) {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 } 266 }
245 if (codec.GetParam(kCodecParamMaxBitrate, &bitrate_kbps) && 267 if (codec.GetParam(kCodecParamMaxBitrate, &bitrate_kbps) &&
246 bitrate_kbps > 0) { 268 bitrate_kbps > 0) {
247 config.max_bitrate_bps = bitrate_kbps * 1000; 269 config.max_bitrate_bps = bitrate_kbps * 1000;
248 } else { 270 } else {
249 config.max_bitrate_bps = -1; 271 config.max_bitrate_bps = -1;
250 } 272 }
251 return config; 273 return config;
252 } 274 }
253 } // namespace cricket 275 } // 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