WebKit Bugzilla
Attachment 358924 Details for
Bug 193357
: Adopt new VCP SPI
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-193357-20190111115721.patch (text/plain), 9.16 KB, created by
youenn fablet
on 2019-01-11 11:57:22 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
youenn fablet
Created:
2019-01-11 11:57:22 PST
Size:
9.16 KB
patch
obsolete
>Subversion Revision: 239774 >diff --git a/Source/ThirdParty/libwebrtc/ChangeLog b/Source/ThirdParty/libwebrtc/ChangeLog >index 74c8bb52fe714e06ad47b7ea9148688553e3be0e..e55ae2946ad550ddddef817874362a2cd0eb6c37 100644 >--- a/Source/ThirdParty/libwebrtc/ChangeLog >+++ b/Source/ThirdParty/libwebrtc/ChangeLog >@@ -1,3 +1,20 @@ >+2019-01-11 Youenn Fablet <youenn@apple.com> >+ >+ Adopt new VCP SPI >+ https://bugs.webkit.org/show_bug.cgi?id=193357 >+ <rdar://problem/43656651> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Enable VCP through VTB API with specific encoder id. >+ >+ * Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.cpp: >+ * Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.h: >+ * Source/webrtc/sdk/WebKit/WebKitUtilities.mm: >+ (webrtc::setApplicationStatus): >+ * Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm: >+ (-[RTCSingleVideoEncoderH264 resetCompressionSessionWithPixelFormat:]): >+ > 2018-12-22 Dan Bernstein <mitz@apple.com> > > Fixed Apple production builds. >diff --git a/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.cpp b/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.cpp >index 101e87c66777044a1ea557d2a5860e50a9f1336a..7228810c84696a0df76923c3d95403facf190b3b 100644 >--- a/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.cpp >+++ b/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.cpp >@@ -25,7 +25,7 @@ > > #include "VideoProcessingSoftLink.h" > >-#if ENABLE_VCP_ENCODER >+#if ENABLE_VCP_ENCODER || ENABLE_VCP_VTB_ENCODER > > #include "rtc_base/logging.h" > #import <dlfcn.h> >@@ -67,12 +67,16 @@ > } > > SOFT_LINK_PRIVATE_FRAMEWORK_FOR_SOURCE(webrtc, VideoProcessing) >+SOFT_LINK_FUNCTION_FOR_SOURCE(webrtc, VideoProcessing, VPModuleInitialize, void, (), ()) >+ >+#endif >+ >+#if ENABLE_VCP_ENCODER > > SOFT_LINK_FUNCTION_FOR_SOURCE(webrtc, VideoProcessing, VCPCompressionSessionSetProperty, OSStatus, (VCPCompressionSessionRef session, CFStringRef key, CFTypeRef value), (session, key, value)) > SOFT_LINK_FUNCTION_FOR_SOURCE(webrtc, VideoProcessing, VCPCompressionSessionGetPixelBufferPool, CVPixelBufferPoolRef, (VCPCompressionSessionRef session), (session)) > SOFT_LINK_FUNCTION_FOR_SOURCE(webrtc, VideoProcessing, VCPCompressionSessionEncodeFrame, OSStatus, (VCPCompressionSessionRef session, CVImageBufferRef buffer, CMTime timestamp, CMTime time, CFDictionaryRef dictionary, void* data, VTEncodeInfoFlags* flags), (session, buffer, timestamp, time, dictionary, data, flags)) > SOFT_LINK_FUNCTION_FOR_SOURCE(webrtc, VideoProcessing, VCPCompressionSessionCreate, OSStatus, (CFAllocatorRef allocator1, int32_t value1 , int32_t value2, CMVideoCodecType type, CFDictionaryRef dictionary1, CFDictionaryRef dictionary2, CFAllocatorRef allocator3, VTCompressionOutputCallback callback, void* data, VCPCompressionSessionRef* session), (allocator1, value1, value2, type, dictionary1, dictionary2, allocator3, callback, data, session)) > SOFT_LINK_FUNCTION_FOR_SOURCE(webrtc, VideoProcessing, VCPCompressionSessionInvalidate, void, (VCPCompressionSessionRef session), (session)) >-SOFT_LINK_FUNCTION_FOR_SOURCE(webrtc, VideoProcessing, VPModuleInitialize, void, (), ()) > > #endif // ENABLE_VCP_ENCODER >diff --git a/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.h b/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.h >index cf866d8a8db54a204919df9992fb2c49be6c30fb..a2d71d61c05ec08c52e36a3d677792a4aa953096 100644 >--- a/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.h >+++ b/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.h >@@ -35,10 +35,13 @@ > > #if (defined(TARGET_IPHONE_SIMULATOR) && TARGET_IPHONE_SIMULATOR) > #define ENABLE_VCP_ENCODER 0 >+#define ENABLE_VCP_VTB_ENCODER 0 > #elif (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) >-#define ENABLE_VCP_ENCODER 1 >+#define ENABLE_VCP_ENCODER __MAC_OS_X_VERSION_MAX_ALLOWED < 101500 >+#define ENABLE_VCP_VTB_ENCODER __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500 > #elif (defined(TARGET_OS_MAC) && TARGET_OS_MAC) >-#define ENABLE_VCP_ENCODER (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101300 && __MAC_OS_X_VERSION_MAX_ALLOWED >= 101304) >+#define ENABLE_VCP_ENCODER (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101300 && __MAC_OS_X_VERSION_MAX_ALLOWED < 101500) >+#define ENABLE_VCP_VTB_ENCODER __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500 > #endif > > #endif >@@ -111,12 +114,19 @@ > return pointer##name; \ > } > >-#if ENABLE_VCP_ENCODER >+#if ENABLE_VCP_ENCODER || ENABLE_VCP_VTB_ENCODER > > #include <VideoProcessing/VideoProcessing.h> > > SOFT_LINK_FRAMEWORK_FOR_HEADER(webrtc, VideoProcessing) > >+SOFT_LINK_FUNCTION_FOR_HEADER(webrtc, VideoProcessing, VPModuleInitialize, void, (), ()) >+#define VPModuleInitialize softLink_VideoProcessing_VPModuleInitialize >+ >+#endif >+ >+#if ENABLE_VCP_ENCODER >+ > SOFT_LINK_FUNCTION_FOR_HEADER(webrtc, VideoProcessing, VCPCompressionSessionSetProperty, OSStatus, (VCPCompressionSessionRef session, CFStringRef key, CFTypeRef value), (session, key, value)) > #define VCPCompressionSessionSetProperty softLink_VideoProcessing_VCPCompressionSessionSetProperty > >@@ -132,9 +142,6 @@ SOFT_LINK_FUNCTION_FOR_HEADER(webrtc, VideoProcessing, VCPCompressionSessionCrea > SOFT_LINK_FUNCTION_FOR_HEADER(webrtc, VideoProcessing, VCPCompressionSessionInvalidate, void, (VCPCompressionSessionRef session), (session)) > #define VCPCompressionSessionInvalidate softLink_VideoProcessing_VCPCompressionSessionInvalidate > >-SOFT_LINK_FUNCTION_FOR_HEADER(webrtc, VideoProcessing, VPModuleInitialize, void, (), ()) >-#define VPModuleInitialize softLink_VideoProcessing_VPModuleInitialize >- > #endif // ENABLE_VCP_ENCODER > > #endif // __APPLE__ >diff --git a/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitUtilities.mm b/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitUtilities.mm >index 65eefa36f2dfb2069ecca7caa49224b262955bba..ff5a9fba275fe42b4a61b09a8ccd2fa80e322f60 100644 >--- a/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitUtilities.mm >+++ b/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitUtilities.mm >@@ -101,7 +101,7 @@ void setApplicationStatus(bool isActive) > > std::unique_ptr<webrtc::VideoEncoderFactory> createWebKitEncoderFactory(WebKitCodecSupport codecSupport) > { >-#if ENABLE_VCP_ENCODER >+#if ENABLE_VCP_ENCODER || ENABLE_VCP_VTB_ENCODER > static std::once_flag onceFlag; > std::call_once(onceFlag, [] { > webrtc::VPModuleInitialize(); >diff --git a/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm b/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm >index 543f4fb5a4ba2e68764e54bd3a905b336aa1a571..ef59179aa29f4fc4008c53b5c04f8bd45043b8df 100644 >--- a/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm >+++ b/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm >@@ -40,7 +40,7 @@ > VT_EXPORT const CFStringRef kVTVideoEncoderSpecification_Usage; > VT_EXPORT const CFStringRef kVTCompressionPropertyKey_Usage; > >-#if !ENABLE_VCP_ENCODER && !defined(WEBRTC_IOS) >+#if !ENABLE_VCP_ENCODER && !defined(WEBRTC_IOS) && !ENABLE_VCP_VTB_ENCODER > static inline bool isStandardFrameSize(int32_t width, int32_t height) > { > // FIXME: Envision relaxing this rule, something like width and height dividable by 4 or 8 should be good enough. >@@ -608,7 +608,7 @@ CFStringRef ExtractProfile(webrtc::SdpVideoFormat videoFormat) { > CFRelease(pixelFormat); > pixelFormat = nullptr; > } >- CFMutableDictionaryRef encoderSpecs = CFDictionaryCreateMutable(nullptr, 4, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); >+ CFMutableDictionaryRef encoderSpecs = CFDictionaryCreateMutable(nullptr, 5, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); > #if !defined(WEBRTC_IOS) > auto useHardwareEncoder = webrtc::isH264HardwareEncoderAllowed() ? kCFBooleanTrue : kCFBooleanFalse; > // Currently hw accl is supported above 360p on mac, below 360p >@@ -618,11 +618,14 @@ CFStringRef ExtractProfile(webrtc::SdpVideoFormat videoFormat) { > #endif > CFDictionarySetValue(encoderSpecs, kVTCompressionPropertyKey_RealTime, kCFBooleanTrue); > >-#if ENABLE_VCP_ENCODER >+#if ENABLE_VCP_ENCODER || ENABLE_VCP_VTB_ENCODER > int usageValue = 1; > auto usage = CFNumberCreate(nullptr, kCFNumberIntType, &usageValue); > CFDictionarySetValue(encoderSpecs, kVTCompressionPropertyKey_Usage, usage); > CFRelease(usage); >+#endif >+#if ENABLE_VCP_VTB_ENCODER >+ CFDictionarySetValue(encoderSpecs, kVTVideoEncoderList_EncoderID, CFSTR("com.apple.videotoolbox.videoencoder.h264.rtvc")); > #endif > OSStatus status = > CompressionSessionCreate(nullptr, // use default allocator >@@ -663,7 +666,7 @@ CFStringRef ExtractProfile(webrtc::SdpVideoFormat videoFormat) { > } else { > RTC_LOG(LS_INFO) << "Compression session created with hw accl disabled"; > >-#if !ENABLE_VCP_ENCODER && !defined(WEBRTC_IOS) >+#if !ENABLE_VCP_ENCODER && !ENABLE_VCP_VTB_ENCODER && !defined(WEBRTC_IOS) > if (!isStandardFrameSize(_width, _height)) { > _disableEncoding = true; > RTC_LOG(LS_ERROR) << "Using H264 software encoder with non standard size is not supported";
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193357
:
358924
|
360435
|
360467
|
366424
|
366496