/* for subtitles */
#include <lib/gui/esubtitle.h>
+#ifndef GST_SEEK_FLAG_SKIP
+#warning Compiling for legacy gstreamer, things will break
+#define GST_SEEK_FLAG_SKIP 0
+#define GST_TAG_HOMEPAGE ""
+#endif
+
// eServiceFactoryMP3
eServiceFactoryMP3::eServiceFactoryMP3()
RESULT eServiceMP3::seekTo(pts_t to)
{
+ m_subtitle_pages.clear();
+
if (!m_gst_playbin)
return -1;
int eServiceMP3::getInfo(int w)
{
- gchar *tag = 0;
+ const gchar *tag = 0;
switch (w)
{
std::string eServiceMP3::getInfoString(int w)
{
- if ( !m_stream_tags )
+ if ( !m_stream_tags && w < sUser && w > 26 )
return "";
- gchar *tag = 0;
+ const gchar *tag = 0;
switch (w)
{
case sTagTitle:
case sTagChannelMode:
tag = "channel-mode";
break;
-
case sUser+12:
return m_error_message;
default:
PyObject *eServiceMP3::getInfoObject(int w)
{
- gchar *tag = 0;
+ const gchar *tag = 0;
bool isBuffer = false;
switch (w)
{
GstTagList *tags, *result;
gst_message_parse_tag(msg, &tags);
- result = gst_tag_list_merge(m_stream_tags, tags, GST_TAG_MERGE_PREPEND);
+ result = gst_tag_list_merge(m_stream_tags, tags, GST_TAG_MERGE_REPLACE);
if (result)
{
if (m_stream_tags)
g_free (g_lang);
// g_free (g_type);
}
+ m_event((iPlayableService*)this, evUpdatedEventInfo);
}
case GST_MESSAGE_ELEMENT:
{
GstElement *appsink = gst_bin_get_by_name(GST_BIN(m_gst_playbin),"subtitle_sink");
GstClock *clock;
clock = gst_element_get_clock (appsink);
- do
+ while ( !m_subtitle_pages.empty() )
{
page = m_subtitle_pages.front();
m_subtitle_widget->setPage(page);
m_subtitle_pages.pop_front();
}
- } while ( !m_subtitle_pages.empty() );
+ } ;
gst_object_unref (clock);
}
g_object_get (G_OBJECT (m_gst_playbin), "current-text", &text_pid, NULL);
eDebug ("eServiceMP3::switched to subtitle stream %i", text_pid);
+ m_subtitle_pages.clear();
return 0;
RESULT eServiceMP3::disableSubtitles(eWidget *parent)
{
eDebug("eServiceMP3::disableSubtitles");
+ m_subtitle_pages.clear();
delete m_subtitle_widget;
m_subtitle_widget = 0;
return 0;