tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

create_peerconnection_factory.cc (3294B)


      1 /*
      2 *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
      3 *
      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
      6 *  tree. An additional intellectual property rights grant can be found
      7 *  in the file PATENTS.  All contributing project authors may
      8 *  be found in the AUTHORS file in the root of the source tree.
      9 */
     10 
     11 #include "api/create_peerconnection_factory.h"
     12 
     13 #include <memory>
     14 #include <utility>
     15 
     16 #include "api/audio/audio_device.h"
     17 #include "api/audio/audio_mixer.h"
     18 #include "api/audio/audio_processing.h"
     19 #include "api/audio/builtin_audio_processing_builder.h"
     20 #include "api/audio_codecs/audio_decoder_factory.h"
     21 #include "api/audio_codecs/audio_encoder_factory.h"
     22 #include "api/create_modular_peer_connection_factory.h"
     23 #include "api/enable_media.h"
     24 #include "api/environment/environment_factory.h"
     25 #include "api/field_trials_view.h"
     26 #include "api/peer_connection_interface.h"
     27 #include "api/rtc_event_log/rtc_event_log_factory.h"
     28 #include "api/scoped_refptr.h"
     29 #include "api/video_codecs/video_decoder_factory.h"
     30 #include "api/video_codecs/video_encoder_factory.h"
     31 #include "rtc_base/thread.h"
     32 
     33 namespace webrtc {
     34 
     35 scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
     36    Thread* network_thread,
     37    Thread* worker_thread,
     38    Thread* signaling_thread,
     39    scoped_refptr<AudioDeviceModule> default_adm,
     40    scoped_refptr<AudioEncoderFactory> audio_encoder_factory,
     41    scoped_refptr<AudioDecoderFactory> audio_decoder_factory,
     42    std::unique_ptr<VideoEncoderFactory> video_encoder_factory,
     43    std::unique_ptr<VideoDecoderFactory> video_decoder_factory,
     44    scoped_refptr<AudioMixer> audio_mixer,
     45    scoped_refptr<AudioProcessing> audio_processing,
     46    std::unique_ptr<AudioFrameProcessor> audio_frame_processor,
     47    std::unique_ptr<FieldTrialsView> field_trials) {
     48  PeerConnectionFactoryDependencies dependencies;
     49  dependencies.network_thread = network_thread;
     50  dependencies.worker_thread = worker_thread;
     51  dependencies.signaling_thread = signaling_thread;
     52  dependencies.event_log_factory = std::make_unique<RtcEventLogFactory>();
     53  dependencies.env = CreateEnvironment(std::move(field_trials));
     54 
     55  if (network_thread) {
     56    // TODO(bugs.webrtc.org/13145): Add an SocketFactory* argument.
     57    dependencies.socket_factory = network_thread->socketserver();
     58  }
     59  dependencies.adm = std::move(default_adm);
     60  dependencies.audio_encoder_factory = std::move(audio_encoder_factory);
     61  dependencies.audio_decoder_factory = std::move(audio_decoder_factory);
     62  dependencies.audio_frame_processor = std::move(audio_frame_processor);
     63  if (audio_processing != nullptr) {
     64    dependencies.audio_processing_builder =
     65        CustomAudioProcessing(std::move(audio_processing));
     66  } else {
     67 #ifndef WEBRTC_EXCLUDE_AUDIO_PROCESSING_MODULE
     68    dependencies.audio_processing_builder =
     69        std::make_unique<BuiltinAudioProcessingBuilder>();
     70 #endif
     71  }
     72  dependencies.audio_mixer = std::move(audio_mixer);
     73  dependencies.video_encoder_factory = std::move(video_encoder_factory);
     74  dependencies.video_decoder_factory = std::move(video_decoder_factory);
     75  EnableMedia(dependencies);
     76 
     77  return CreateModularPeerConnectionFactory(std::move(dependencies));
     78 }
     79 
     80 }  // namespace webrtc