diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn index 969bd10417..bd14a9f3c9 100644 --- a/sdk/BUILD.gn +++ b/sdk/BUILD.gn @@ -674,7 +674,6 @@ if (is_ios || is_mac) { deps = [ ":base_objc", - ":libaom_av1_decoder", ":native_video", ":videocodec_objc", ":videotoolbox_objc", @@ -688,6 +687,10 @@ if (is_ios || is_mac) { defines += [ "RTC_USE_LIBAOM_AV1_ENCODER" ] deps += [ ":libaom_av1_encoder" ] } + + if (rtc_include_dav1d_in_internal_decoder_factory) { + deps += [ ":dav1d_decoder" ] + } } rtc_library("vpx_codec_constants") { @@ -738,7 +741,7 @@ if (is_ios || is_mac) { ] } - rtc_library("libaom_av1_decoder") { + rtc_library("dav1d_decoder") { visibility = [ "*" ] allow_poison = [ "software_video_codecs" ] sources = [ @@ -750,7 +753,7 @@ if (is_ios || is_mac) { ":base_objc", ":wrapped_native_codec_objc", "../media:rtc_media_base", - "../modules/video_coding/codecs/av1:libaom_av1_decoder", + "../modules/video_coding/codecs/av1:dav1d_decoder", ] } diff --git a/sdk/objc/api/video_codec/RTCVideoDecoderAV1.h b/sdk/objc/api/video_codec/RTCVideoDecoderAV1.h index d618237970..3f6a689564 100644 --- a/sdk/objc/api/video_codec/RTCVideoDecoderAV1.h +++ b/sdk/objc/api/video_codec/RTCVideoDecoderAV1.h @@ -22,6 +22,4 @@ RTC_OBJC_EXPORT */ + (id)av1Decoder; -+ (bool)isSupported; - @end diff --git a/sdk/objc/api/video_codec/RTCVideoDecoderAV1.mm b/sdk/objc/api/video_codec/RTCVideoDecoderAV1.mm index cc40f5af85..81f5f93eec 100644 --- a/sdk/objc/api/video_codec/RTCVideoDecoderAV1.mm +++ b/sdk/objc/api/video_codec/RTCVideoDecoderAV1.mm @@ -15,21 +15,13 @@ #import "RTCVideoDecoderAV1.h" #import "RTCWrappedNativeVideoDecoder.h" -#include "modules/video_coding/codecs/av1/libaom_av1_decoder.h" +#include "modules/video_coding/codecs/av1/dav1d_decoder.h" @implementation RTC_OBJC_TYPE (RTCVideoDecoderAV1) + (id)av1Decoder { - std::unique_ptr nativeDecoder(webrtc::CreateLibaomAv1Decoder()); - if (nativeDecoder == nullptr) { - return nil; - } return [[RTC_OBJC_TYPE(RTCWrappedNativeVideoDecoder) alloc] - initWithNativeDecoder:std::move(nativeDecoder)]; -} - -+ (bool)isSupported { - return webrtc::kIsLibaomAv1DecoderSupported; + initWithNativeDecoder:std::unique_ptr(webrtc::CreateDav1dDecoder())]; } @end diff --git a/sdk/objc/components/video_codec/RTCDefaultVideoDecoderFactory.m b/sdk/objc/components/video_codec/RTCDefaultVideoDecoderFactory.m index f4a97a8659..6e3baa8750 100644 --- a/sdk/objc/components/video_codec/RTCDefaultVideoDecoderFactory.m +++ b/sdk/objc/components/video_codec/RTCDefaultVideoDecoderFactory.m @@ -13,11 +13,14 @@ #import "RTCH264ProfileLevelId.h" #import "RTCVideoDecoderH264.h" #import "api/video_codec/RTCVideoCodecConstants.h" -#import "api/video_codec/RTCVideoDecoderAV1.h" #import "api/video_codec/RTCVideoDecoderVP8.h" #import "api/video_codec/RTCVideoDecoderVP9.h" #import "base/RTCVideoCodecInfo.h" +#if defined(RTC_DAV1D_IN_INTERNAL_DECODER_FACTORY) +#import "api/video_codec/RTCVideoDecoderAV1.h" // nogncheck +#endif + @implementation RTC_OBJC_TYPE (RTCDefaultVideoDecoderFactory) - (NSArray *)supportedCodecs { @@ -53,10 +56,9 @@ addObject:[[RTC_OBJC_TYPE(RTCVideoCodecInfo) alloc] initWithName:kRTCVideoCodecVp9Name]]; } - if ([RTC_OBJC_TYPE(RTCVideoDecoderAV1) isSupported]) { - [result - addObject:[[RTC_OBJC_TYPE(RTCVideoCodecInfo) alloc] initWithName:kRTCVideoCodecAv1Name]]; - } +#if defined(RTC_DAV1D_IN_INTERNAL_DECODER_FACTORY) + [result addObject:[[RTC_OBJC_TYPE(RTCVideoCodecInfo) alloc] initWithName:kRTCVideoCodecAv1Name]]; +#endif return result; } @@ -69,10 +71,13 @@ } else if ([info.name isEqualToString:kRTCVideoCodecVp9Name] && [RTC_OBJC_TYPE(RTCVideoDecoderVP9) isSupported]) { return [RTC_OBJC_TYPE(RTCVideoDecoderVP9) vp9Decoder]; - } else if ([info.name isEqualToString:kRTCVideoCodecAv1Name] && - [RTC_OBJC_TYPE(RTCVideoDecoderAV1) isSupported]) { + } + +#if defined(RTC_DAV1D_IN_INTERNAL_DECODER_FACTORY) + if ([info.name isEqualToString:kRTCVideoCodecAv1Name]) { return [RTC_OBJC_TYPE(RTCVideoDecoderAV1) av1Decoder]; } +#endif return nil; } diff --git a/tools_webrtc/libs/generate_licenses.py b/tools_webrtc/libs/generate_licenses.py index f888a538c0..83feda0f08 100755 --- a/tools_webrtc/libs/generate_licenses.py +++ b/tools_webrtc/libs/generate_licenses.py @@ -42,6 +42,7 @@ LIB_TO_LICENSES_DICT = { ], 'boringssl': ['third_party/boringssl/src/LICENSE'], 'crc32c': ['third_party/crc32c/src/LICENSE'], + 'dav1d': ['third_party/dav1d/LICENSE'], 'errorprone': [ 'third_party/android_deps/libs/' 'com_google_errorprone_error_prone_core/LICENSE'