)
IF (ENABLE_VIDEO OR ENABLE_WEB_AUDIO)
- LIST(APPEND WebCore_INCLUDE_DIRECTORIES
- "${WEBCORE_DIR}/platform/graphics/gstreamer"
+ IF(NOT GST_API_VERSION_1)
+ LIST(APPEND WebCore_INCLUDE_DIRECTORIES
+ "${WEBCORE_DIR}/platform/graphics/gstreamer"
+ ${GSTREAMER_INCLUDE_DIRS}
+ ${GSTREAMER_BASE_INCLUDE_DIRS}
+ ${GSTREAMER_APP_INCLUDE_DIRS}
+ ${GSTREAMER_INTERFACES_INCLUDE_DIRS}
+ ${GSTREAMER_PBUTILS_INCLUDE_DIRS}
+ )
+ ELSE()
+ LIST(APPEND WebCore_INCLUDE_DIRECTORIES
+ "${WEBCORE_DIR}/platform/graphics/gstreamer"
+ ${GSTREAMER_INCLUDE_DIRS}
+ ${GSTREAMER_BASE_INCLUDE_DIRS}
+ ${GSTREAMER_APP_INCLUDE_DIRS}
+ ${GSTREAMER_PBUTILS_INCLUDE_DIRS}
+ )
+ ENDIF()
- ${GSTREAMER_INCLUDE_DIRS}
- ${GSTREAMER_BASE_INCLUDE_DIRS}
- ${GSTREAMER_APP_INCLUDE_DIRS}
- ${GSTREAMER_INTERFACES_INCLUDE_DIRS}
- ${GSTREAMER_PBUTILS_INCLUDE_DIRS}
- )
LIST(APPEND WebCore_SOURCES
platform/graphics/gstreamer/GRefPtrGStreamer.cpp
platform/graphics/gstreamer/GStreamerUtilities.cpp
platform/graphics/gstreamer/GStreamerVersioning.cpp
)
- LIST(APPEND WebCore_LIBRARIES
- ${GSTREAMER_LIBRARIES}
- ${GSTREAMER_BASE_LIBRARIES}
- ${GSTREAMER_APP_LIBRARIES}
- ${GSTREAMER_INTERFACES_LIBRARIES}
- ${GSTREAMER_PBUTILS_LIBRARIES}
- )
+ IF(GST_API_VERSION_1)
+ LIST(APPEND WebCore_LIBRARIES
+ ${GSTREAMER_LIBRARIES}
+ ${GSTREAMER_BASE_LIBRARIES}
+ ${GSTREAMER_APP_LIBRARIES}
+ ${GSTREAMER_PBUTILS_LIBRARIES}
+ )
+ ELSE()
+ LIST(APPEND WebCore_LIBRARIES
+ ${GSTREAMER_LIBRARIES}
+ ${GSTREAMER_BASE_LIBRARIES}
+ ${GSTREAMER_APP_LIBRARIES}
+ ${GSTREAMER_INTERFACES_LIBRARIES}
+ ${GSTREAMER_PBUTILS_LIBRARIES}
+ )
+ ENDIF()
ENDIF ()
IF (ENABLE_VIDEO)
#if ENABLE(TIZEN_WEB_AUDIO)
GValue value;
g_value_set_boolean(&value, true);
+#ifndef GST_API_VERSION_1
gst_child_proxy_set_property(GST_OBJECT(audioSink.get()), "close-handle-on-prepare", &value);
+#else
+ gst_child_proxy_set_property(GST_CHILD_PROXY(audioSink.get()), "close-handle-on-prepare", &value);
+#endif
#endif
GstElement* audioConvert = gst_element_factory_make("audioconvert", 0);
#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
static GstBusSyncReply mediaPlayerPrivateSyncHandler(GstBus* bus, GstMessage* message, MediaPlayerPrivateGStreamer* playerPrivate)
{
+#ifdef GST_API_VERSION_1
+ const GstStructure *structure;
+ structure = gst_message_get_structure (message);
+#endif
+
// ignore anything but 'prepare-xid' message
if (GST_MESSAGE_TYPE(message) != GST_MESSAGE_ELEMENT)
return GST_BUS_PASS;
+#ifdef GST_API_VERSION_1
+ if (!gst_structure_has_name (structure, "prepare-xid"))
+#else
if (!gst_structure_has_name (message->structure, "prepare-xid"))
+#endif
return GST_BUS_PASS;
playerPrivate->xWindowIdPrepared(message);
m_hasVideo = videoTracks > 0;
-#if ENABLE(TIZEN_GSTREAMER_VIDEO)
- int width, height;
+#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#ifndef GST_API_VERSION_1
+ int width;
+ int height;
if (gst_video_get_size(m_videoSinkPad.get(), &width, &height)) {
IntSize size(width, height);
if (m_videoSize != size) {
m_videoSize = IntSize();
-#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
m_videoLayer->setOverlay(naturalSize());
-#endif
}
}
-
- m_player->mediaPlayerClient()->mediaPlayerEngineUpdated(m_player);
-#else // ENABLE(TIZEN_GSTREAMER_VIDEO)
+#endif
+#endif
m_videoSize = IntSize();
m_player->mediaPlayerClient()->mediaPlayerEngineUpdated(m_player);
-#endif
}
void MediaPlayerPrivateGStreamer::audioChanged()
gst_bus_add_signal_watch(bus.get());
g_signal_connect(bus.get(), "message", G_CALLBACK(mediaPlayerPrivateMessageCallback), this);
#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#ifdef GST_API_VERSION_1
+ gst_bus_set_sync_handler(bus.get(), GstBusSyncHandler(mediaPlayerPrivateSyncHandler), this, NULL);
+#else
gst_bus_set_sync_handler(bus.get(), GstBusSyncHandler(mediaPlayerPrivateSyncHandler), this);
#endif
+#endif
gst_object_unref(bus.get());
g_object_set(m_playBin.get(), "mute", m_player->muted(), NULL);
#endif
void MediaPlayerPrivateGStreamer::xWindowIdPrepared(GstMessage* message)
{
- // It is called in streaming thread.
- // It should be used only to set window handle to video sink.
- int videoWidth, videoHeight;
+#ifdef GST_API_VERSION_1
+ const GstStructure *structure;
+ structure = gst_message_get_structure (message);
+#endif
+ int videoWidth, videoHeight;
+#ifdef GST_API_VERSION_1
+ gst_structure_get_int(structure, "video-width", &videoWidth);
+ gst_structure_get_int(structure, "video-height", &videoHeight);
+#else
gst_structure_get_int(message->structure, "video-width", &videoWidth);
gst_structure_get_int(message->structure, "video-height", &videoHeight);
+#endif
#if ENABLE(TIZEN_DLOG_SUPPORT)
TIZEN_LOGI("videoWidth: %d, videoHeight: %d", videoWidth, videoHeight);
#if USE(ACCELERATED_VIDEO_VAAPI)
int displayWidth, displayHeight;
+#ifdef GST_API_VERSION_1
+ gst_structure_get_int(structure, "display-width", &displayWidth);
+ gst_structure_get_int(structure, "display-height", &displayHeight);
+#else
gst_structure_get_int(message->structure, "display-width", &displayWidth);
gst_structure_get_int(message->structure, "display-height", &displayHeight);
-
+#endif
m_displaySize = IntSize(displayWidth, displayHeight);
m_videoSize = scaleHDVideoToDisplaySize(videoWidth, videoHeight, displayWidth, displayHeight);
#else
const GstStructure* structure = gst_event_get_structure(event);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CUSTOM_DOWNSTREAM_OOB:
+#ifndef GST_API_VERSION_1
if (structure) {
const GValue* dataAddress = gst_structure_get_value(structure, "data-addr");
priv->addr = g_value_get_uint(dataAddress);
g_signal_emit(sink, webkitVideoSinkSignals[IGNORE_REQUESTED], 0, buf);
gst_buffer_unref(buf);
}
+#else
+ if (structure) {
+ const GValue* dataAddress = gst_structure_get_value(structure, "data-addr");
+ priv->addr = g_value_get_uint(dataAddress);
+ GST_DEBUG_OBJECT(sink, "%d", priv->addr);
+ gchar *addr = g_strdup_printf("ADDR %d", priv->addr);
+ GstBuffer *buf = gst_buffer_new_allocate(NULL,sizeof(addr),NULL);
+ gst_buffer_fill (buf,0,addr,sizeof(addr));
+ GST_DEBUG_OBJECT(sink, "%s", addr);
+
+ g_signal_emit(sink, webkitVideoSinkSignals[IGNORE_REQUESTED], 0, buf);
+ gst_buffer_unref(buf);
+ }
+#endif
break;
default:
GST_LOG_OBJECT(sink, "let base class handle event");
0, // Class offset
0, // Accumulator
0, // Accumulator data
+#ifndef GST_API_VERSION_1
webkitVideoSinkMarshalVoidAndMiniObject,
+#else
+ g_cclosure_marshal_generic,
+#endif
G_TYPE_NONE, // Return type
1, // Only one parameter
GST_TYPE_BUFFER);
#include "RenderLayerBacking.h"
#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#ifndef GST_API_VERSION_1
#include <gst/interfaces/xoverlay.h>
+#else
+#include <gst/video/videooverlay.h>
+#endif
#include <gst/video/gstvideosink.h>
#include <gst/video/video.h>
#else
if (m_platformSurfaceToBeRemoved)
m_platformSurface->copySurface(m_platformSurfaceToBeRemoved.get(), SharedVideoPlatformSurfaceTizen::FitToWidth);
- gst_x_overlay_set_window_handle(GST_X_OVERLAY(m_videoSink), m_platformSurface->id());
+#ifdef GST_API_VERSION_1
+ gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(m_videoSink), m_platformSurface->id());
+#else
+ gst_x_overlay_set_window_handle(GST_X_OVERLAY(m_videoSink), m_platformSurface->id());
+#endif
#if !USE(ACCELERATED_VIDEO_VAAPI)
g_object_set(m_videoSink, "rotate", 0, NULL);
#else
# FIXME: The QUIET keyword can be used once we require CMake 2.8.2.
PKG_CHECK_MODULES(PC_${_component_prefix} ${_pkgconfig_name})
- FIND_PATH(${_component_prefix}_INCLUDE_DIRS
- NAMES ${_header}
- HINTS ${PC_${_component_prefix}_INCLUDE_DIRS} ${PC_${_component_prefix}_INCLUDEDIR}
- PATH_SUFFIXES gstreamer-0.10
- )
+ IF(GST_API_VERSION_1)
+ FIND_PATH(${_component_prefix}_INCLUDE_DIRS
+ NAMES ${_header}
+ HINTS ${PC_${_component_prefix}_INCLUDE_DIRS} ${PC_${_component_prefix}_INCLUDEDIR}
+ PATH_SUFFIXES gstreamer-1.0
+ )
+ ELSE()
+ FIND_PATH(${_component_prefix}_INCLUDE_DIRS
+ NAMES ${_header}
+ HINTS ${PC_${_component_prefix}_INCLUDE_DIRS} ${PC_${_component_prefix}_INCLUDEDIR}
+ PATH_SUFFIXES gstreamer-0.10
+ )
+ ENDIF()
FIND_LIBRARY(${_component_prefix}_LIBRARIES
NAMES ${_library}
# ------------------------
# 1.1. Find headers and libraries
-FIND_GSTREAMER_COMPONENT(GSTREAMER gstreamer-0.10 gst/gst.h gstreamer-0.10)
-FIND_GSTREAMER_COMPONENT(GSTREAMER_BASE gstreamer-base-0.10 gst/gst.h gstbase-0.10)
+IF(GST_API_VERSION_1)
+ FIND_GSTREAMER_COMPONENT(GSTREAMER gstreamer-1.0 gst/gst.h gstreamer-1.0)
+ FIND_GSTREAMER_COMPONENT(GSTREAMER_BASE gstreamer-base-1.0 gst/gst.h gstbase-1.0)
+ELSE()
+ FIND_GSTREAMER_COMPONENT(GSTREAMER gstreamer-0.10 gst/gst.h gstreamer-0.10)
+ FIND_GSTREAMER_COMPONENT(GSTREAMER_BASE gstreamer-base-0.10 gst/gst.h gstbase-0.10)
+ENDIF()
# 1.2. Check GStreamer version
IF (GSTREAMER_INCLUDE_DIRS)
# 2. Find GStreamer plugins
# -------------------------
-FIND_GSTREAMER_COMPONENT(GSTREAMER_APP gstreamer-app-0.10 gst/app/gstappsink.h gstapp-0.10)
-FIND_GSTREAMER_COMPONENT(GSTREAMER_AUDIO gstreamer-audio-0.10 gst/audio/audio.h gstaudio-0.10)
-FIND_GSTREAMER_COMPONENT(GSTREAMER_FFT gstreamer-fft-0.10 gst/fft/gstfft.h gstfft-0.10)
-FIND_GSTREAMER_COMPONENT(GSTREAMER_INTERFACES gstreamer-interfaces-0.10 gst/interfaces/mixer.h gstinterfaces-0.10)
-FIND_GSTREAMER_COMPONENT(GSTREAMER_PBUTILS gstreamer-pbutils-0.10 gst/pbutils/pbutils.h gstpbutils-0.10)
-FIND_GSTREAMER_COMPONENT(GSTREAMER_VIDEO gstreamer-video-0.10 gst/video/video.h gstvideo-0.10)
+IF(GST_API_VERSION_1)
+ FIND_GSTREAMER_COMPONENT(GSTREAMER_APP gstreamer-app-1.0 gst/app/gstappsink.h gstapp-1.0)
+ FIND_GSTREAMER_COMPONENT(GSTREAMER_AUDIO gstreamer-audio-1.0 gst/audio/audio.h gstaudio-1.0)
+ FIND_GSTREAMER_COMPONENT(GSTREAMER_FFT gstreamer-fft-1.0 gst/fft/gstfft.h gstfft-1.0)
+ FIND_GSTREAMER_COMPONENT(GSTREAMER_PBUTILS gstreamer-pbutils-1.0 gst/pbutils/pbutils.h gstpbutils-1.0)
+ FIND_GSTREAMER_COMPONENT(GSTREAMER_VIDEO gstreamer-video-1.0 gst/video/video.h gstvideo-1.0)
+ELSE()
+ FIND_GSTREAMER_COMPONENT(GSTREAMER_APP gstreamer-app-0.10 gst/app/gstappsink.h gstapp-0.10)
+ FIND_GSTREAMER_COMPONENT(GSTREAMER_AUDIO gstreamer-audio-0.10 gst/audio/audio.h gstaudio-0.10)
+ FIND_GSTREAMER_COMPONENT(GSTREAMER_FFT gstreamer-fft-0.10 gst/fft/gstfft.h gstfft-0.10)
+ FIND_GSTREAMER_COMPONENT(GSTREAMER_INTERFACES gstreamer-interfaces-0.10 gst/interfaces/mixer.h gstinterfaces-0.10)
+ FIND_GSTREAMER_COMPONENT(GSTREAMER_PBUTILS gstreamer-pbutils-0.10 gst/pbutils/pbutils.h gstpbutils-0.10)
+ FIND_GSTREAMER_COMPONENT(GSTREAMER_VIDEO gstreamer-video-0.10 gst/video/video.h gstvideo-0.10)
+ENDIF()
# ------------------------------------------------
# 3. Process the COMPONENTS passed to FIND_PACKAGE
IF (ENABLE_VIDEO OR ENABLE_WEB_AUDIO)
+ IF(GST_API_VERSION_1)
+ SET(GSTREAMER_COMPONENTS app pbutils)
+ ELSE ()
SET(GSTREAMER_COMPONENTS app interfaces pbutils)
+ ENDIF()
SET(WTF_USE_GSTREAMER 1)
ADD_DEFINITIONS(-DWTF_USE_GSTREAMER=1)
SET(FEATURE_DEFINES_WITH_SPACE_SEPARATOR "${FEATURE_DEFINES_WITH_SPACE_SEPARATOR} ENABLE_TIZEN_WEB_AUDIO")
ADD_DEFINITIONS(-DENABLE_TIZEN_WEB_AUDIO=1)
+ IF(GST_API_VERSION_1)
+ SET(GSTREAMER_COMPONENTS app pbutils)
+ ELSE ()
SET(GSTREAMER_COMPONENTS app interfaces pbutils)
+ ENDIF()
SET(WTF_USE_GSTREAMER 1)
ADD_DEFINITIONS(-DWTF_USE_GSTREAMER=1)
ENDIF ()
IF (ENABLE_VIDEO)
+ IF(GST_API_VERSION_1)
+ SET(GSTREAMER_COMPONENTS app pbutils video)
+ ELSE ()
SET(GSTREAMER_COMPONENTS app interfaces pbutils video)
+ ENDIF ()
FIND_PACKAGE(GStreamer REQUIRED COMPONENTS ${GSTREAMER_COMPONENTS})
FIND_PACKAGE(ASM REQUIRED)
FIND_PACKAGE(SESSION REQUIRED)
WEBKIT_OPTION_DEFINE(USE_SYSTEM_MALLOC "Toggle system allocator instead of TCmalloc" OFF)
WEBKIT_OPTION_DEFINE(WTF_USE_TILED_BACKING_STORE "Toggle Tiled Backing Store support" OFF)
WEBKIT_OPTION_DEFINE(WTF_USE_WTFURL "Toogle the use of WTFURL for URL parsing" OFF)
+ WEBKIT_OPTION_DEFINE(GST_API_VERSION_1 "Enable GSTREAMER API V1 " ON)
ENDMACRO ()
MACRO (WEBKIT_OPTION_END)
#cmakedefine01 USE_SYSTEM_MALLOC
#cmakedefine01 WTF_USE_TILED_BACKING_STORE
#cmakedefine01 WTF_USE_WTFURL
-
+#cmakedefine GST_API_VERSION_1
+
#cmakedefine01 ENABLE_CDOM_BINDINGS
#cmakedefine01 ENABLE_CSS_FILTERS
)
SET(MiniBrowser_INCLUDE_DIRECTORIES
+ ${ELEMENTARY_INCLUDE_DIRS}
${CAIRO_INCLUDE_DIRS}
${ECORE_INCLUDE_DIRS}
${ECORE_EVAS_INCLUDE_DIRS}
)
SET(MiniBrowser_LIBRARIES
+ ${ELEMENTARY_LIBRARIES}
${JavaScriptCore_LIBRARY_NAME}
${WebCore_LIBRARY_NAME}
${WebKit2_LIBRARY_NAME}
BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(glib-2.0)
+%if %{defined with_Gstreamer0.10}
BuildRequires: pkgconfig(gstreamer-0.10)
BuildRequires: pkgconfig(gstreamer-plugins-base-0.10)
+%else
+BuildRequires: pkgconfig(gstreamer-1.0)
+BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
+%endif
BuildRequires: pkgconfig(harfbuzz)
BuildRequires: pkgconfig(icu-i18n)
BuildRequires: pkgconfig(libmedia-utils)
export TIZEN_WEBKIT_EXTRA_OPTIONS=
fi
+%if %{defined with_Gstreamer0.10}
+export GSTREAMER_API="-DGST_API_VERSION_1=Off"
+%else
+export GSTREAMER_API="-DGST_API_VERSION_1=On"
+%endif
+
mkdir -p $WEBKIT_BUILD_DIR
cd $WEBKIT_BUILD_DIR
export MAKE_OPTION=%{MAKE_OPTION}
if [ "{MAKE_OPTION}" == "${MAKE_OPTION#%}" ]
then
- cmake $SOURCE_DIR -DPORT=Efl -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DENABLE_WEBKIT=Off -DENABLE_WEBKIT2=On -DENABLE_ALLINONE=On -DEFL_TARGET=%{EFL_TARGET} -DDefaultTheme_RESOURCE_NAME=webkit.edj $TIZEN_WEBKIT_EXTRA_OPTIONS
+ cmake $SOURCE_DIR -DPORT=Efl -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DENABLE_WEBKIT=Off -DENABLE_WEBKIT2=On -DENABLE_ALLINONE=On -DEFL_TARGET=%{EFL_TARGET} -DDefaultTheme_RESOURCE_NAME=webkit.edj $TIZEN_WEBKIT_EXTRA_OPTIONS $GSTREAMER_API
make %{?jobs:-j%jobs}
else
make %{MAKE_OPTION} %{?jobs:-j%jobs}