mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-14 14:20:45 +01:00

When injecting video codec factories in the Obj-C SDK, use the new peer connection API that uses webrtc::Video{De,En}CoderFactory classes and does not automatically add internal software codecs. Instead the injected factory can support internal VP8 and VP9 codecs through the included Obj-C classes RTCVideo{De,En}coderVP{8,9}. When not explicitly injecting any video codec factory, the old code path is still used and injects only H264 as an external codec and the internal codec factory is used. Bug: webrtc:7925 Change-Id: I657d30dfde71da9c0be341e213ab9f97a04caa58 Reviewed-on: https://webrtc-review.googlesource.com/3620 Commit-Queue: Anders Carlsson <andersc@webrtc.org> Reviewed-by: Magnus Jedvert <magjed@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20175}
66 lines
2.3 KiB
Objective-C
66 lines
2.3 KiB
Objective-C
/*
|
|
* Copyright 2017 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#import "WebRTC/RTCPeerConnectionFactory.h"
|
|
|
|
#include "rtc_base/scoped_ref_ptr.h"
|
|
|
|
namespace webrtc {
|
|
|
|
class AudioEncoderFactory;
|
|
class AudioDecoderFactory;
|
|
class VideoEncoderFactory;
|
|
class VideoDecoderFactory;
|
|
|
|
} // namespace webrtc
|
|
|
|
namespace cricket {
|
|
|
|
class WebRtcVideoEncoderFactory;
|
|
class WebRtcVideoDecoderFactory;
|
|
|
|
} // namespace cricket
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
/**
|
|
* This class extension exposes methods that work directly with injectable C++ components.
|
|
*/
|
|
@interface RTCPeerConnectionFactory ()
|
|
|
|
- (instancetype)initNative NS_DESIGNATED_INITIALIZER;
|
|
|
|
/* Initializer used when WebRTC is compiled with no media support */
|
|
- (instancetype)initWithNoMedia;
|
|
|
|
/* Initialize object with injectable native audio/video encoder/decoder factories */
|
|
- (instancetype)initWithNativeAudioEncoderFactory:
|
|
(rtc::scoped_refptr<webrtc::AudioEncoderFactory>)audioEncoderFactory
|
|
nativeAudioDecoderFactory:
|
|
(rtc::scoped_refptr<webrtc::AudioDecoderFactory>)audioDecoderFactory
|
|
nativeVideoEncoderFactory:
|
|
(std::unique_ptr<webrtc::VideoEncoderFactory>)videoEncoderFactory
|
|
nativeVideoDecoderFactory:
|
|
(std::unique_ptr<webrtc::VideoDecoderFactory>)videoDecoderFactory;
|
|
|
|
/* Initialize object with legacy injectable native audio/video encoder/decoder factories
|
|
TODO(andersc): Remove this when backwards compatiblity is no longer needed.
|
|
*/
|
|
- (instancetype)
|
|
initWithNativeAudioEncoderFactory:
|
|
(rtc::scoped_refptr<webrtc::AudioEncoderFactory>)audioEncoderFactory
|
|
nativeAudioDecoderFactory:
|
|
(rtc::scoped_refptr<webrtc::AudioDecoderFactory>)audioDecoderFactory
|
|
legacyNativeVideoEncoderFactory:(cricket::WebRtcVideoEncoderFactory*)videoEncoderFactory
|
|
legacyNativeVideoDecoderFactory:(cricket::WebRtcVideoDecoderFactory*)videoDecoderFactory;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|