#include "IntRect.h"
#include "RenderLayerBacking.h"
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !(CPU(X86) || CPU(X86_64))
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
#include <gst/interfaces/xoverlay.h>
#include <gst/video/gstvideosink.h>
#include <gst/video/video.h>
#include <cairo-xlib.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
-#endif // ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !(CPU(X86) || CPU(X86_64))
+#endif // ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
-#if !ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) || CPU(X86) || CPU(X86_64)
+#if !ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
static Display* g_nativeDisplay = 0;
static int g_nativeWindow = 0;
#endif
namespace WebCore {
+#if USE(ACCELERATED_VIDEO_VAAPI)
+ void setVaapiEnv()
+ {
+ static bool envSet = false;
+ if (!envSet) {
+ envSet = true;
+ setenv("PSB_VIDEO_CTEXTURE", "1", true);
+ }
+ }
+#endif
+
VideoLayerTizen::VideoLayerTizen(HTMLMediaElement* media)
: m_media(media)
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !(CPU(X86) || CPU(X86_64))
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
, m_videoSink(0)
#else
, m_platformSurfaceID(0)
-#endif // ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !(CPU(X86) || CPU(X86_64))
+#endif // ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
{
-#if !ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) || CPU(X86) || CPU(X86_64)
+#if !ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
if (!g_nativeDisplay)
g_nativeDisplay = XOpenDisplay(0);
{
syncLayer(0);
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !(CPU(X86) || CPU(X86_64))
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
if (m_platformSurface)
m_platformSurface.clear();
XDestroyWindow(g_nativeDisplay, g_nativeWindow);
g_nativeWindow = 0;
}
-#endif // ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !(CPU(X86) || CPU(X86_64))
+#endif // ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
}
PlatformLayer* VideoLayerTizen::platformLayer() const
}
}
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !(CPU(X86) || CPU(X86_64))
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
static gboolean platformSurfaceUpdateTimeoutCallback(VideoLayerTizen* layer)
{
layer->notifySyncRequired();
GstElement* VideoLayerTizen::createVideoSink()
{
+#if !USE(ACCELERATED_VIDEO_VAAPI)
GstElement* videoSink = gst_element_factory_make("xvimagesink", "xvimagesink");
g_object_set(videoSink, "rotate", 0, NULL);
+#else
+ setVaapiEnv();
+ GstElement* videoSink = gst_element_factory_make("vaapisink", "vaapisink");
+ g_object_set(videoSink, "is-pixmap", 1, NULL);
+#endif
m_videoSink = videoSink;
m_platformSurface = SharedVideoPlatformSurfaceTizen::create(size);
m_platformSurface->setVideoPlatformSurfaceUpdateListener(this);
+ if (m_platformSurfaceToBeRemoved)
+ m_platformSurface->copySurface(m_platformSurfaceToBeRemoved.get());
+
gst_x_overlay_set_window_handle(GST_X_OVERLAY(m_videoSink), m_platformSurface->id());
+#if !USE(ACCELERATED_VIDEO_VAAPI)
g_object_set(m_videoSink, "rotate", 0, NULL);
+#else
+ g_object_set(m_videoSink, "is-pixmap", 1, NULL);
+#endif
}
void VideoLayerTizen::paintCurrentFrameInContext(GraphicsContext* context, const IntRect& rect)
m_platformSurface->paintCurrentFrameInContext(context, rect);
}
#else
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && (CPU(X86) || CPU(X86_64))
-bool VideoLayerTizen::swapPlatformSurfaces()
-{
- return true;
-}
-#endif
+
void VideoLayerTizen::paintVideoLayer(IntSize videoSize)
{
if (videoSize.isEmpty())
syncLayer(this);
}
-#endif // ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !(CPU(X86) || CPU(X86_64))
+#endif // ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
#if USE(GRAPHICS_SURFACE) || ENABLE(TIZEN_CANVAS_GRAPHICS_SURFACE)
uint64_t VideoLayerTizen::graphicsSurfaceToken() const
{
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !(CPU(X86) || CPU(X86_64))
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
return (m_platformSurface ? m_platformSurface->id() : 0);
#else
return m_platformSurfaceID;
uint32_t VideoLayerTizen::copyToGraphicsSurface()
{
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !(CPU(X86) || CPU(X86_64))
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
return (m_platformSurface ? m_platformSurface->id() : 0);
#else
return m_platformSurfaceID;
int VideoLayerTizen::graphicsSurfaceFlags() const
{
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !(CPU(X86) || CPU(X86_64))
- return GraphicsSurface::Is2D | GraphicsSurface::UseLinearFilter | GraphicsSurface::Alpha;
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+ return m_platformSurface ? m_platformSurface->graphicsSurfaceFlags() : GraphicsSurface::Is2D;
#else
return GraphicsSurface::Is2D;
#endif