#include <wtf/text/CString.h>
#ifdef GST_API_VERSION_1
+#include <gst/video/videooverlay.h>
#include <gst/audio/streamvolume.h>
#else
+#include <gst/interfaces/xoverlay.h>
#include <gst/interfaces/streamvolume.h>
#endif
return FALSE;
}
-#if ENABLE(TIZEN_GSTREAMER_VIDEO) && (!ENABLE(TIZEN_ACCELERATED_COMPOSITING) || !USE(TIZEN_TEXTURE_MAPPER) || !ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) || CPU(X86) || CPU(X86_64))
+#if ENABLE(TIZEN_GSTREAMER_VIDEO) && (!ENABLE(TIZEN_ACCELERATED_COMPOSITING) || !USE(TIZEN_TEXTURE_MAPPER) || !ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) || CPU(X86) || CPU(X86_64 || USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)))
static void mediaPlayerPrivateRepaintCallback(WebKitVideoSink*, GstBuffer *buffer, MediaPlayerPrivateGStreamer* playerPrivate)
{
playerPrivate->triggerRepaint(buffer);
}
#endif
-#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
static GstBusSyncReply mediaPlayerPrivateSyncHandler(GstBus* bus, GstMessage* message, MediaPlayerPrivateGStreamer* playerPrivate)
{
#ifdef GST_API_VERSION_1
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"))
+ if (gst_is_video_overlay_prepare_window_handle_message(message))
#else
if (!gst_structure_has_name (message->structure, "prepare-xid"))
#endif
}
#endif
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
static ASM_cb_result_t MediaPlayerAudioSessionEventSourcePause(ASM_event_sources_t eventSource, void* callbackData)
{
MediaPlayer* player = static_cast<MediaPlayer*>(callbackData);
#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER)
, m_videoLayer(VideoLayerTizen::create(static_cast<HTMLMediaElement*>(player->mediaPlayerClient())))
#endif // ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER)
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
, m_audioSessionManager(AudioSessionManagerGStreamerTizen::createAudioSessionManager())
#endif
, m_originalPreloadWasAutoAndWasOverridden(false)
m_player = 0;
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_STOP);
#endif
#endif
gst_element_set_state(m_playBin.get(), GST_STATE_PAUSED);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager && !m_delayingLoad)
m_audioSessionManager->setSoundState(ASM_STATE_PAUSE);
#endif
void MediaPlayerPrivateGStreamer::play()
{
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager && !m_audioSessionManager->setSoundState(ASM_STATE_PLAYING))
return;
#endif
void MediaPlayerPrivateGStreamer::pause()
{
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager && !m_audioSessionManager->setSoundState(ASM_STATE_PAUSE))
return;
#endif
}
LOG_MEDIA_MESSAGE("Natural size: %" G_GUINT64_FORMAT "x%" G_GUINT64_FORMAT, width, height);
-#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && USE(ACCELERATED_VIDEO_VAAPI)
+#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && USE(ACCELERATED_VIDEO_VAAPI) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
if (!m_displaySize.isEmpty())
m_videoSize = scaleHDVideoToDisplaySize(static_cast<int>(width), static_cast<int>(height), m_displaySize.width(), m_displaySize.height());
else
m_hasVideo = videoTracks > 0;
-#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
#ifndef GST_API_VERSION_1
int width;
int height;
if (!rate) {
gst_element_set_state(m_playBin.get(), GST_STATE_PAUSED);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_PAUSE);
#endif
if (m_playBin)
gst_element_set_state(m_playBin.get(), GST_STATE_NULL);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_STOP);
#endif
if (!m_paused) {
LOG_MEDIA_MESSAGE("[Buffering] Restarting playback.");
gst_element_set_state(m_playBin.get(), GST_STATE_PLAYING);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_PLAYING);
#endif
LOG_MEDIA_MESSAGE("[Buffering] Pausing stream for buffering.");
gst_element_set_state(m_playBin.get(), GST_STATE_PAUSED);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_PAUSE);
#endif
setPreload(MediaPlayer::None);
gst_element_set_state(m_playBin.get(), GST_STATE_NULL);
gst_element_set_state(m_playBin.get(), GST_STATE_PAUSED);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_PAUSE);
#endif
if (state == GST_STATE_PAUSED && pending == GST_STATE_PLAYING && isLiveStream()) {
gst_element_set_state(m_playBin.get(), GST_STATE_NULL);
gst_element_set_state(m_playBin.get(), GST_STATE_PLAYING);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_PLAYING);
#endif
m_seeking = false;
if (!m_paused) {
gst_element_set_state(m_playBin.get(), GST_STATE_PLAYING);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_PLAYING);
#endif
}
} else if (!m_paused) {
gst_element_set_state(m_playBin.get(), GST_STATE_PLAYING);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_PLAYING);
#endif
// Reset pipeline state.
m_resetPipeline = true;
gst_element_set_state(m_playBin.get(), GST_STATE_READY);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_NONE);
#endif
// Set the new uri and start playing.
g_object_set(m_playBin.get(), "uri", newUrl.string().utf8().data(), NULL);
gst_element_set_state(m_playBin.get(), GST_STATE_PLAYING);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_PLAYING);
#endif
if (!m_player->mediaPlayerClient()->mediaPlayerIsLooping()) {
m_paused = true;
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
gst_element_set_state(m_playBin.get(), GST_STATE_PAUSED);
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_PAUSE);
#else
setPreload(MediaPlayer::Auto);
gst_element_set_state(m_playBin.get(), GST_STATE_NULL);
gst_element_set_state(m_playBin.get(), GST_STATE_PAUSED);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_PAUSE);
#endif
{
g_return_if_fail(GST_IS_BUFFER(buffer));
gst_buffer_replace(&m_buffer, buffer);
+#if !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER)
#if !ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
if (m_videoSize.isEmpty())
return;
#endif
#endif
+#endif
m_player->repaint();
}
GstPlayFlags flags;
g_object_get(m_playBin.get(), "flags", &flags, NULL);
-#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
flags = (GstPlayFlags)(flags | GST_PLAY_FLAG_NATIVE_VIDEO);
#endif
if (m_preload == MediaPlayer::Auto) {
#if ENABLE(TIZEN_GSTREAMER_VIDEO)
GstElement* MediaPlayerPrivateGStreamer::createVideoSink()
{
-#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
m_webkitVideoSink = m_videoLayer->createVideoSink();
m_videoSinkPad = adoptGRef(gst_element_get_static_pad(m_webkitVideoSink, "sink"));
// Primary video should be OFF and Secondary video should be FULL SCREEN mode
g_object_set(m_webkitVideoSink, "display-mode", 2, NULL);
#else // ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
-#ifndef GST_API_VERSION_1
m_webkitVideoSink = webkitVideoSinkNew(m_gstGWorld.get());
-#else
- m_webkitVideoSink = webkitVideoSinkNew();
-#endif
m_videoSinkPad = adoptGRef(gst_element_get_static_pad(m_webkitVideoSink, "sink"));
g_signal_connect(m_webkitVideoSink, "repaint-requested", G_CALLBACK(mediaPlayerPrivateRepaintCallback), this);
#endif // ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
-#ifndef GST_API_VERSION_1
- m_videoSinkBin = gst_bin_new("video-sink");
- GstElement* videoTee = gst_element_factory_make("tee", "videoTee");
-#if !ENABLE(TIZEN_GSTREAMER_VIDEO)
- GstElement* queue = gst_element_factory_make("queue", 0);
-#endif
- // Take ownership.
- gst_object_ref_sink(m_videoSinkBin);
-
// Build a new video sink consisting of a bin containing a tee
// (meant to distribute data to multiple video sinks) and our
// internal video sink. For fullscreen we create an autovideosink
// and initially block the data flow towards it and configure it
-#if !ENABLE(TIZEN_GSTREAMER_VIDEO)
- gst_bin_add_many(GST_BIN(m_videoSinkBin), videoTee, queue, NULL);
-#else
- gst_bin_add_many(GST_BIN(m_videoSinkBin), videoTee, NULL);
-#endif
+ m_videoSinkBin = gst_bin_new("video-sink");
+ GstElement* videoTee = gst_element_factory_make("tee", "videoTee");
+ // Take ownership.
+ gst_object_ref_sink(m_videoSinkBin);
+ gst_bin_add(GST_BIN(m_videoSinkBin), videoTee);
-#if !ENABLE(TIZEN_GSTREAMER_VIDEO)
+#if 0 // (was !ENABLE(TIZEN_GSTREAMER_VIDEO) )
+ GstElement* queue = gst_element_factory_make("queue", 0);
+ gst_bin_add(GST_BIN(m_videoSinkBin), queue);
// Link a new src pad from tee to queue1.
gst_element_link_pads_full(videoTee, 0, queue, "sink", GST_PAD_LINK_CHECK_NOTHING);
#endif
-#endif
GstElement* actualVideoSink = 0;
m_fpsSink = gst_element_factory_make("fpsdisplaysink", "sink");
if (g_object_class_find_property(G_OBJECT_GET_CLASS(m_fpsSink), "video-sink")) {
g_object_set(m_fpsSink, "video-sink", m_webkitVideoSink, NULL);
-#ifndef GST_API_VERSION_1
gst_bin_add(GST_BIN(m_videoSinkBin), m_fpsSink);
-#endif
actualVideoSink = m_fpsSink;
} else
m_fpsSink = 0;
}
if (!m_fpsSink) {
-#ifndef GST_API_VERSION_1
gst_bin_add(GST_BIN(m_videoSinkBin), m_webkitVideoSink);
-#endif
actualVideoSink = m_webkitVideoSink;
}
ASSERT(actualVideoSink);
-#ifndef GST_API_VERSION_1
-#if ENABLE(TIZEN_GSTREAMER_VIDEO)
// Link a new src pad from tee to queue1.
+#ifdef GST_API_VERSION_1
+ GRefPtr<GstPad> srcPad = adoptGRef(gst_element_get_request_pad(videoTee, "src_%u"));
+#else
GRefPtr<GstPad> srcPad = adoptGRef(gst_element_get_request_pad(videoTee, "src%d"));
+#endif
GRefPtr<GstPad> sinkPad = adoptGRef(gst_element_get_static_pad(actualVideoSink, "sink"));
gst_pad_link(srcPad.get(), sinkPad.get());
-#else
- // Faster elements linking.
- gst_element_link_pads_full(queue, "src", actualVideoSink, "sink", GST_PAD_LINK_CHECK_NOTHING);
-#endif
+
// Add a ghostpad to the bin so it can proxy to tee.
GRefPtr<GstPad> pad = adoptGRef(gst_element_get_static_pad(videoTee, "sink"));
gst_element_add_pad(m_videoSinkBin, gst_ghost_pad_new("sink", pad.get()));
// Set the bin as video sink of playbin.
return m_videoSinkBin;
-#else
- return actualVideoSink;
-#endif
}
#endif
GRefPtr<GstBus> bus = webkitGstPipelineGetBus(GST_PIPELINE(m_playBin.get()));
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)
+#if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
#ifdef GST_API_VERSION_1
- gst_bus_set_sync_handler(bus.get(), GstBusSyncHandler(mediaPlayerPrivateSyncHandler), this, NULL);
+ gst_bus_set_sync_handler(bus.get(), GstBusSyncHandler(mediaPlayerPrivateSyncHandler), this, NULL);
#else
gst_bus_set_sync_handler(bus.get(), GstBusSyncHandler(mediaPlayerPrivateSyncHandler), this);
#endif
g_object_set(m_playBin.get(), "video-sink", fakeSink, NULL);
}
#endif
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
GstElement* realSink = gst_element_factory_make("avsysaudiosink", 0);
g_object_set(realSink, "close-handle-on-prepare", 1, NULL);
g_object_set(m_playBin.get(), "audio-sink", realSink, NULL);
bool MediaPlayerPrivateGStreamer::supportsAcceleratedRendering() const
{
bool isEmbedVideo = false;
+#if !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
if (m_player->mediaPlayerClient()) {
Document* document = m_player->mediaPlayerClient()->mediaPlayerOwningDocument();
if (document && document->settings()) {
LOG_MEDIA_MESSAGE("isEmbedVideo: %d", isEmbedVideo);
}
}
-
+#endif
return isEmbedVideo;
}
return m_videoLayer->platformLayer();
}
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
void MediaPlayerPrivateGStreamer::paintCurrentFrameInContext(GraphicsContext* context, const IntRect& rect)
{
m_videoLayer->paintCurrentFrameInContext(context, rect);
#endif
void MediaPlayerPrivateGStreamer::xWindowIdPrepared(GstMessage* message)
{
+#if USE(ACCELERATED_VIDEO_VAAPI)
+ int displayWidth, displayHeight;
+#endif
+ int videoWidth, videoHeight;
+ const GstStructure *structure;
#ifdef GST_API_VERSION_1
- const GstStructure *structure;
- structure = gst_message_get_structure (message);
+ structure = gst_message_get_structure (message);
+#else
+ structure = message->structure;
#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);
#endif
#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
{
m_suspendTime = currentTime();
gst_element_set_state(m_playBin.get(), GST_STATE_NULL);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_STOP);
#endif
{
if (isLocalMediaStream()) {
gst_element_set_state(m_playBin.get(), GST_STATE_PLAYING);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_PLAYING);
#endif
} else {
gst_element_set_state(m_playBin.get(), GST_STATE_PAUSED);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
if (m_audioSessionManager)
m_audioSessionManager->setSoundState(ASM_STATE_PAUSE);
#endif