Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b84521e66dedfbd7f984017dee3f5a7a8191b165 https://github.com/WebKit/WebKit/commit/b84521e66dedfbd7f984017dee3f5a7a8191b165 Author: Enrique Ocaña González <eoca...@igalia.com> Date: 2022-11-02 (Wed, 02 Nov 2022)
Changed paths: M Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp M Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.h M Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp Log Message: ----------- [MSE][GStreamer] Relax h264/h265 codec check for MSE https://bugs.webkit.org/show_bug.cgi?id=247129 Reviewed by Alicia Boya Garcia. Some platforms disable/remove software parsers because of the way encrypted playback is implemented, but we still want working MSE playback there. Although software parsers are strongly recommended for MSE playback (eg: to complete info from buffers coming from some js transmuxers), they aren't strictly needed (at your own risk!). However, some video decoders (eg: the OMX h264 decoder) can only accept some of the available formats (only stream-format=byte-stream in the case of OMX). In that case, a parser is still needed in order to convert between formats before supplying buffers to the decoder. This patch checks that the most efficient decoder (hardware if available, software if not) supports both formats. If the most efficient decoder doesn't support all the formats, a parser is demanded to be available. If it's not available, the affected codec (h264, h265) is declared as not supported. Inspired by work by Eugene Mutavchi <ievgen_mutav...@comcast.com> See: https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/948 * Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp: (WebCore::GStreamerRegistryScanner::initializeDecoders): Ask for the corresponding parser if any of the h264 or h265 decoders support don't support any of the possible stream-format variants. If the parser isn't present, declare the corresponding codec as unsupported. * Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.h: (WebCore::GStreamerRegistryScanner::RegistryLookupResult::merge): Added method to merge two results, supported when both are supported, and using hardware when both are using hardware. (WebCore::GStreamerRegistryScanner::RegistryLookupResult::operator==): Added equality operator. (WebCore::GStreamerRegistryScanner::RegistryLookupResult::operator!=): Added inequality operator. * Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp: (WebCore::createOptionalParserForFormat): Warn when a parser can't be created. Canonical link: https://commits.webkit.org/256222@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes