diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn index 4ee92fe1be..d31673eb7a 100644 --- a/sdk/BUILD.gn +++ b/sdk/BUILD.gn @@ -786,7 +786,6 @@ if (is_ios || is_mac) { deps = [ ":base_objc", ":wrapped_native_codec_objc", - "../media:rtc_media_base", "../modules/video_coding:webrtc_vp9", ] } @@ -818,7 +817,6 @@ if (is_ios || is_mac) { deps = [ ":base_objc", ":wrapped_native_codec_objc", - "../media:rtc_media_base", "../modules/video_coding/codecs/av1:libaom_av1_encoder", ] } @@ -1546,8 +1544,6 @@ if (is_ios || is_mac) { "objc/api/video_codec/RTCNativeVideoEncoder.h", "objc/api/video_codec/RTCNativeVideoEncoder.mm", "objc/api/video_codec/RTCNativeVideoEncoderBuilder+Native.h", - "objc/api/video_codec/RTCWrappedNativeVideoEncoder.h", - "objc/api/video_codec/RTCWrappedNativeVideoEncoder.mm", ] configs += [ "..:common_objc" ] diff --git a/sdk/objc/api/video_codec/RTCVideoEncoderAV1.mm b/sdk/objc/api/video_codec/RTCVideoEncoderAV1.mm index d2fe65293b..43137b5bc8 100644 --- a/sdk/objc/api/video_codec/RTCVideoEncoderAV1.mm +++ b/sdk/objc/api/video_codec/RTCVideoEncoderAV1.mm @@ -12,20 +12,31 @@ #import #import "RTCMacros.h" +#import "RTCNativeVideoEncoder.h" +#import "RTCNativeVideoEncoderBuilder+Native.h" #import "RTCVideoEncoderAV1.h" -#import "RTCWrappedNativeVideoEncoder.h" #include "modules/video_coding/codecs/av1/libaom_av1_encoder.h" -@implementation RTC_OBJC_TYPE (RTCVideoEncoderAV1) - -+ (id)av1Encoder { - std::unique_ptr nativeEncoder(webrtc::CreateLibaomAv1Encoder()); - return [[RTC_OBJC_TYPE(RTCWrappedNativeVideoEncoder) alloc] - initWithNativeEncoder:std::move(nativeEncoder)]; -} - -+ (bool)isSupported { - return true; -} - +@interface RTC_OBJC_TYPE (RTCVideoEncoderAV1Builder) + : RTC_OBJC_TYPE(RTCNativeVideoEncoder) @end + + @implementation RTC_OBJC_TYPE (RTCVideoEncoderAV1Builder) + + - (std::unique_ptr)build:(const webrtc::Environment&)env { + return webrtc::CreateLibaomAv1Encoder(env); + } + + @end + + @implementation RTC_OBJC_TYPE (RTCVideoEncoderAV1) + + + (id)av1Encoder { + return [[RTC_OBJC_TYPE(RTCVideoEncoderAV1Builder) alloc] init]; + } + + + (bool)isSupported { + return true; + } + + @end diff --git a/sdk/objc/api/video_codec/RTCVideoEncoderVP8.mm b/sdk/objc/api/video_codec/RTCVideoEncoderVP8.mm index d72f705813..4a3100de34 100644 --- a/sdk/objc/api/video_codec/RTCVideoEncoderVP8.mm +++ b/sdk/objc/api/video_codec/RTCVideoEncoderVP8.mm @@ -12,16 +12,28 @@ #import #import "RTCMacros.h" +#import "RTCNativeVideoEncoder.h" +#import "RTCNativeVideoEncoderBuilder+Native.h" #import "RTCVideoEncoderVP8.h" -#import "RTCWrappedNativeVideoEncoder.h" #include "modules/video_coding/codecs/vp8/include/vp8.h" -@implementation RTC_OBJC_TYPE (RTCVideoEncoderVP8) - -+ (id)vp8Encoder { - return [[RTC_OBJC_TYPE(RTCWrappedNativeVideoEncoder) alloc] - initWithNativeEncoder:std::unique_ptr(webrtc::VP8Encoder::Create())]; -} - +@interface RTC_OBJC_TYPE (RTCVideoEncoderVP8Builder) + : RTC_OBJC_TYPE(RTCNativeVideoEncoder) @end + + @implementation RTC_OBJC_TYPE (RTCVideoEncoderVP8Builder) + + - (std::unique_ptr)build:(const webrtc::Environment&)env { + return webrtc::CreateVp8Encoder(env); + } + + @end + + @implementation RTC_OBJC_TYPE (RTCVideoEncoderVP8) + + + (id)vp8Encoder { + return [[RTC_OBJC_TYPE(RTCVideoEncoderVP8Builder) alloc] init]; + } + + @end diff --git a/sdk/objc/api/video_codec/RTCVideoEncoderVP9.mm b/sdk/objc/api/video_codec/RTCVideoEncoderVP9.mm index 18a9353f7e..1026f40092 100644 --- a/sdk/objc/api/video_codec/RTCVideoEncoderVP9.mm +++ b/sdk/objc/api/video_codec/RTCVideoEncoderVP9.mm @@ -12,28 +12,40 @@ #import #import "RTCMacros.h" +#import "RTCNativeVideoEncoder.h" +#import "RTCNativeVideoEncoderBuilder+Native.h" #import "RTCVideoEncoderVP9.h" -#import "RTCWrappedNativeVideoEncoder.h" #include "modules/video_coding/codecs/vp9/include/vp9.h" -@implementation RTC_OBJC_TYPE (RTCVideoEncoderVP9) - -+ (id)vp9Encoder { - std::unique_ptr nativeEncoder(webrtc::VP9Encoder::Create()); - if (nativeEncoder == nullptr) { - return nil; - } - return [[RTC_OBJC_TYPE(RTCWrappedNativeVideoEncoder) alloc] - initWithNativeEncoder:std::move(nativeEncoder)]; -} - -+ (bool)isSupported { -#if defined(RTC_ENABLE_VP9) - return true; -#else - return false; -#endif -} - +@interface RTC_OBJC_TYPE (RTCVideoEncoderVP9Builder) + : RTC_OBJC_TYPE(RTCNativeVideoEncoder) @end + + @implementation RTC_OBJC_TYPE (RTCVideoEncoderVP9Builder) + + - (std::unique_ptr)build:(const webrtc::Environment&)env { + return webrtc::CreateVp9Encoder(env); + } + + @end + + @implementation RTC_OBJC_TYPE (RTCVideoEncoderVP9) + + + (id)vp9Encoder { +#if defined(RTC_ENABLE_VP9) + return [[RTC_OBJC_TYPE(RTCVideoEncoderVP9Builder) alloc] init]; +#else + return nil; +#endif + } + + + (bool)isSupported { +#if defined(RTC_ENABLE_VP9) + return true; +#else + return false; +#endif + } + + @end diff --git a/sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.h b/sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.h deleted file mode 100644 index b0e68233d7..0000000000 --- a/sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 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 "RTCNativeVideoEncoder.h" -#import "base/RTCMacros.h" -#import "base/RTCVideoEncoder.h" - -#include "api/video_codecs/sdp_video_format.h" -#include "api/video_codecs/video_encoder.h" -#include "media/base/codec.h" - -// TODO: bugs.webrtc.org/15860 - Remove in favor of the RTCNativeVideoEncoderBuilder -@interface RTC_OBJC_TYPE (RTCWrappedNativeVideoEncoder) : RTC_OBJC_TYPE (RTCNativeVideoEncoder) - -- (instancetype)initWithNativeEncoder:(std::unique_ptr)encoder; - -/* This moves the ownership of the wrapped encoder to the caller. */ -- (std::unique_ptr)releaseWrappedEncoder; - -@end diff --git a/sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.mm b/sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.mm deleted file mode 100644 index 0fc2eca25f..0000000000 --- a/sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.mm +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 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 "RTCWrappedNativeVideoEncoder.h" -#import "base/RTCMacros.h" - -@implementation RTC_OBJC_TYPE (RTCWrappedNativeVideoEncoder) { - std::unique_ptr _wrappedEncoder; -} - -- (instancetype)initWithNativeEncoder:(std::unique_ptr)encoder { - if (self = [super init]) { - _wrappedEncoder = std::move(encoder); - } - - return self; -} - -- (std::unique_ptr)releaseWrappedEncoder { - return std::move(_wrappedEncoder); -} - -@end diff --git a/sdk/objc/native/src/objc_video_encoder_factory.h b/sdk/objc/native/src/objc_video_encoder_factory.h index c27782b423..d74e4933d2 100644 --- a/sdk/objc/native/src/objc_video_encoder_factory.h +++ b/sdk/objc/native/src/objc_video_encoder_factory.h @@ -32,7 +32,6 @@ class ObjCVideoEncoderFactory : public VideoEncoderFactory { std::vector GetSupportedFormats() const override; std::vector GetImplementations() const override; - std::unique_ptr CreateVideoEncoder(const SdpVideoFormat& format) override; std::unique_ptr Create(const Environment& env, const SdpVideoFormat& format) override; std::unique_ptr GetEncoderSelector() const override; diff --git a/sdk/objc/native/src/objc_video_encoder_factory.mm b/sdk/objc/native/src/objc_video_encoder_factory.mm index 04515af729..1085cb8cb4 100644 --- a/sdk/objc/native/src/objc_video_encoder_factory.mm +++ b/sdk/objc/native/src/objc_video_encoder_factory.mm @@ -21,7 +21,6 @@ #import "sdk/objc/api/peerconnection/RTCVideoEncoderSettings+Private.h" #import "sdk/objc/api/video_codec/RTCNativeVideoEncoderBuilder+Native.h" #import "sdk/objc/api/video_codec/RTCVideoCodecConstants.h" -#import "sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.h" #import "sdk/objc/helpers/NSString+StdString.h" #include "api/environment/environment.h" @@ -185,18 +184,6 @@ std::vector ObjCVideoEncoderFactory::GetImplementations() const return GetSupportedFormats(); } -std::unique_ptr ObjCVideoEncoderFactory::CreateVideoEncoder( - const SdpVideoFormat &format) { - RTC_OBJC_TYPE(RTCVideoCodecInfo) *info = - [[RTC_OBJC_TYPE(RTCVideoCodecInfo) alloc] initWithNativeSdpVideoFormat:format]; - id encoder = [encoder_factory_ createEncoder:info]; - if ([encoder isKindOfClass:[RTC_OBJC_TYPE(RTCWrappedNativeVideoEncoder) class]]) { - return [(RTC_OBJC_TYPE(RTCWrappedNativeVideoEncoder) *)encoder releaseWrappedEncoder]; - } else { - return std::unique_ptr(new ObjCVideoEncoder(encoder)); - } -} - std::unique_ptr ObjCVideoEncoderFactory::Create(const Environment &env, const SdpVideoFormat &format) { RTC_OBJC_TYPE(RTCVideoCodecInfo) *info = @@ -204,8 +191,6 @@ std::unique_ptr ObjCVideoEncoderFactory::Create(const Environment id encoder = [encoder_factory_ createEncoder:info]; if ([encoder conformsToProtocol:@protocol(RTC_OBJC_TYPE(RTCNativeVideoEncoderBuilder))]) { return [((id)encoder) build:env]; - } else if ([encoder isKindOfClass:[RTC_OBJC_TYPE(RTCWrappedNativeVideoEncoder) class]]) { - return [(RTC_OBJC_TYPE(RTCWrappedNativeVideoEncoder) *)encoder releaseWrappedEncoder]; } else { return std::make_unique(encoder); }