diff options
| author | Fraxinas <andreas.frisch@multimedia-labs.de> | 2010-05-27 18:48:09 +0200 |
|---|---|---|
| committer | Fraxinas <andreas.frisch@multimedia-labs.de> | 2010-06-09 10:06:27 +0200 |
| commit | 6e09f26f57500f8acfe5bcf28faa930849d457a2 (patch) | |
| tree | c0e81998094a32e3beb0580bb65f6d059fc115d1 | |
| parent | 2d2dba6c413197b6b86f140a2986c15b03e62517 (diff) | |
| download | enigma2-6e09f26f57500f8acfe5bcf28faa930849d457a2.tar.gz enigma2-6e09f26f57500f8acfe5bcf28faa930849d457a2.zip | |
more experimenting on vobsubs
| -rwxr-xr-x | data/skin_default.xml | 25 | ||||
| -rw-r--r-- | lib/python/Screens/AudioSelection.py | 9 | ||||
| -rw-r--r-- | lib/service/servicemp3.cpp | 85 |
3 files changed, 74 insertions, 45 deletions
diff --git a/data/skin_default.xml b/data/skin_default.xml index edf61357..9f70e0d0 100755 --- a/data/skin_default.xml +++ b/data/skin_default.xml @@ -62,8 +62,13 @@ <widget name="statuspic" pixmaps="skin_default/buttons/button_green.png,skin_default/buttons/button_green_off.png" position="130,380" zPosition="10" size="15,16" transparent="1" alphatest="on"/> </screen> <!-- Audio selection --> +<<<<<<< HEAD <screen name="AudioSelection" position="center,center" size="560,330" title="Audio"> <widget name="config" position="50,10" size="500,110" scrollbarMode="showOnDemand" /> +======= + <screen name="AudioSelection" position="center,center" size="520,330" title="Audio"> + <widget name="config" position="50,10" size="460,110" scrollbarMode="showOnDemand" /> +>>>>>>> more experimenting on vobsubs <widget source="key_red" render="Pixmap" pixmap="skin_default/buttons/key_red.png" position="10,10" size="35,25" alphatest="on"> <convert type="ConditionalShowHide" /> @@ -78,6 +83,7 @@ <convert type="ConditionalShowHide" /> </widget> +<<<<<<< HEAD <widget source="key_red" render="Pixmap" pixmap="skin_default/buttons/key_red.png" position="10,10" size="35,25" alphatest="on"> <convert type="ConditionalShowHide" /> @@ -96,10 +102,16 @@ <widget source="streams" render="Listbox" scrollbarMode="showOnDemand" position="10,120" size="540,200" zPosition="3" transparent="1" > +======= + <ePixmap pixmap="skin_default/div-h.png" position="10,112" size="500,2" /> + + <widget source="streams" render="Listbox" scrollbarMode="showOnDemand" position="10,120" size="500,200" zPosition="3" transparent="1" > +>>>>>>> more experimenting on vobsubs <convert type="TemplatedMultiContent"> {"templates": {"default": (25, [ MultiContentEntryText(pos = (0, 0), size = (35, 25), font = 0, flags = RT_HALIGN_LEFT, text = 1), # key, +<<<<<<< HEAD <convert type="TemplatedMultiContent"> {"templates": {"default": (25, [ @@ -125,6 +137,19 @@ } </convert> </widget> +======= + MultiContentEntryText(pos = (40, 0), size = (55, 25), font = 0, flags = RT_HALIGN_LEFT, text = 2), # number, + MultiContentEntryText(pos = (100, 0), size = (120, 25), font = 0, flags = RT_HALIGN_LEFT, text = 3), # description, + MultiContentEntryText(pos = (230, 0), size = (200, 25), font = 0, flags = RT_HALIGN_LEFT, text = 4), # language, + MultiContentEntryText(pos = (440, 4), size = (60, 25), font = 1, flags = RT_HALIGN_RIGHT, text = 5), # selection, + ], True, "showNever"), + "notselected": (25, [ + MultiContentEntryText(pos = (0, 0), size = (35, 25), font = 0, flags = RT_HALIGN_LEFT, text = 1), # key, + MultiContentEntryText(pos = (40, 0), size = (55, 25), font = 0, flags = RT_HALIGN_LEFT, text = 2), # number, + MultiContentEntryText(pos = (100, 0), size = (120, 25), font = 0, flags = RT_HALIGN_LEFT, text = 3), # description, + MultiContentEntryText(pos = (230, 0), size = (200, 25), font = 0, flags = RT_HALIGN_LEFT, text = 4), # language, + MultiContentEntryText(pos = (440, 4), size = (60, 25), font = 1, flags = RT_HALIGN_RIGHT, text = 5), # selection, +>>>>>>> more experimenting on vobsubs ], False, "showNever") }, "fonts": [gFont("Regular", 20), gFont("Regular", 16)], 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; } |
