Scenario of media volume control should be changed during sound is playing.
authorkeonho07.kim <keonho07.kim@samsung.com>
Thu, 11 Apr 2013 16:26:11 +0000 (01:26 +0900)
committerkeonho07.kim <keonho07.kim@samsung.com>
Fri, 12 Apr 2013 03:16:23 +0000 (12:16 +0900)
[Title] Scenario of media volume control should be changed during sound is playing.
[Problem] https://tizendev.org/bugs/browse/DCM-1102
[Cause] avsysaudiosink is open to close device when it is transfer READY -> PAUSE.
[Solution] Set property of avsysaudiosink element "close-handle-on-prepare" == 1

Change-Id: I8872b1418ebbedb9a24101797def99a0d82da977

Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp [changed mode: 0644->0755]
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

old mode 100644 (file)
new mode 100755 (executable)
index 9df5401..1f126cf
@@ -180,6 +180,17 @@ void AudioDestinationGStreamer::finishBuildingPipelineAfterWavParserPadReady(Gst
 {
     ASSERT(m_wavParserAvailable);
 
+#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+    GRefPtr<GstElement> audioSink = adoptGRef(gst_element_factory_make("avsysaudiosink", 0));
+    m_audioSinkAvailable = audioSink;
+    g_object_set(audioSink.get(), "close-handle-on-prepare", 1, NULL);
+
+    if (!audioSink.get()) {
+        TIZEN_LOGE("GST_MESSAGE_ERROR : Failed to create GStreamer avsysaudiosink element");
+        LOG_ERROR("Failed to create GStreamer avsysaudiosink element");
+        return;
+    }
+#else
     GRefPtr<GstElement> audioSink = gst_element_factory_make("autoaudiosink", 0);
     m_audioSinkAvailable = audioSink;
 
@@ -204,6 +215,7 @@ void AudioDestinationGStreamer::finishBuildingPipelineAfterWavParserPadReady(Gst
         m_audioSinkAvailable = false;
         return;
     }
+#endif
 
     GstElement* audioConvert = gst_element_factory_make("audioconvert", 0);
     gst_bin_add_many(GST_BIN(m_pipeline), audioConvert, audioSink.get(), NULL);
index 808ab1b..4f373d8 100755 (executable)
@@ -2269,7 +2269,13 @@ void MediaPlayerPrivateGStreamer::createGSTPlayBin()
         m_audioSessionManager->registerAudioSessionManager(MM_SESSION_TYPE_SHARE, mediaPlayerPrivateAudioSessionNotifyCallback, player());
 #endif
 
+#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+    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);
+#else
     createAudioSink();
+#endif
 }
 
 #if ENABLE(TIZEN_ACCELERATED_COMPOSITING) && USE(TIZEN_TEXTURE_MAPPER)