aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorFraxinas <andreas.frisch@multimedia-labs.de>2010-05-27 18:48:09 +0200
committerFraxinas <andreas.frisch@multimedia-labs.de>2010-06-09 10:06:27 +0200
commit6e09f26f57500f8acfe5bcf28faa930849d457a2 (patch)
treec0e81998094a32e3beb0580bb65f6d059fc115d1 /lib
parent2d2dba6c413197b6b86f140a2986c15b03e62517 (diff)
downloadenigma2-6e09f26f57500f8acfe5bcf28faa930849d457a2.tar.gz
enigma2-6e09f26f57500f8acfe5bcf28faa930849d457a2.zip
more experimenting on vobsubs
Diffstat (limited to 'lib')
-rw-r--r--lib/python/Screens/AudioSelection.py9
-rw-r--r--lib/service/servicemp3.cpp85
2 files changed, 49 insertions, 45 deletions
diff --git a/lib/python/Screens/AudioSelection.py b/lib/python/Screens/AudioSelection.py
index bacc00c1..b4ee929d 100644
--- a/lib/python/Screens/AudioSelection.py
+++ b/lib/python/Screens/AudioSelection.py
@@ -46,7 +46,7 @@ class AudioSelection(Screen, ConfigListScreen):
"cancel": self.cancel,
"up": self.keyUp,
"down": self.keyDown,
- }, -3)
+ }, -2)
self.settings = ConfigSubsection()
choicelist = [(PAGE_AUDIO,_("audio tracks")), (PAGE_SUBTITLES,_("Subtitles"))]
@@ -110,6 +110,8 @@ class AudioSelection(Screen, ConfigListScreen):
streams.append((x, "", number, description, language, selected))
else:
+ conflist.append(getConfigListEntry("", self.settings.dummy))
+ self["key_green"].setBoolean(False)
streams = []
conflist.append(('',))
self["key_green"].setBoolean(False)
@@ -156,7 +158,7 @@ class AudioSelection(Screen, ConfigListScreen):
number = "%x%02x" % (x[3],x[2])
elif x[0] == 2:
- types = ("UTF-8 text","SSA / AAS",".SRT file")
+ types = (_("<unknown>"), "UTF-8 text", "SSA / AAS", ".SRT", "VOB")
description = types[x[2]]
streams.append((x, "", number, description, language, selected))
@@ -310,5 +312,4 @@ class AudioSelection(Screen, ConfigListScreen):
class SubtitleSelection(AudioSelection):
def __init__(self, session, infobar=None):
- AudioSelection.__init__(self, session, infobar, page=PAGE_SUBTITLES)
- self.skinName = ["AudioSelection"]
+ AudioSelection.__init__(self, session, infobar, PAGE_SUBTITLES)
diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp
index 9625f555..c5bd04d4 100644
--- a/lib/service/servicemp3.cpp
+++ b/lib/service/servicemp3.cpp
@@ -1152,7 +1152,7 @@ void eServiceMP3::gstBusCall(GstBus *bus, GstMessage *msg)
source = GST_MESSAGE_SRC(msg);
sourceName = gst_object_get_name(source);
-#if 0
+#if 1
if (gst_message_get_structure(msg))
{
gchar *string = gst_structure_to_string(gst_message_get_structure(msg));
@@ -1560,40 +1560,44 @@ void eServiceMP3::pullSubtitle()
gint64 buf_pos = GST_BUFFER_TIMESTAMP(buffer);
gint64 duration_ns = GST_BUFFER_DURATION(buffer);
size_t len = GST_BUFFER_SIZE(buffer);
-
- if ( m_subtitleStreams[m_currentSubtitleStream].type < stVOB )
- {
- unsigned char line[len+1];
- memcpy(line, GST_BUFFER_DATA(buffer), len);
- line[len] = 0;
- eDebug("got new text subtitle @ buf_pos = %lld ns (in pts=%lld): '%s' ", buf_pos, buf_pos/11111, line);
- ePangoSubtitlePage* page = new ePangoSubtitlePage;
- gRGB rgbcol(0xD0,0xD0,0xD0);
- page->m_elements.push_back(ePangoSubtitlePageElement(rgbcol, (const char*)line));
- page->show_pts = buf_pos / 11111L;
- page->m_timeout = duration_ns / 1000000;
- SubtitlePage subtitlepage;
- subtitlepage.pango_page = page;
- subtitlepage.vob_page = NULL;
- m_subtitle_pages.push_back(subtitlepage);
- pushSubtitles();
- }
- else
+ eDebug("pullSubtitle m_subtitleStreams[m_currentSubtitleStream].type=%i",m_subtitleStreams[m_currentSubtitleStream].type);
+
+ if ( m_subtitleStreams[m_currentSubtitleStream].type )
{
- eDebug("got new subpicture @ buf_pos = %lld ns (in pts=%lld), len=%i bytes. ", buf_pos, buf_pos/11111, len);
- eVobSubtitlePage* page = new eVobSubtitlePage;
- eSize size = eSize(720, 576);
- page->m_pixmap = new gPixmap(size, 32, 0);
-// ePtr<gPixmap> pixmap;
-// pixmap = new gPixmap(size, 32, 1); /* allocate accel surface (if possible) */
- memcpy(page->m_pixmap->surface->data, GST_BUFFER_DATA(buffer), len);
- page->show_pts = buf_pos / 11111L;
- page->m_timeout = duration_ns / 1000000;
- SubtitlePage subtitlepage;
- subtitlepage.vob_page = page;
- subtitlepage.pango_page = NULL;
- m_subtitle_pages.push_back(subtitlepage);
- pushSubtitles();
+ if ( m_subtitleStreams[m_currentSubtitleStream].type < stVOB )
+ {
+ unsigned char line[len+1];
+ memcpy(line, GST_BUFFER_DATA(buffer), len);
+ line[len] = 0;
+ eDebug("got new text subtitle @ buf_pos = %lld ns (in pts=%lld): '%s' ", buf_pos, buf_pos/11111, line);
+ ePangoSubtitlePage* page = new ePangoSubtitlePage;
+ gRGB rgbcol(0xD0,0xD0,0xD0);
+ page->m_elements.push_back(ePangoSubtitlePageElement(rgbcol, (const char*)line));
+ page->show_pts = buf_pos / 11111L;
+ page->m_timeout = duration_ns / 1000000;
+ SubtitlePage subtitlepage;
+ subtitlepage.pango_page = page;
+ subtitlepage.vob_page = NULL;
+ m_subtitle_pages.push_back(subtitlepage);
+ pushSubtitles();
+ }
+ else
+ {
+ eDebug("got new subpicture @ buf_pos = %lld ns (in pts=%lld), duration=%lld ns, len=%i bytes. ", buf_pos, buf_pos/11111, duration_ns, len);
+ eVobSubtitlePage* page = new eVobSubtitlePage;
+ eSize size = eSize(720, 576);
+ page->m_pixmap = new gPixmap(size, 32, 0);
+ // ePtr<gPixmap> pixmap;
+ // pixmap = new gPixmap(size, 32, 1); /* allocate accel surface (if possible) */
+ memcpy(page->m_pixmap->surface->data, GST_BUFFER_DATA(buffer), len);
+ page->show_pts = buf_pos / 11111L;
+ page->m_timeout = duration_ns / 1000000;
+ SubtitlePage subtitlepage;
+ subtitlepage.vob_page = page;
+ subtitlepage.pango_page = NULL;
+ m_subtitle_pages.push_back(subtitlepage);
+ pushSubtitles();
+ }
}
gst_buffer_unref(buffer);
}
@@ -1704,6 +1708,7 @@ RESULT eServiceMP3::enableSubtitles(eWidget *parent, ePyObject tuple)
g_object_get (G_OBJECT (m_gst_playbin), "current-text", &text_pid, NULL);
eDebug ("eServiceMP3::switched to subtitle stream %i", text_pid);
+ m_event((iPlayableService*)this, evUpdatedInfo);
return 0;
@@ -1731,26 +1736,24 @@ PyObject *eServiceMP3::getCachedSubtitle()
PyObject *eServiceMP3::getSubtitleList()
{
eDebug("eServiceMP3::getSubtitleList");
-
ePyObject l = PyList_New(0);
- int stream_count[sizeof(subtype_t)];
+ int stream_idx = 0;
- for ( unsigned int i = 0; i <= sizeof(subtype_t); i++ )
- stream_count[i] = 0;
-
for (std::vector<subtitleStream>::iterator IterSubtitleStream(m_subtitleStreams.begin()); IterSubtitleStream != m_subtitleStreams.end(); ++IterSubtitleStream)
{
subtype_t type = IterSubtitleStream->type;
ePyObject tuple = PyTuple_New(5);
+ eDebug("eServiceMP3::getSubtitleList idx=%i type=%i, code=%s", stream_idx, int(type), (IterSubtitleStream->language_code).c_str());
PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(2));
- PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(stream_count[type]));
+ PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(stream_idx));
PyTuple_SET_ITEM(tuple, 2, PyInt_FromLong(int(type)));
PyTuple_SET_ITEM(tuple, 3, PyInt_FromLong(0));
PyTuple_SET_ITEM(tuple, 4, PyString_FromString((IterSubtitleStream->language_code).c_str()));
PyList_Append(l, tuple);
Py_DECREF(tuple);
- stream_count[type]++;
+ stream_idx++;
}
+ eDebug("eServiceMP3::getSubtitleList finished");
return l;
}