Improved separation of ASM and enabled video playing. 59/6059/3
authorJosé Bollo <jose.bollo@eurogiciel.fr>
Wed, 24 Jul 2013 07:42:32 +0000 (09:42 +0200)
committerJosé Bollo <jose.bollo@eurogiciel.fr>
Mon, 29 Jul 2013 09:49:35 +0000 (11:49 +0200)
Improvement of the separation of the audio session manager using the
compiling option ENABLE_TIZEN_AUDIO_SESSION_MANAGER. It solves a
bug on the mute status of the media elements (TZ:bug 3809).

Addition of the compiling option ENABLE_TIZEN_GSTREAMER_VIDEO_SET_SINK
that enforces to use the webkit sink. It allows to play video on
surfaces.

Activating option ENABLE_TIZEN_GSTREAMER_VIDEO_SET_SINK
for GStreamer 1.0 (surely to be changed in futur)

14 files changed:
Source/WTF/wtf/Platform.h
Source/WebCore/dom/Document.cpp
Source/WebCore/dom/Document.h
Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp
Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.h
Source/WebCore/platform/audio/gstreamer/tizen/AudioSessionManagerGStreamerTizen.cpp
Source/WebCore/platform/audio/gstreamer/tizen/AudioSessionManagerGStreamerTizen.h
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp
Source/WebCore/platform/graphics/gstreamer/tizen/VideoLayerTizen.cpp
Source/WebCore/platform/graphics/gstreamer/tizen/VideoLayerTizen.h
Source/cmake/OptionsTizen.cmake
packaging/webkit2-efl.spec

index ea1a927..864d7f4 100644 (file)
 #define ENABLE_TIZEN_WEBKIT2_TILED_AC_DONT_ADJUST_COVER_RECT 1 /* Eunsol Park(eunsol47.park@samsung.
 com) : Patch to do not adjust cover rect as fixed pixel size*/
 #define ENABLE_TIZEN_GSTREAMER_VIDEO 1 /* Kwangyong Choi : Fixed media control display when using gstreamer video */
-#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
 #define ENABLE_TIZEN_GSTREAMER_AUDIO 1 /* Keonho Kim : Audio session manager for media element */
-#else
-#define ENABLE_TIZEN_GSTREAMER_AUDIO 0
-#endif
 
 #define ENABLE_TIZEN_PREFERENCE 1 /* Eunmi Lee(eunmi15.lee@samsung.com) : for slp specific preferences */
 #define ENABLE_TIZEN_LOAD_REMOTE_IMAGES 1 /* Dongjae Kim(dongjae1.kim@samsung.com) : for tizen remode image load setting */
index 3d0ba78..fe02674 100755 (executable)
 #include "TizenExtensibleAPI.h"
 #endif
 
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
 #include "AudioSessionManagerGStreamerTizen.h"
 #endif
 
@@ -1655,7 +1655,7 @@ bool Document::webkitHidden() const
 
 void Document::dispatchVisibilityStateChangeEvent()
 {
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
     if (m_activeMediaObjectCount) {
         if (!webkitHidden())
             AudioSessionManagerGStreamerTizen::setVolumeSessionToMediaType();
@@ -1665,6 +1665,7 @@ void Document::dispatchVisibilityStateChangeEvent()
 #endif
     dispatchEvent(Event::create(eventNames().webkitvisibilitychangeEvent, false, false));
 }
+
 #endif
 
 #if ENABLE(CSP_NEXT)
@@ -6194,16 +6195,20 @@ PassRefPtr<UndoManager> Document::undoManager()
 #if ENABLE(TIZEN_GSTREAMER_AUDIO)
 void Document::incrementActiveMediaObjectCount()
 {
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
     if (!m_activeMediaObjectCount)
         AudioSessionManagerGStreamerTizen::setVolumeSessionToMediaType();
+#endif
     atomicIncrement(&m_activeMediaObjectCount);
 }
 
 void Document::decrementActiveMediaObjectCount()
 {
     atomicDecrement(&m_activeMediaObjectCount);
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
     if (!m_activeMediaObjectCount)
         AudioSessionManagerGStreamerTizen::clearVolumeSessionFromMediaType();
+#endif
 }
 #endif
 } // namespace WebCore
