haikuwebkit/LayoutTests/media/vp9.html

26 lines
885 B
HTML
Raw Permalink Normal View History

Allow registering VP9 as a VT decoder https://bugs.webkit.org/show_bug.cgi?id=213837 <rdar://problem/64984881> Reviewed by Jer Noble. Source/ThirdParty/libwebrtc: Implement a method that registers VP9 as a VT decoder. Implement the binding code between VP9DecoderImpl and VT pluggable codec API. Restrict this to internal SDK for now. * Configurations/libwebrtc.iOS.exp: * Configurations/libwebrtc.iOSsim.exp: * Configurations/libwebrtc.mac.exp: * Source/webrtc/sdk/WebKit/WebKitUtilities.h: * Source/webrtc/sdk/WebKit/WebKitUtilities.mm: (webrtc::createPixelBufferPool): * Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp: Added. (webrtc::registerWebKitVP9Decoder): (webrtc::createWebKitVP9Decoder): (webrtc::invalidateVP9Decoder): (webrtc::finalizeVP9Decoder): (webrtc::copyVP9DecoderDebugDescription): (webrtc::webKitVP9DecoderFromVTDecoder): (webrtc::startVP9DecoderSession): (webrtc::decodeVP9DecoderFrameFromContiguousBlock): (webrtc::decodeVP9DecoderFrame): (webrtc::WebKitVP9DecoderReceiver::WebKitVP9DecoderReceiver): (webrtc::WebKitVP9DecoderReceiver::~WebKitVP9DecoderReceiver): (webrtc::WebKitVP9DecoderReceiver::decoderFailed): (webrtc::WebKitVP9DecoderReceiver::Decoded): * Source/webrtc/sdk/WebKit/WebKitVP9Decoder.h: Added. * libwebrtc.xcodeproj/project.pbxproj: Source/WebKit: Add a runtime flag to enable registration of VP9 as a VT decoder. Register conditionally this decoder on creation of page based on this flag. Test: media/vp9.html * Scripts/GeneratePreferences.rb: * Shared/WebPageCreationParameters.cpp: (WebKit::WebPageCreationParameters::encode const): (WebKit::WebPageCreationParameters::decode): * Shared/WebPageCreationParameters.h: * Shared/WebPreferences.yaml: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::creationParameters): * WebProcess/WebPage/WebPage.cpp: (WebKit::m_limitsNavigationsToAppBoundDomains): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::enableVP9Decoder): * WebProcess/WebProcess.h: LayoutTests: * media/content/bipbop-vp9.mp4: Added. * media/vp9-expected.txt: Added. * media/vp9.html: Added. Canonical link: https://commits.webkit.org/226722@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263894 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-07-03 14:21:33 +00:00
<html>
<body>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<video id="video" controls src="content/bipbop-vp9.mp4" autoplay playsInline></video>
<script>
// FIXME: Add test for MediaSource.isTypeSupported("video/mp4; codecs=vp9")
test(() => {
let expectedVP9Support = ""
if (window.internals && window.internals.usingGStreamer())
expectedVP9Support = "probably"
assert_equals(video.canPlayType("video/mp4; codecs=vp9"), expectedVP9Support, "canPlayType");
Allow registering VP9 as a VT decoder https://bugs.webkit.org/show_bug.cgi?id=213837 <rdar://problem/64984881> Reviewed by Jer Noble. Source/ThirdParty/libwebrtc: Implement a method that registers VP9 as a VT decoder. Implement the binding code between VP9DecoderImpl and VT pluggable codec API. Restrict this to internal SDK for now. * Configurations/libwebrtc.iOS.exp: * Configurations/libwebrtc.iOSsim.exp: * Configurations/libwebrtc.mac.exp: * Source/webrtc/sdk/WebKit/WebKitUtilities.h: * Source/webrtc/sdk/WebKit/WebKitUtilities.mm: (webrtc::createPixelBufferPool): * Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp: Added. (webrtc::registerWebKitVP9Decoder): (webrtc::createWebKitVP9Decoder): (webrtc::invalidateVP9Decoder): (webrtc::finalizeVP9Decoder): (webrtc::copyVP9DecoderDebugDescription): (webrtc::webKitVP9DecoderFromVTDecoder): (webrtc::startVP9DecoderSession): (webrtc::decodeVP9DecoderFrameFromContiguousBlock): (webrtc::decodeVP9DecoderFrame): (webrtc::WebKitVP9DecoderReceiver::WebKitVP9DecoderReceiver): (webrtc::WebKitVP9DecoderReceiver::~WebKitVP9DecoderReceiver): (webrtc::WebKitVP9DecoderReceiver::decoderFailed): (webrtc::WebKitVP9DecoderReceiver::Decoded): * Source/webrtc/sdk/WebKit/WebKitVP9Decoder.h: Added. * libwebrtc.xcodeproj/project.pbxproj: Source/WebKit: Add a runtime flag to enable registration of VP9 as a VT decoder. Register conditionally this decoder on creation of page based on this flag. Test: media/vp9.html * Scripts/GeneratePreferences.rb: * Shared/WebPageCreationParameters.cpp: (WebKit::WebPageCreationParameters::encode const): (WebKit::WebPageCreationParameters::decode): * Shared/WebPageCreationParameters.h: * Shared/WebPreferences.yaml: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::creationParameters): * WebProcess/WebPage/WebPage.cpp: (WebKit::m_limitsNavigationsToAppBoundDomains): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::enableVP9Decoder): * WebProcess/WebProcess.h: LayoutTests: * media/content/bipbop-vp9.mp4: Added. * media/vp9-expected.txt: Added. * media/vp9.html: Added. Canonical link: https://commits.webkit.org/226722@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263894 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-07-03 14:21:33 +00:00
}, "HTMLMediaElement.canPlay VP9");
promise_test(async() => {
if (window.internals && !window.internals.usingGStreamer() && !window.internals.usingAppleInternalSDK())
Allow registering VP9 as a VT decoder https://bugs.webkit.org/show_bug.cgi?id=213837 <rdar://problem/64984881> Reviewed by Jer Noble. Source/ThirdParty/libwebrtc: Implement a method that registers VP9 as a VT decoder. Implement the binding code between VP9DecoderImpl and VT pluggable codec API. Restrict this to internal SDK for now. * Configurations/libwebrtc.iOS.exp: * Configurations/libwebrtc.iOSsim.exp: * Configurations/libwebrtc.mac.exp: * Source/webrtc/sdk/WebKit/WebKitUtilities.h: * Source/webrtc/sdk/WebKit/WebKitUtilities.mm: (webrtc::createPixelBufferPool): * Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp: Added. (webrtc::registerWebKitVP9Decoder): (webrtc::createWebKitVP9Decoder): (webrtc::invalidateVP9Decoder): (webrtc::finalizeVP9Decoder): (webrtc::copyVP9DecoderDebugDescription): (webrtc::webKitVP9DecoderFromVTDecoder): (webrtc::startVP9DecoderSession): (webrtc::decodeVP9DecoderFrameFromContiguousBlock): (webrtc::decodeVP9DecoderFrame): (webrtc::WebKitVP9DecoderReceiver::WebKitVP9DecoderReceiver): (webrtc::WebKitVP9DecoderReceiver::~WebKitVP9DecoderReceiver): (webrtc::WebKitVP9DecoderReceiver::decoderFailed): (webrtc::WebKitVP9DecoderReceiver::Decoded): * Source/webrtc/sdk/WebKit/WebKitVP9Decoder.h: Added. * libwebrtc.xcodeproj/project.pbxproj: Source/WebKit: Add a runtime flag to enable registration of VP9 as a VT decoder. Register conditionally this decoder on creation of page based on this flag. Test: media/vp9.html * Scripts/GeneratePreferences.rb: * Shared/WebPageCreationParameters.cpp: (WebKit::WebPageCreationParameters::encode const): (WebKit::WebPageCreationParameters::decode): * Shared/WebPageCreationParameters.h: * Shared/WebPreferences.yaml: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::creationParameters): * WebProcess/WebPage/WebPage.cpp: (WebKit::m_limitsNavigationsToAppBoundDomains): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::enableVP9Decoder): * WebProcess/WebProcess.h: LayoutTests: * media/content/bipbop-vp9.mp4: Added. * media/vp9-expected.txt: Added. * media/vp9.html: Added. Canonical link: https://commits.webkit.org/226722@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263894 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-07-03 14:21:33 +00:00
return;
await video.play();
assert_equals(video.videoWidth, 640);
assert_equals(video.videoHeight, 480);
}, "VP9 decoding");
</script>
</body>
</html>