/* * 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 #import "RTCVideoCodecInfo.h" #import "RTCVideoEncoder.h" #import "sdk/objc/base/RTCMacros.h" NS_ASSUME_NONNULL_BEGIN /** RTCVideoEncoderFactory is an Objective-C version of webrtc::VideoEncoderFactory::VideoEncoderSelector. */ RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE (RTCVideoEncoderSelector) - (void)registerCurrentEncoderInfo : (RTC_OBJC_TYPE(RTCVideoCodecInfo) *)info; - (nullable RTC_OBJC_TYPE(RTCVideoCodecInfo) *)encoderForBitrate: (NSInteger)bitrate; - (nullable RTC_OBJC_TYPE(RTCVideoCodecInfo) *)encoderForBrokenEncoder; @optional - (nullable RTC_OBJC_TYPE(RTCVideoCodecInfo) *)encoderForResolutionChangeBySize: (CGSize)size; @end /** RTCVideoEncoderCodecSupport is an Objective-C version of * webrtc::VideoEncoderFactory::CodecSupport. */ RTC_OBJC_EXPORT @interface RTC_OBJC_TYPE (RTCVideoEncoderCodecSupport) : NSObject - (instancetype)init NS_UNAVAILABLE; - (instancetype)initWithSupported:(bool)isSupported; - (instancetype)initWithSupported:(bool)isSupported isPowerEfficient:(bool)isPowerEfficient NS_DESIGNATED_INITIALIZER; @property(nonatomic, readonly) bool isSupported; @property(nonatomic, readonly) bool isPowerEfficient; @end /** RTCVideoEncoderFactory is an Objective-C version of * webrtc::VideoEncoderFactory. */ RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE (RTCVideoEncoderFactory) - (nullable id)createEncoder : (RTC_OBJC_TYPE(RTCVideoCodecInfo) *)info; - (NSArray *) supportedCodecs; // TODO(andersc): "supportedFormats" instead? @optional - (NSArray *)implementations; - (nullable id)encoderSelector; /* TODO: b/299588022 - move to non-optional section when implemented by all * derived classes. */ - (RTC_OBJC_TYPE(RTCVideoEncoderCodecSupport) *) queryCodecSupport:(RTC_OBJC_TYPE(RTCVideoCodecInfo) *)info scalabilityMode:(nullable NSString *)scalabilityMode; @end NS_ASSUME_NONNULL_END