index 3d7954f..234cbb9 100644 (file)
@@ -418,11 +418,11 @@ public:
     String webkitVisibilityState() const;
     bool webkitHidden() const;
     void dispatchVisibilityStateChangeEvent();
+#endif
 #if ENABLE(TIZEN_GSTREAMER_AUDIO)
     void incrementActiveMediaObjectCount();
     void decrementActiveMediaObjectCount();
 #endif
-#endif
 
 #if ENABLE(CSP_NEXT)
     DOMSecurityPolicy* securityPolicy();
index 1817c77..c36eb59 100755 (executable)
@@ -68,7 +68,7 @@ static void onGStreamerWavparsePadAddedCallback(GstElement*, GstPad* pad, AudioD
 }
 #endif
 
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
 static ASM_cb_result_t AudioDestinationAudioSessionEventSourcePause(ASM_event_sources_t eventSource, void* callbackData)
 {
     AudioDestinationGStreamer* pDestination = static_cast<AudioDestinationGStreamer*>(callbackData);
@@ -121,11 +121,11 @@ AudioDestinationGStreamer::AudioDestinationGStreamer(AudioIOCallback& callback,
     , m_renderBus(2, framesToPull, false)
     , m_sampleRate(sampleRate)
     , m_isPlaying(false)
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
     , m_audioSessionManager(AudioSessionManagerGStreamerTizen::createAudioSessionManager())
 #endif
 {
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
     if (m_audioSessionManager)
         m_audioSessionManager->registerAudioSessionManager(MM_SESSION_TYPE_SHARE, AudioDestinationAudioSessionNotifyCallback, this);
 #endif
@@ -169,7 +169,7 @@ AudioDestinationGStreamer::~AudioDestinationGStreamer()
 
     gst_element_set_state(m_pipeline, GST_STATE_NULL);
 
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
     if (m_audioSessionManager)
         m_audioSessionManager->setSoundState(ASM_STATE_STOP);
 #endif
@@ -248,14 +248,14 @@ gboolean AudioDestinationGStreamer::handleMessage(GstMessage* message)
         g_warning("Error: %d, %s. Debug output: %s", error->code,  error->message, debug.get());
         gst_element_set_state(m_pipeline, GST_STATE_NULL);
 
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
         if (m_audioSessionManager)
             m_audioSessionManager->setSoundState(ASM_STATE_STOP);
 #endif
         m_isPlaying = false;
         break;
 
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
     case GST_MESSAGE_EOS:
         gst_element_set_state(m_pipeline, GST_STATE_NULL);
         if (m_audioSessionManager)
@@ -273,7 +273,7 @@ void AudioDestinationGStreamer::start()
     ASSERT(m_wavParserAvailable);
     if (!m_wavParserAvailable)
         return;
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
     if (m_audioSessionManager && !m_audioSessionManager->setSoundState(ASM_STATE_PLAYING))
         return;
 #endif
@@ -284,7 +284,8 @@ void AudioDestinationGStreamer::start()
 void AudioDestinationGStreamer::stop()
 {
     ASSERT(m_wavParserAvailable && m_audioSinkAvailable);
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+    // FIXME: the assertion is contradicted by what follows
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
     if (!m_wavParserAvailable || !m_audioSinkAvailable)
        return;
     if (m_audioSessionManager && !m_audioSessionManager->setSoundState(ASM_STATE_PAUSE))
index a51ca27..10c6005 100644 (file)
@@ -22,7 +22,7 @@
 #include "AudioBus.h"
 #include "AudioDestination.h"
 
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
 #include "AudioSessionManagerGStreamerTizen.h"
 #endif
 
@@ -56,7 +56,7 @@ private:
     bool m_wavParserAvailable;
     bool m_audioSinkAvailable;
     GstElement* m_pipeline;
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
     RefPtr<AudioSessionManagerGStreamerTizen> m_audioSessionManager;
 #endif
 };
index dd758a9..82b1b55 100644 (file)
@@ -33,7 +33,7 @@
 #include "GStreamerUtilities.h"
 #include "GStreamerVersioning.h"
 
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
 
 #include <unistd.h>
 #include <mm_sound.h>
index 15d174d..3da2e47 100644 (file)
@@ -31,7 +31,7 @@
 #ifndef AudioSessionManagerGStreamerTizen_h
 #define AudioSessionManagerGStreamerTizen_h
 
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
 #include "Logging.h"
 #include "MediaPlayerPrivate.h"
 #include <audio-session-manager.h>
index c7c36c6..f9a9d69 100755 (executable)
 #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
 
@@ -215,14 +217,14 @@ static gboolean mediaPlayerPrivateVideoChangeTimeoutCallback(MediaPlayerPrivateG
     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
@@ -234,7 +236,7 @@ static GstBusSyncReply mediaPlayerPrivateSyncHandler(GstBus* bus, GstMessage* me
     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
@@ -245,7 +247,7 @@ static GstBusSyncReply mediaPlayerPrivateSyncHandler(GstBus* bus, GstMessage* me
 }
 #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);
@@ -385,7 +387,7 @@ MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer(MediaPlayer* player)
 #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)
@@ -429,7 +431,7 @@ MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer()
 
     m_player = 0;
 
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
     if (m_audioSessionManager)
         m_audioSessionManager->setSoundState(ASM_STATE_STOP);
 #endif
@@ -501,7 +503,7 @@ void MediaPlayerPrivateGStreamer::load(const String& url)
 #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
@@ -594,7 +596,7 @@ void MediaPlayerPrivateGStreamer::prepareToPlay()
 
 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
@@ -606,7 +608,7 @@ void MediaPlayerPrivateGStreamer::play()
 
 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
@@ -792,7 +794,7 @@ IntSize MediaPlayerPrivateGStreamer::naturalSize() const
     }
 
     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
@@ -818,7 +820,7 @@ void MediaPlayerPrivateGStreamer::notifyPlayerOfVideo()
 
     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;
@@ -907,7 +909,7 @@ void MediaPlayerPrivateGStreamer::setRate(float rate)
 
     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
@@ -1374,7 +1376,7 @@ void MediaPlayerPrivateGStreamer::cancelLoad()
 
     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
@@ -1450,7 +1452,7 @@ void MediaPlayerPrivateGStreamer::updateStates()
                 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
@@ -1469,7 +1471,7 @@ void MediaPlayerPrivateGStreamer::updateStates()
                 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
@@ -1505,7 +1507,7 @@ void MediaPlayerPrivateGStreamer::updateStates()
             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
@@ -1515,7 +1517,7 @@ void MediaPlayerPrivateGStreamer::updateStates()
         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
@@ -1555,14 +1557,14 @@ void MediaPlayerPrivateGStreamer::updateStates()
             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
@@ -1681,7 +1683,7 @@ bool MediaPlayerPrivateGStreamer::loadNextLocation()
             // 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
@@ -1691,7 +1693,7 @@ bool MediaPlayerPrivateGStreamer::loadNextLocation()
                 // 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
@@ -1737,8 +1739,8 @@ void MediaPlayerPrivateGStreamer::didEnd()
 
     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
@@ -1813,7 +1815,7 @@ void MediaPlayerPrivateGStreamer::durationChanged()
             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
@@ -1883,6 +1885,7 @@ void MediaPlayerPrivateGStreamer::triggerRepaint(GstBuffer* buffer)
 {
     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())
@@ -1891,6 +1894,7 @@ void MediaPlayerPrivateGStreamer::triggerRepaint(GstBuffer* buffer)
     return;
 #endif
 #endif
+#endif
     m_player->repaint();
 }
 
@@ -2083,7 +2087,7 @@ void MediaPlayerPrivateGStreamer::setDownloadBuffering()
     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) {
@@ -2146,46 +2150,34 @@ void MediaPlayerPrivateGStreamer::createAudioSink()
 #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");
@@ -2208,9 +2200,7 @@ GstElement* MediaPlayerPrivateGStreamer::createVideoSink()
 
             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;
@@ -2219,33 +2209,27 @@ GstElement* MediaPlayerPrivateGStreamer::createVideoSink()
     }
 
     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
 
@@ -2262,9 +2246,9 @@ void MediaPlayerPrivateGStreamer::createGSTPlayBin()
     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
@@ -2297,7 +2281,7 @@ void MediaPlayerPrivateGStreamer::createGSTPlayBin()
         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);
@@ -2313,6 +2297,7 @@ void MediaPlayerPrivateGStreamer::createGSTPlayBin()
 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()) {
@@ -2321,7 +2306,7 @@ bool MediaPlayerPrivateGStreamer::supportsAcceleratedRendering() const
             LOG_MEDIA_MESSAGE("isEmbedVideo: %d", isEmbedVideo);
         }
     }
