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

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

Issue 3008043002: Simplify passing video codec factories in media engine (Closed)
Patch Set: Created 3 years, 3 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/api/audio_codecs/builtin_audio_encoder_factory.h"
17 #include "webrtc/media/engine/webrtcvoiceengine.h" 17 #include "webrtc/media/engine/webrtcvoiceengine.h"
18 18
19 #ifdef HAVE_WEBRTC_VIDEO 19 #ifdef HAVE_WEBRTC_VIDEO
20 #include "webrtc/media/engine/webrtcvideoengine.h" 20 #include "webrtc/media/engine/webrtcvideoengine.h"
21 #else 21 #else
22 #include "webrtc/media/engine/nullwebrtcvideoengine.h" 22 #include "webrtc/media/engine/nullwebrtcvideoengine.h"
23 #endif 23 #endif
24 24
25 namespace cricket { 25 namespace cricket {
26 26
27 class WebRtcMediaEngine2 27 namespace {
28 #ifdef HAVE_WEBRTC_VIDEO
29 : public CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine> {
30 #else
31 : public CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine> {
32 #endif
33 public:
34 WebRtcMediaEngine2(
35 webrtc::AudioDeviceModule* adm,
36 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
37 audio_encoder_factory,
38 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
39 audio_decoder_factory,
40 WebRtcVideoEncoderFactory* video_encoder_factory,
41 WebRtcVideoDecoderFactory* video_decoder_factory,
42 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer,
43 rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing)
44 #ifdef HAVE_WEBRTC_VIDEO
45 : CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine>(
46 adm,
47 audio_encoder_factory,
48 audio_decoder_factory,
49 audio_mixer,
50 audio_processing){
51 #else
52 : CompositeMediaEngine<WebRtcVoiceEngine, NullWebRtcVideoEngine>(
53 adm,
54 audio_encoder_factory,
55 audio_decoder_factory,
56 audio_mixer,
57 audio_processing) {
58 #endif
59 video_.SetExternalDecoderFactory(video_decoder_factory);
60 video_.SetExternalEncoderFactory(video_encoder_factory);
61 }
62 };
63 28
64 } // namespace cricket 29 MediaEngineInterface* CreateWebRtcMediaEngine(
65
66 cricket::MediaEngineInterface* CreateWebRtcMediaEngine(
67 webrtc::AudioDeviceModule* adm, 30 webrtc::AudioDeviceModule* adm,
68 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& 31 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
69 audio_encoder_factory, 32 audio_encoder_factory,
70 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& 33 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
71 audio_decoder_factory, 34 audio_decoder_factory,
72 cricket::WebRtcVideoEncoderFactory* video_encoder_factory, 35 WebRtcVideoEncoderFactory* video_encoder_factory,
73 cricket::WebRtcVideoDecoderFactory* video_decoder_factory, 36 WebRtcVideoDecoderFactory* video_decoder_factory,
74 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer, 37 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer,
75 rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing) { 38 rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing) {
76 return new cricket::WebRtcMediaEngine2( 39 #ifdef HAVE_WEBRTC_VIDEO
77 adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory, 40 typedef WebRtcVideoEngine VideoEngine;
78 video_decoder_factory, audio_mixer, audio_processing); 41 std::tuple<WebRtcVideoEncoderFactory*, WebRtcVideoDecoderFactory*> video_args(
42 video_encoder_factory, video_decoder_factory);
43 #else
44 typedef NullWebRtcVideoEngine VideoEngine;
45 std::tuple<> video_args;
46 #endif
47 return new CompositeMediaEngine<WebRtcVoiceEngine, VideoEngine>(
48 std::forward_as_tuple(adm, audio_encoder_factory, audio_decoder_factory,
49 audio_mixer, audio_processing),
50 std::move(video_args));
79 } 51 }
80 52
81 void DestroyWebRtcMediaEngine(cricket::MediaEngineInterface* media_engine) { 53 } // namespace
82 delete media_engine;
83 }
84
85 namespace cricket {
86 54
87 // TODO(ossu): Backwards-compatible interface. Will be deprecated once the 55 // TODO(ossu): Backwards-compatible interface. Will be deprecated once the
88 // audio decoder factory is fully plumbed and used throughout WebRTC. 56 // audio decoder factory is fully plumbed and used throughout WebRTC.
89 // See: crbug.com/webrtc/6000 57 // See: crbug.com/webrtc/6000
90 MediaEngineInterface* WebRtcMediaEngineFactory::Create( 58 MediaEngineInterface* WebRtcMediaEngineFactory::Create(
91 webrtc::AudioDeviceModule* adm, 59 webrtc::AudioDeviceModule* adm,
92 WebRtcVideoEncoderFactory* video_encoder_factory, 60 WebRtcVideoEncoderFactory* video_encoder_factory,
93 WebRtcVideoDecoderFactory* video_decoder_factory) { 61 WebRtcVideoDecoderFactory* video_decoder_factory) {
94 return CreateWebRtcMediaEngine( 62 return CreateWebRtcMediaEngine(
95 adm, webrtc::CreateBuiltinAudioEncoderFactory(), 63 adm, webrtc::CreateBuiltinAudioEncoderFactory(),
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 } 225 }
258 if (codec.GetParam(kCodecParamMaxBitrate, &bitrate_kbps) && 226 if (codec.GetParam(kCodecParamMaxBitrate, &bitrate_kbps) &&
259 bitrate_kbps > 0) { 227 bitrate_kbps > 0) {
260 config.max_bitrate_bps = bitrate_kbps * 1000; 228 config.max_bitrate_bps = bitrate_kbps * 1000;
261 } else { 229 } else {
262 config.max_bitrate_bps = -1; 230 config.max_bitrate_bps = -1;
263 } 231 }
264 return config; 232 return config;
265 } 233 }
266 } // namespace cricket 234 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/media/engine/nullwebrtcvideoengine_unittest.cc ('k') | webrtc/media/engine/webrtcvideoengine.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698