Changeset 264162 in webkit
- Timestamp:
- Jul 9, 2020, 2:24:58 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/platform/glib/TestExpectations (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp (modified) (6 diffs)
-
Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r264156 r264162 1 2020-07-09 Philippe Normand <pnormand@igalia.com> 2 3 [GStreamer][MSE] AV1 support 4 https://bugs.webkit.org/show_bug.cgi?id=207547 5 6 Reviewed by Xabier Rodriguez-Calvar. 7 8 * platform/glib/TestExpectations: Mark media/media-can-play-av1.html as failing until the 9 Flatpak SDK ships gst-plugins-rs. 10 1 11 2020-07-09 Carlos Garcia Campos <cgarcia@igalia.com> 2 12 -
trunk/LayoutTests/platform/glib/TestExpectations
r264156 r264162 159 159 160 160 webkit.org/b/214031 imported/w3c/web-platform-tests/html/semantics/embedded-content/the-video-element/video-poster-shown-preload-auto.html [ ImageOnlyFailure ] 161 162 webkit.org/b/207547 media/media-can-play-av1.html [ Failure ] 161 163 162 164 #//////////////////////////////////////////////////////////////////////////////////////// -
trunk/Source/WebCore/ChangeLog
r264161 r264162 1 2020-07-09 Philippe Normand <pnormand@igalia.com> 2 3 [GStreamer][MSE] AV1 support 4 https://bugs.webkit.org/show_bug.cgi?id=207547 5 6 Reviewed by Xabier Rodriguez-Calvar. 7 8 If only the av1dec decoder is available, consider AV1 decoding 9 support as disabled, because this plugin performs really badly. 10 However, if any other AV1 decoder is present, such as the 11 dav1d-based Rust decoder for instance, consider AV1 support as 12 enabled. 13 14 These checks are now performed by both RegistryScanner instances, 15 for MSE and non-MSE players. 16 17 * platform/graphics/gstreamer/GStreamerRegistryScanner.cpp: 18 (WebCore::GStreamerRegistryScanner::hasElementForMediaType const): 19 (WebCore::GStreamerRegistryScanner::initialize): 20 * platform/graphics/gstreamer/GStreamerRegistryScanner.h: 21 1 22 2020-07-09 Alicia Boya García <aboya@igalia.com> 2 23 -
trunk/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp
r261986 r264162 68 68 } 69 69 70 GStreamerRegistryScanner::RegistryLookupResult GStreamerRegistryScanner::hasElementForMediaType(GList* elementFactories, const char* capsString, bool shouldCheckHardwareClassifier ) const70 GStreamerRegistryScanner::RegistryLookupResult GStreamerRegistryScanner::hasElementForMediaType(GList* elementFactories, const char* capsString, bool shouldCheckHardwareClassifier, Optional<Vector<String>> blackList) const 71 71 { 72 72 GRefPtr<GstCaps> caps = adoptGRef(gst_caps_from_string(capsString)); … … 74 74 bool isSupported = candidates; 75 75 bool isUsingHardware = false; 76 77 if (blackList.hasValue() && !blackList->isEmpty()) { 78 bool hasValidCandidate = false; 79 for (GList* factories = candidates; factories; factories = g_list_next(factories)) { 80 String name(gst_plugin_feature_get_name(GST_PLUGIN_FEATURE_CAST(factories->data))); 81 if (blackList->contains(name)) 82 continue; 83 hasValidCandidate = true; 84 break; 85 } 86 if (!hasValidCandidate) { 87 GST_WARNING("All elements for caps %" GST_PTR_FORMAT " are blacklisted", caps.get()); 88 isSupported = false; 89 shouldCheckHardwareClassifier = false; 90 } 91 } 76 92 77 93 if (shouldCheckHardwareClassifier) { … … 160 176 } 161 177 162 if (hasElementForMediaType(m_demuxerFactories, "video/x-matroska")) { 178 bool matroskaSupported = hasElementForMediaType(m_demuxerFactories, "video/x-matroska"); 179 if (matroskaSupported) { 163 180 auto vp8DecoderAvailable = hasElementForMediaType(m_videoDecoderFactories, "video/x-vp8", true); 164 181 auto vp9DecoderAvailable = hasElementForMediaType(m_videoDecoderFactories, "video/x-vp9", true); … … 189 206 m_codecMap.add(AtomString("avc*"), h264DecoderAvailable.isUsingHardware); 190 207 m_codecMap.add(AtomString("mp4v*"), h264DecoderAvailable.isUsingHardware); 208 } 209 210 Vector<String> av1DecodersBlacklist { "av1dec"_s }; 211 if ((matroskaSupported || isContainerTypeSupported("video/mp4")) && hasElementForMediaType(m_videoDecoderFactories, "video/x-av1", false, makeOptional(WTFMove(av1DecodersBlacklist)))) { 212 m_codecMap.add(AtomString("av01*"), false); 213 m_codecMap.add(AtomString("x-av1"), false); 191 214 } 192 215 … … 263 286 } 264 287 265 bool matroskaSupported = hasElementForMediaType(m_demuxerFactories, "video/x-matroska");266 288 if (matroskaSupported) { 267 289 m_mimeTypeSet.add(AtomString("video/x-matroska")); … … 270 292 m_mimeTypeSet.add(AtomString("video/webm")); 271 293 } 272 273 if ((matroskaSupported || isContainerTypeSupported("video/mp4")) && hasElementForMediaType(m_videoDecoderFactories, "video/x-av1"))274 m_codecMap.add(AtomString("av01*"), false);275 294 } 276 295 -
trunk/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.h
r261986 r264162 75 75 void fillMimeTypeSetFromCapsMapping(Vector<GstCapsWebKitMapping>&); 76 76 77 RegistryLookupResult hasElementForMediaType(GList* elementFactories, const char* capsString, bool shouldCheckHardwareClassifier = false ) const;77 RegistryLookupResult hasElementForMediaType(GList* elementFactories, const char* capsString, bool shouldCheckHardwareClassifier = false, Optional<Vector<String>> blackList = WTF::nullopt) const; 78 78 79 79 bool isAVC1CodecSupported(const String& codec, bool shouldCheckForHardwareUse) const;
Note:
See TracChangeset
for help on using the changeset viewer.