Changeset 267138 in webkit
- Timestamp:
- Sep 16, 2020 12:08:03 AM (4 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r267137 r267138 1 2020-09-16 Philippe Normand <pnormand@igalia.com> 2 3 [GStreamer][1.18] Regressions 4 https://bugs.webkit.org/show_bug.cgi?id=216558 5 6 Reviewed by Xabier Rodriguez-Calvar. 7 8 The most significant change here is the added support for video rendering stats caching. 9 This was caught by 10 imported/w3c/web-platform-tests/media-source/mediasource-getvideoplaybackquality.html 11 12 * platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp: 13 (webKitGLVideoSinkGetProperty): Fix 1.18 version runtime check. 1.17 was the development version of 1.18. 14 * platform/graphics/gstreamer/GStreamerRegistryScanner.cpp: 15 (WebCore::GStreamerRegistryScanner::isAVC1CodecSupported const): Ditto. 16 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: 17 (WebCore::MediaPlayerPrivateGStreamer::createVideoSink): Ditto. 18 (WebCore::MediaPlayerPrivateGStreamer::videoPlaybackQualityMetrics): Cache or reuse cached 19 statistics. Caching is required so that metrics queries performed after EOS still return 20 valid values. 21 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: 22 1 23 2020-09-15 Said Abou-Hallawa <sabouhallawa@apple.com> 2 24 -
trunk/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp
r263217 r267138 188 188 switch (propertyId) { 189 189 case PROP_STATS: 190 if (webkitGstCheckVersion(1, 1 7, 0)) {190 if (webkitGstCheckVersion(1, 18, 0)) { 191 191 GUniqueOutPtr<GstStructure> stats; 192 192 g_object_get(sink->priv->appSink.get(), "stats", &stats.outPtr(), nullptr); -
trunk/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp
r264162 r267138 422 422 } 423 423 424 if (webkitGstCheckVersion(1, 1 7, 0)) {424 if (webkitGstCheckVersion(1, 18, 0)) { 425 425 GST_DEBUG("Checking video decoders for constrained caps"); 426 426 return checkH264Caps(makeString("video/x-h264, level=(string)", level, ", profile=(string)", profile).utf8().data()); -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
r265492 r267138 3389 3389 3390 3390 GstElement* videoSink = nullptr; 3391 if (!webkitGstCheckVersion(1, 1 7, 0)) {3391 if (!webkitGstCheckVersion(1, 18, 0)) { 3392 3392 m_fpsSink = gst_element_factory_make("fpsdisplaysink", "sink"); 3393 3393 if (m_fpsSink) { … … 3435 3435 Optional<VideoPlaybackQualityMetrics> MediaPlayerPrivateGStreamer::videoPlaybackQualityMetrics() 3436 3436 { 3437 if (!webkitGstCheckVersion(1, 1 7, 0) && !m_fpsSink)3437 if (!webkitGstCheckVersion(1, 18, 0) && !m_fpsSink) 3438 3438 return WTF::nullopt; 3439 3439 3440 3440 uint64_t totalVideoFrames = 0; 3441 3441 uint64_t droppedVideoFrames = 0; 3442 if (webkitGstCheckVersion(1, 1 7, 0)) {3442 if (webkitGstCheckVersion(1, 18, 0)) { 3443 3443 GUniqueOutPtr<GstStructure> stats; 3444 3444 g_object_get(m_videoSink.get(), "stats", &stats.outPtr(), nullptr); … … 3455 3455 droppedVideoFrames = droppedFrames; 3456 3456 } 3457 3458 // Cache or reuse cached statistics. Caching is required so that metrics queries performed 3459 // after EOS still return valid values. 3460 if (totalVideoFrames) 3461 m_totalVideoFrames = totalVideoFrames; 3462 else if (m_totalVideoFrames) 3463 totalVideoFrames = m_totalVideoFrames; 3464 if (droppedVideoFrames) 3465 m_droppedVideoFrames = droppedVideoFrames; 3466 else if (m_droppedVideoFrames) 3467 droppedVideoFrames = m_droppedVideoFrames; 3457 3468 3458 3469 uint32_t corruptedVideoFrames = 0; -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
r263556 r267138 534 534 535 535 GRefPtr<GstElement> m_fpsSink { nullptr }; 536 uint64_t m_totalVideoFrames { 0 }; 537 uint64_t m_droppedVideoFrames { 0 }; 536 538 537 539 private:
Note: See TracChangeset
for help on using the changeset viewer.