case ASM_EVENT_SOURCE_OTHER_PLAYER_APP:
case ASM_EVENT_SOURCE_RESOURCE_CONFLICT:
player->pause();
+
return ASM_CB_RES_PAUSE;
default:
return ASM_CB_RES_NONE;
#if ENABLE(TIZEN_GSTREAMER_AUDIO)
if (m_audioSessionManager && !m_audioSessionManager->setSoundState(ASM_STATE_PLAYING))
return;
+
+ if (m_playBin == NULL) {
+ m_player_deferred_state = 1; // play
+ return;
+ }
#endif
if (changePipelineState(GST_STATE_PLAYING)) {
m_isEndReached = false;
#if ENABLE(TIZEN_GSTREAMER_AUDIO)
if (m_audioSessionManager && !m_audioSessionManager->setSoundState(ASM_STATE_PAUSE))
return;
+
+ if (m_playBin == NULL) {
+ m_player_deferred_state = 0; // pause
+ return;
+ }
#endif
if (m_isEndReached)
return;
const char * MediaPlayerPrivateGStreamer::mediaClass() const
{
- static const gchar *default_media_class = "music";
+ static const gchar *default_media_class = "browser";
return default_media_class;
}
{
ASSERT(!m_playBin);
const gchar *media_class = mediaClass();
+ int asm_handle = 0;
+
+#if ENABLE(TIZEN_GSTREAMER_AUDIO)
+ if (m_audioSessionManager) {
+ m_playBin = NULL;
+ m_player_deferred_state = -1; // ignore
+ m_audioSessionManager->registerAudioSessionManager(MM_SESSION_TYPE_SHARE, mediaPlayerPrivateAudioSessionNotifyCallback, player());
+ asm_handle = m_audioSessionManager->getAsmHandle();
+ }
+#endif
m_playBin = gst_element_factory_make(gPlaybinName, "play");
GstElement *sink = gst_element_factory_make("pulsesink", "audio-sink");
if (sink != NULL) {
GstStructure *props;
- gchar prop_str[256] = "props,resource.set.id=pid,media.role=";
+ FILE *f;
+ guint32 ids[256];
+ guint32 rsetid = 0;
+ gchar *fnam_str = g_strdup_printf("/tmp/murphy/mapping-file-%d", getpid());
+
+ if ((f = fopen(fnam_str, "r"))) {
+ if (fread((void *)ids, sizeof(guint32), 256, f) == 256)
+ rsetid = ids[(asm_handle & 0xff)];
+
+ fclose(f);
+ }
- strncat(prop_str, media_class, sizeof(prop_str));
- prop_str[sizeof(prop_str)-1] = 0;
+ g_free(fnam_str);
+
+ gchar *prop_str = g_strdup_printf("props,resource.set.id=(string)%u,media.role=%s", rsetid, media_class);
props = gst_structure_from_string(prop_str, NULL);
g_object_set(sink, "stream-properties", props, NULL);
gst_structure_free(props);
g_object_set(m_playBin, "audio-sink", sink, NULL);
+
+ g_free(prop_str);
}
#ifndef GST_API_VERSION_1
g_signal_connect(videoSinkPad.get(), "notify::caps", G_CALLBACK(mediaPlayerPrivateVideoSinkCapsChangedCallback), this);
#if ENABLE(TIZEN_GSTREAMER_AUDIO)
- if (m_audioSessionManager)
- m_audioSessionManager->registerAudioSessionManager(MM_SESSION_TYPE_SHARE, mediaPlayerPrivateAudioSessionNotifyCallback, player());
+ if (m_player_deferred_state == 1)
+ play();
+ else if (m_player_deferred_state == 0)
+ pause();
#endif
}