- gst_bus_set_sync_handler(gst_pipeline_get_bus (GST_PIPELINE (m_gst_playbin)), gstBusSyncHandler, this);
- char srt_filename[strlen(filename)+1];
- strncpy(srt_filename,filename,strlen(filename)-3);
- srt_filename[strlen(filename)-3]='\0';
- strcat(srt_filename, "srt");
+ int flags;
+ g_object_get(G_OBJECT (m_gst_playbin), "flags", &flags, NULL);
+ flags |= GST_PLAY_FLAG_NATIVE_VIDEO;
+ flags &= ~GST_PLAY_FLAG_SOFT_VOLUME;
+ g_object_set (G_OBJECT (m_gst_playbin), "flags", flags, NULL);
+ g_object_set (G_OBJECT (m_gst_playbin), "uri", uri, NULL);
+ g_free(uri);
+
+ GstElement *subsink = gst_element_factory_make("subsink", "subtitle_sink");
+ if (!subsink)
+ eDebug("eServiceMP3::sorry, can't play: missing gst-plugin-subsink");
+ else
+ {
+ m_subs_to_pull_handler_id = g_signal_connect (subsink, "new-buffer", G_CALLBACK (gstCBsubtitleAvail), this);
+ g_object_set (G_OBJECT (subsink), "caps", gst_caps_from_string("text/plain; text/x-plain; text/x-raw; text/x-pango-markup; video/x-dvd-subpicture; subpicture/x-pgs"), NULL);
+ g_object_set (G_OBJECT (m_gst_playbin), "text-sink", subsink, NULL);
+ g_object_set (G_OBJECT (m_gst_playbin), "current-text", m_currentSubtitleStream, NULL);
+ }
+ GstBus *bus = gst_pipeline_get_bus (GST_PIPELINE (m_gst_playbin));
+#if GST_VERSION_MAJOR < 1
+ gst_bus_set_sync_handler(bus, gstBusSyncHandler, this);
+#else
+ gst_bus_set_sync_handler(bus, gstBusSyncHandler, this, NULL);
+#endif
+ gst_object_unref(bus);
+ char srt_filename[ext - filename + 5];
+ strncpy(srt_filename, filename, ext - filename);
+ srt_filename[ext - filename]='\0';
+ strcat(srt_filename, ".srt");