Title: [210740] trunk/Source/WebCore
- Revision
- 210740
- Author
- zandober...@gmail.com
- Date
- 2017-01-13 12:53:15 -0800 (Fri, 13 Jan 2017)
Log Message
[GStreamer] Cache the accelerated capability of MediaPlayerClient in MediaPlayerPrivateGStreamerBase
https://bugs.webkit.org/show_bug.cgi?id=167015
Reviewed by Jer Noble.
In MediaPlayerPrivateGStreamerBase, avoid continuously querying the MediaPlayerClient
object about the accelerated compositing capabilities. Instead, cache this information
when creating the video sink (which is most affected by this information anyway), storing
it in a new protected boolean member variable in the MediaPlayerPrivateGStreamerBase class.
All calls to MediaPlayerClient::mediaPlayerRenderingCanBeAccelerated() and
MediaPlayerClient::mediaPlayerAcceleratedCompositingEnabled() are replaced by tests
on the value of this new member variable.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::naturalSize):
(WebCore::MediaPlayerPrivateGStreamerBase::repaint):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamerBase::paint):
(WebCore::MediaPlayerPrivateGStreamerBase::createVideoSink):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (210739 => 210740)
--- trunk/Source/WebCore/ChangeLog 2017-01-13 19:18:30 UTC (rev 210739)
+++ trunk/Source/WebCore/ChangeLog 2017-01-13 20:53:15 UTC (rev 210740)
@@ -1,3 +1,29 @@
+2017-01-13 Zan Dobersek <zdober...@igalia.com>
+
+ [GStreamer] Cache the accelerated capability of MediaPlayerClient in MediaPlayerPrivateGStreamerBase
+ https://bugs.webkit.org/show_bug.cgi?id=167015
+
+ Reviewed by Jer Noble.
+
+ In MediaPlayerPrivateGStreamerBase, avoid continuously querying the MediaPlayerClient
+ object about the accelerated compositing capabilities. Instead, cache this information
+ when creating the video sink (which is most affected by this information anyway), storing
+ it in a new protected boolean member variable in the MediaPlayerPrivateGStreamerBase class.
+
+ All calls to MediaPlayerClient::mediaPlayerRenderingCanBeAccelerated() and
+ MediaPlayerClient::mediaPlayerAcceleratedCompositingEnabled() are replaced by tests
+ on the value of this new member variable.
+
+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
+ (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
+ (WebCore::MediaPlayerPrivateGStreamerBase::naturalSize):
+ (WebCore::MediaPlayerPrivateGStreamerBase::repaint):
+ (WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
+ (WebCore::MediaPlayerPrivateGStreamerBase::paint):
+ (WebCore::MediaPlayerPrivateGStreamerBase::createVideoSink):
+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
+
2017-01-13 Chris Dumez <cdu...@apple.com>
Report post-page load CPU usage using diagnostic logging
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp (210739 => 210740)
--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2017-01-13 19:18:30 UTC (rev 210739)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2017-01-13 20:53:15 UTC (rev 210740)
@@ -2016,7 +2016,7 @@
g_object_set(m_pipeline.get(), "audio-filter", scale, nullptr);
}
- if (!m_player->client().mediaPlayerRenderingCanBeAccelerated(m_player)) {
+ if (!m_renderingCanBeAccelerated) {
// If not using accelerated compositing, let GStreamer handle
// the image-orientation tag.
GstElement* videoFlip = gst_element_factory_make("videoflip", nullptr);
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp (210739 => 210740)
--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp 2017-01-13 19:18:30 UTC (rev 210739)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp 2017-01-13 20:53:15 UTC (rev 210740)
@@ -403,7 +403,7 @@
#if USE(TEXTURE_MAPPER_GL)
// When using accelerated compositing, if the video is tagged as rotated 90 or 270 degrees, swap width and height.
- if (m_player->client().mediaPlayerRenderingCanBeAccelerated(m_player)) {
+ if (m_renderingCanBeAccelerated) {
if (m_videoSourceOrientation.usesWidthAsHeight())
originalSize = originalSize.transposedSize();
}
@@ -625,7 +625,7 @@
ASSERT(isMainThread());
#if USE(TEXTURE_MAPPER_GL) && !USE(COORDINATED_GRAPHICS)
- if (supportsAcceleratedRendering() && m_player->client().mediaPlayerRenderingCanBeAccelerated(m_player) && client()) {
+ if (m_renderingCanBeAccelerated && client()) {
client()->setPlatformLayerNeedsDisplay();
#if USE(GSTREAMER_GL)
m_drawCondition.notifyOne();
@@ -656,7 +656,7 @@
}
#if USE(COORDINATED_GRAPHICS_THREADED)
- if (!m_player->client().mediaPlayerAcceleratedCompositingEnabled()) {
+ if (!m_renderingCanBeAccelerated) {
LockHolder locker(m_drawMutex);
m_drawTimer.startOneShot(0);
m_drawCondition.wait(m_drawMutex);
@@ -728,7 +728,7 @@
return;
ImagePaintingOptions paintingOptions(CompositeCopy);
- if (m_player->client().mediaPlayerRenderingCanBeAccelerated(m_player))
+ if (m_renderingCanBeAccelerated)
paintingOptions.m_orientationDescription.setImageOrientationEnum(m_videoSourceOrientation);
RefPtr<ImageGStreamer> gstImage = ImageGStreamer::createImage(m_sample.get());
@@ -1020,8 +1020,11 @@
GstElement* MediaPlayerPrivateGStreamerBase::createVideoSink()
{
+ m_renderingCanBeAccelerated = supportsAcceleratedRendering() && m_player->client().mediaPlayerAcceleratedCompositingEnabled()
+ && m_player->client().mediaPlayerRenderingCanBeAccelerated(m_player);
+
#if USE(GSTREAMER_GL)
- if (m_player->client().mediaPlayerRenderingCanBeAccelerated(m_player))
+ if (m_renderingCanBeAccelerated)
m_videoSink = createVideoSinkGL();
#endif
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h (210739 => 210740)
--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h 2017-01-13 19:18:30 UTC (rev 210739)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h 2017-01-13 20:53:15 UTC (rev 210740)
@@ -205,6 +205,7 @@
#endif
mutable FloatSize m_videoSize;
bool m_usingFallbackVideoSink;
+ bool m_renderingCanBeAccelerated { false };
#if USE(TEXTURE_MAPPER_GL) && !USE(COORDINATED_GRAPHICS_MULTIPROCESS)
void updateTexture(BitmapTextureGL&, GstVideoInfo&);
#endif
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes