blob: a26a639e28e44f21b8c2756d4fd0c2137d27115c [file] [log] [blame]
Jiawei Ouae810c12018-06-20 16:18:59 -07001/*
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#import "RTCPeerConnectionFactoryBuilder.h"
12#import "RTCPeerConnectionFactory+Native.h"
13
14#include "api/audio_codecs/audio_decoder_factory.h"
15#include "api/audio_codecs/audio_encoder_factory.h"
16#include "api/video_codecs/video_decoder_factory.h"
17#include "api/video_codecs/video_encoder_factory.h"
18#include "modules/audio_device/include/audio_device.h"
19#include "modules/audio_processing/include/audio_processing.h"
20
21@implementation RTCPeerConnectionFactoryBuilder {
22 std::unique_ptr<webrtc::VideoEncoderFactory> _videoEncoderFactory;
23 std::unique_ptr<webrtc::VideoDecoderFactory> _videoDecoderFactory;
24 rtc::scoped_refptr<webrtc::AudioEncoderFactory> _audioEncoderFactory;
25 rtc::scoped_refptr<webrtc::AudioDecoderFactory> _audioDecoderFactory;
26 rtc::scoped_refptr<webrtc::AudioDeviceModule> _audioDeviceModule;
27 rtc::scoped_refptr<webrtc::AudioProcessing> _audioProcessingModule;
28}
29
30+ (RTCPeerConnectionFactoryBuilder *)builder {
31 return [[RTCPeerConnectionFactoryBuilder alloc] init];
32}
33
34- (RTCPeerConnectionFactory *)createPeerConnectionFactory {
35 RTCPeerConnectionFactory *factory = [RTCPeerConnectionFactory alloc];
36 return [factory initWithNativeAudioEncoderFactory:_audioEncoderFactory
37 nativeAudioDecoderFactory:_audioDecoderFactory
38 nativeVideoEncoderFactory:std::move(_videoEncoderFactory)
39 nativeVideoDecoderFactory:std::move(_videoDecoderFactory)
40 audioDeviceModule:_audioDeviceModule
41 audioProcessingModule:_audioProcessingModule];
42}
43
44- (void)setVideoEncoderFactory:(std::unique_ptr<webrtc::VideoEncoderFactory>)videoEncoderFactory {
45 _videoEncoderFactory = std::move(videoEncoderFactory);
46}
47
48- (void)setVideoDecoderFactory:(std::unique_ptr<webrtc::VideoDecoderFactory>)videoDecoderFactory {
49 _videoDecoderFactory = std::move(videoDecoderFactory);
50}
51
52- (void)setAudioEncoderFactory:
53 (rtc::scoped_refptr<webrtc::AudioEncoderFactory>)audioEncoderFactory {
54 _audioEncoderFactory = audioEncoderFactory;
55}
56
57- (void)setAudioDecoderFactory:
58 (rtc::scoped_refptr<webrtc::AudioDecoderFactory>)audioDecoderFactory {
59 _audioDecoderFactory = audioDecoderFactory;
60}
61
62- (void)setAudioDeviceModule:(rtc::scoped_refptr<webrtc::AudioDeviceModule>)audioDeviceModule {
63 _audioDeviceModule = audioDeviceModule;
64}
65
66- (void)setAudioProcessingModule:
67 (rtc::scoped_refptr<webrtc::AudioProcessing>)audioProcessingModule {
68 _audioProcessingModule = audioProcessingModule;
69}
70
71@end