aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorghost <andreas.monzner@multimedia-labs.de>2008-12-19 14:48:14 +0100
committerghost <andreas.monzner@multimedia-labs.de>2008-12-19 14:48:14 +0100
commit6f8827d31a18d8cbd1d8eb44f4911adc226bc321 (patch)
tree8b0b399a4286cd8a0dfac5867585c148fa257b2e /lib
parent69ef41671f62de96cb607b971fe6c82c61703a28 (diff)
downloadenigma2-6f8827d31a18d8cbd1d8eb44f4911adc226bc321.tar.gz
enigma2-6f8827d31a18d8cbd1d8eb44f4911adc226bc321.zip
fix gstreamer subtitles
Diffstat (limited to 'lib')
-rw-r--r--lib/service/servicemp3.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp
index 7a8fcbd7..d3957012 100644
--- a/lib/service/servicemp3.cpp
+++ b/lib/service/servicemp3.cpp
@@ -776,13 +776,13 @@ RESULT eServiceMP3::getPlayPosition(pts_t &pts)
return -1;
if (m_state != stRunning)
return -1;
-
+
GstFormat fmt = GST_FORMAT_TIME;
gint64 len;
if (!gst_element_query_position(m_gst_pipeline, &fmt, &len))
return -1;
-
+
/* len is in nanoseconds. we have 90 000 pts per second. */
pts = len / 11111;
return 0;
@@ -1424,14 +1424,17 @@ eAutoInitPtr<eServiceFactoryMP3> init_eServiceFactoryMP3(eAutoInitNumbers::servi
void eServiceMP3::gstCBsubtitleAvail(GstElement *element, GstBuffer *buffer, GstPad *pad, gpointer user_data)
{
gint64 duration_ns = GST_BUFFER_DURATION(buffer);
- const unsigned char *text = (unsigned char *)GST_BUFFER_DATA(buffer);
- eDebug("gstCBsubtitleAvail: %s",text);
+ size_t len = GST_BUFFER_SIZE(buffer);
+ unsigned char tmp[len+1];
+ memcpy(tmp, GST_BUFFER_DATA(buffer), len);
+ tmp[len] = 0;
+ eDebug("gstCBsubtitleAvail: %s", tmp);
eServiceMP3 *_this = (eServiceMP3*)user_data;
if ( _this->m_subtitle_widget )
{
ePangoSubtitlePage page;
gRGB rgbcol(0xD0,0xD0,0xD0);
- page.m_elements.push_back(ePangoSubtitlePageElement(rgbcol, (const char*)text));
+ page.m_elements.push_back(ePangoSubtitlePageElement(rgbcol, (const char*)tmp));
page.m_timeout = duration_ns / 1000000;
(_this->m_subtitle_widget)->setPage(page);
}