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

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

Issue 3004353002: Expose new video codec factories in the PeerConnectionFactory API (Closed)
Patch Set: Add build dependency 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
« no previous file with comments | « media/engine/webrtcmediaengine.h ('k') | pc/BUILD.gn » ('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
11 #include "media/engine/webrtcmediaengine.h" 11 #include "media/engine/webrtcmediaengine.h"
12 12
13 #include <algorithm> 13 #include <algorithm>
14 14
15 #include "api/audio_codecs/builtin_audio_decoder_factory.h" 15 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
16 #include "api/audio_codecs/builtin_audio_encoder_factory.h" 16 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
17 #include "api/video_codecs/video_decoder_factory.h"
18 #include "api/video_codecs/video_encoder_factory.h"
17 #include "media/engine/webrtcvoiceengine.h" 19 #include "media/engine/webrtcvoiceengine.h"
18 20
19 #ifdef HAVE_WEBRTC_VIDEO 21 #ifdef HAVE_WEBRTC_VIDEO
20 #include "media/engine/webrtcvideoengine.h" 22 #include "media/engine/webrtcvideoengine.h"
21 #else 23 #else
22 #include "media/engine/nullwebrtcvideoengine.h" 24 #include "media/engine/nullwebrtcvideoengine.h"
23 #endif 25 #endif
24 26
25 namespace cricket { 27 namespace cricket {
26 28
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 audio_decoder_factory, 116 audio_decoder_factory,
115 WebRtcVideoEncoderFactory* video_encoder_factory, 117 WebRtcVideoEncoderFactory* video_encoder_factory,
116 WebRtcVideoDecoderFactory* video_decoder_factory, 118 WebRtcVideoDecoderFactory* video_decoder_factory,
117 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer, 119 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer,
118 rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing) { 120 rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing) {
119 return CreateWebRtcMediaEngine( 121 return CreateWebRtcMediaEngine(
120 adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory, 122 adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory,
121 video_decoder_factory, audio_mixer, audio_processing); 123 video_decoder_factory, audio_mixer, audio_processing);
122 } 124 }
123 125
126 std::unique_ptr<MediaEngineInterface> WebRtcMediaEngineFactory::Create(
127 rtc::scoped_refptr<webrtc::AudioDeviceModule> adm,
128 rtc::scoped_refptr<webrtc::AudioEncoderFactory> audio_encoder_factory,
129 rtc::scoped_refptr<webrtc::AudioDecoderFactory> audio_decoder_factory,
130 std::unique_ptr<webrtc::VideoEncoderFactory> video_encoder_factory,
131 std::unique_ptr<webrtc::VideoDecoderFactory> video_decoder_factory,
132 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer,
133 rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing) {
134 #ifdef HAVE_WEBRTC_VIDEO
135 typedef WebRtcVideoEngine VideoEngine;
136 std::tuple<std::unique_ptr<webrtc::VideoEncoderFactory>,
137 std::unique_ptr<webrtc::VideoDecoderFactory>>
138 video_args(std::move(video_encoder_factory),
139 std::move(video_decoder_factory));
140 #else
141 typedef NullWebRtcVideoEngine VideoEngine;
142 std::tuple<> video_args;
143 #endif
144 return std::unique_ptr<MediaEngineInterface>(
145 new CompositeMediaEngine<WebRtcVoiceEngine, VideoEngine>(
146 std::forward_as_tuple(adm, audio_encoder_factory,
147 audio_decoder_factory, audio_mixer,
148 audio_processing),
149 std::move(video_args)));
150 }
151
124 namespace { 152 namespace {
125 // Remove mutually exclusive extensions with lower priority. 153 // Remove mutually exclusive extensions with lower priority.
126 void DiscardRedundantExtensions( 154 void DiscardRedundantExtensions(
127 std::vector<webrtc::RtpExtension>* extensions, 155 std::vector<webrtc::RtpExtension>* extensions,
128 rtc::ArrayView<const char* const> extensions_decreasing_prio) { 156 rtc::ArrayView<const char* const> extensions_decreasing_prio) {
129 RTC_DCHECK(extensions); 157 RTC_DCHECK(extensions);
130 bool found = false; 158 bool found = false;
131 for (const char* uri : extensions_decreasing_prio) { 159 for (const char* uri : extensions_decreasing_prio) {
132 auto it = std::find_if( 160 auto it = std::find_if(
133 extensions->begin(), extensions->end(), 161 extensions->begin(), extensions->end(),
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 } 253 }
226 if (codec.GetParam(kCodecParamMaxBitrate, &bitrate_kbps) && 254 if (codec.GetParam(kCodecParamMaxBitrate, &bitrate_kbps) &&
227 bitrate_kbps > 0) { 255 bitrate_kbps > 0) {
228 config.max_bitrate_bps = bitrate_kbps * 1000; 256 config.max_bitrate_bps = bitrate_kbps * 1000;
229 } else { 257 } else {
230 config.max_bitrate_bps = -1; 258 config.max_bitrate_bps = -1;
231 } 259 }
232 return config; 260 return config;
233 } 261 }
234 } // namespace cricket 262 } // namespace cricket
OLDNEW
« no previous file with comments | « media/engine/webrtcmediaengine.h ('k') | pc/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698