-
+#endif
     return isEmbedVideo;
 }
 
@@ -2330,7 +2315,7 @@ PlatformLayer* MediaPlayerPrivateGStreamer::platformLayer() const
     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);
@@ -2378,33 +2363,28 @@ IntSize MediaPlayerPrivateGStreamer::scaleHDVideoToDisplaySize(int videoWidth, i
 #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
@@ -2441,7 +2421,7 @@ void MediaPlayerPrivateGStreamer::suspend()
 {
     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
@@ -2451,13 +2431,13 @@ void MediaPlayerPrivateGStreamer::resume()
 {
     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
index ce6b676..cca7d22 100644 (file)
@@ -32,7 +32,7 @@
 #include <gst/gst.h>
 #include <wtf/Forward.h>
 
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
 #include "AudioSessionManagerGStreamerTizen.h"
 #endif
 
@@ -144,7 +144,7 @@ class MediaPlayerPrivateGStreamer : public MediaPlayerPrivateInterface
             // Const-casting here is safe, since all of TextureMapperPlatformLayer's functions are const.g
             virtual PlatformLayer* platformLayer() const;
 
-#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 xWindowIdPrepared(GstMessage*);
 #if USE(ACCELERATED_VIDEO_VAAPI)
             IntSize scaleHDVideoToDisplaySize(int videoWidth, int videoHeight, int displayWidth, int displayHeight) const;
@@ -252,7 +252,7 @@ class MediaPlayerPrivateGStreamer : public MediaPlayerPrivateInterface
 #endif // ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER)
 
             mutable IntSize m_videoSize;
-#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+#if ENABLE(TIZEN_AUDIO_SESSION_MANAGER)
             RefPtr<AudioSessionManagerGStreamerTizen> m_audioSessionManager;
 #endif
 
index 166f4f4..3065b6d 100644 (file)
@@ -144,14 +144,13 @@ static gboolean webkitVideoSinkTimeoutCallback(gpointer data)
     priv->buffer = 0;
     priv->timeoutId = 0;
 
-    if (!buffer || priv->unlocked || UNLIKELY(!GST_IS_BUFFER(buffer))) {
-        g_cond_signal(priv->dataCondition);
-        g_mutex_unlock(priv->bufferMutex);
-        return FALSE;
+    if (buffer && GST_IS_BUFFER(buffer)) {
+        if (!priv->unlocked) {
+            g_signal_emit(sink, webkitVideoSinkSignals[REPAINT_REQUESTED], 0, buffer);
+        }
+        gst_buffer_unref(buffer);
     }
 
-    g_signal_emit(sink, webkitVideoSinkSignals[REPAINT_REQUESTED], 0, buffer);
-    gst_buffer_unref(buffer);
     g_cond_signal(priv->dataCondition);
     g_mutex_unlock(priv->bufferMutex);
 
@@ -189,7 +188,7 @@ static GstFlowReturn webkitVideoSinkRender(GstBaseSink* baseSink, GstBuffer* buf
 
     GRefPtr<GstCaps> caps = GST_BUFFER_CAPS(buffer);
 #else
-    GRefPtr<GstCaps> caps = adoptGRef(gst_video_info_to_caps(&priv->info));
+    GRefPtr<GstCaps> caps = priv->currentCaps;
 #endif
 
     GstVideoFormat format;
@@ -456,14 +455,14 @@ webkit_video_sink_event(GstBaseSink* base_sink, GstEvent* event)
             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);
+        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);
index 8381795..d462bea 100644 (file)
@@ -26,7 +26,7 @@
 #include "IntRect.h"
 #include "RenderLayerBacking.h"
 
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
 #ifndef GST_API_VERSION_1
 #include <gst/interfaces/xoverlay.h>
 #else
@@ -40,7 +40,7 @@
 #include <X11/Xutil.h>
 #endif // ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
 
-#if !ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if !ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) || USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
 static Display* g_nativeDisplay = 0;
 #endif
 
@@ -58,7 +58,7 @@ namespace WebCore {
 #endif
 
 VideoLayerTizen::VideoLayerTizen(HTMLMediaElement* media)
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
     : m_videoSink(0)
 #else
     : m_platformSurfaceID(0)
@@ -66,7 +66,7 @@ VideoLayerTizen::VideoLayerTizen(HTMLMediaElement* media)
 #endif // ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
     , m_media(media)
 {
-#if !ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if !ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) || USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
     if (!g_nativeDisplay)
         g_nativeDisplay = XOpenDisplay(0);
 
@@ -84,7 +84,7 @@ VideoLayerTizen::~VideoLayerTizen()
 {
     syncLayer(0);
 
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
     if (m_platformSurface)
         m_platformSurface.clear();
 
@@ -122,7 +122,7 @@ void VideoLayerTizen::syncLayer(VideoLayerTizen* layer)
     }
 }
 
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
 bool VideoLayerTizen::swapPlatformSurfaces()
 {
     return true;
@@ -204,6 +204,7 @@ void VideoLayerTizen::paintCurrentFrameInContext(GraphicsContext* context, const
     if (m_platformSurface)
         m_platformSurface->paintCurrentFrameInContext(context, rect);
 }
+
 #else
 
 void VideoLayerTizen::paintVideoLayer(IntSize videoSize)
@@ -238,7 +239,7 @@ void VideoLayerTizen::paintVideoLayer(IntSize videoSize)
 #if USE(GRAPHICS_SURFACE) || ENABLE(TIZEN_CANVAS_GRAPHICS_SURFACE)
 PlatformBufferHandle VideoLayerTizen::graphicsSurfaceToken() const
 {
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
     return (m_platformSurface ? m_platformSurface->handle() : 0);
 #else
     return m_platformSurfaceID;
@@ -247,7 +248,7 @@ PlatformBufferHandle VideoLayerTizen::graphicsSurfaceToken() const
 
 PlatformBufferHandle VideoLayerTizen::copyToGraphicsSurface()
 {
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
     return (m_platformSurface ? m_platformSurface->handle() : 0);
 #else
     return m_platformSurfaceID;
@@ -256,7 +257,7 @@ PlatformBufferHandle VideoLayerTizen::copyToGraphicsSurface()
 
 int VideoLayerTizen::graphicsSurfaceFlags() const
 {
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
     return m_platformSurface ? m_platformSurface->graphicsSurfaceFlags() : GraphicsSurface::Is2D;
 #else
     return GraphicsSurface::Is2D;
index b782048..3e34ee8 100644 (file)
@@ -26,7 +26,7 @@
 #include "HTMLMediaElement.h"
 #include "TextureMapperGL.h"
 
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
 #include "SharedVideoPlatformSurfaceTizen.h"
 #include <gst/gst.h>
 #endif // ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
@@ -40,7 +40,7 @@ class GraphicsContext;
 class IntRect;
 
 class VideoLayerTizen : public TextureMapperPlatformLayer
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
                       , public VideoPlatformSurfaceUpdateListener
 #endif // ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
 {
@@ -57,7 +57,7 @@ public:
     virtual void paintToTextureMapper(TextureMapper*, const FloatRect& targetRect, const TransformationMatrix&, float opacity) { }
     virtual Image* paintToImage() { return 0; }
 
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
     // TextureMapperPlatformLayer interface
     virtual bool swapPlatformSurfaces();
     virtual void freePlatformSurface(int);
@@ -83,7 +83,7 @@ private:
     VideoLayerTizen(HTMLMediaElement* media);
     void syncLayer(VideoLayerTizen* layer);
 
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE) && !USE(TIZEN_GSTREAMER_VIDEO_SET_SINK)
     GstElement* m_videoSink;
     OwnPtr<SharedVideoPlatformSurfaceTizen> m_platformSurface;
     OwnPtr<SharedVideoPlatformSurfaceTizen> m_platformSurfaceToBeRemoved;
index 71805bc..dd523fd 100644 (file)
@@ -111,8 +111,27 @@ WEBKIT_OPTION_DEFINE(ENABLE_TIZEN_WEBKIT2 "Enable Tizen WebKit2 feature" ON)
 WEBKIT_OPTION_DEFINE(ENABLE_TIZEN_GESTURE "Use Gesture which uses elm_gesture_layer" ON)
 WEBKIT_OPTION_DEFINE(ENABLE_TIZEN_WEBKIT2_FORM_DATABASE "Support for Remember Form on tizen webkit2" ON)
 WEBKIT_OPTION_DEFINE(ENABLE_TIZEN_WEBKIT2_TEXT_SELECTION "Text selection in WebKit 2" ON)
-WEBKIT_OPTION_DEFINE(ENABLE_TIZEN_AUDIO_SESSION_MANAGER "Audio Session Manager Support" OFF)
 
+WEBKIT_OPTION_DEFINE(ENABLE_TIZEN_AUDIO_SESSION_MANAGER "Audio Session Manager Support" OFF)
+    # - ENABLE_TIZEN_AUDIO_SESSION_MANAGER: An audio session manager is merely used
+    #      to control the playing of the media streams. On a telephone there is a need
+    #      to suspend the playing of media elements when receiving incomming call. And
+    #      also naturally to resume the playing after completion of the event. This
+    #      behaviour is currently linked to what is called the "audio session manager".
+    #      From the integrator point of view, the audio session manager is currently
+    #      implemented under TIZEN through the libmm-... libraries (multi media libraries).
+    #      For some TIZEN environments, the integration of these libraries isn't wished,
+    #      nor also would be wished the audio session manager.
+    #      This option controls whether the audio session manager is integrated or not.
+
+WEBKIT_OPTION_DEFINE(ENABLE_TIZEN_GSTREAMER_VIDEO_SET_SINK "Use of a webkit provided video sink for gstreamer" OFF)
+    # - ENABLE_TIZEN_GSTREAMER_VIDEO_SET_SINK: The behaviour of this option is frankly
+    #      complicated and its name isn't obvious. For some TIZEN targets, the treatment
+    #      of the video frame buffers with gstreamer must use a concrete webkit video sink
+    #      (currently implemented by the class VideoSinkGStreamer within platform/graphics/gstreamer)
+    #      and must not use a predefined gstreamer videosink with overlay.
+    #      This option enforces that way of processing video frames even when
+    #      TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE is enabled.
 
 #--------------------------------------------------------------------------------------
 # Enabled WebKit Features for Tizen or Tizen Specific Features.
@@ -290,6 +309,11 @@ IF (WTF_USE_TILED_BACKING_STORE)
     ADD_DEFINITIONS(-DWTF_USE_TEXTURE_MAPPER=1)
 ENDIF ()
 
+IF (ENABLE_TIZEN_GSTREAMER_VIDEO_SET_SINK)
+    SET(WTF_USE_TIZEN_GSTREAMER_VIDEO_SET_SINK 1)
+    ADD_DEFINITIONS(-DWTF_USE_TIZEN_GSTREAMER_VIDEO_SET_SINK=1)
+ENDIF ()
+
 IF ("${EFL_TARGET}" STREQUAL "i386")
     MESSAGE("i386 target Build Mode <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
     ADD_DEFINITIONS(-DENABLE_TIZEN_WEBKIT2_DIRECT_RENDERING=1)
index 502bc20..39de232 100644 (file)
@@ -141,6 +141,7 @@ fi
 export GSTREAMER_API="-DGST_API_VERSION_1=Off"
 %else
 export GSTREAMER_API="-DGST_API_VERSION_1=On"
+export TIZEN_WEBKIT_EXTRA_OPTIONS="$TIZEN_WEBKIT_EXTRA_OPTIONS -DENABLE_TIZEN_GSTREAMER_VIDEO_SET_SINK=On"
 %endif
 
 %if %{with wayland}