more experimenting on vobsubs
authorFraxinas <andreas.frisch@multimedia-labs.de>
Thu, 27 May 2010 16:48:09 +0000 (18:48 +0200)
committerFraxinas <andreas.frisch@multimedia-labs.de>
Wed, 9 Jun 2010 08:06:27 +0000 (10:06 +0200)
data/skin_default.xml
lib/python/Screens/AudioSelection.py
lib/service/servicemp3.cpp

index edf61357a0fccbedac18a038ab9c6a50ff0dab70..9f70e0d037cf39072abcfaa945990f62ec303d08 100755 (executable)
                <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" />
 
 
                <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, [ 
                                }
                        </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)],
index bacc00c1268570227a5db970a7bbadb33dfb8f71..b4ee929dac125a9d0a5b1107e23029fc3462e01d 100644 (file)
@@ -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)
index 9625f555ba2d3082613b1273bc850cd355ac2542..c5bd04d4f8d207c026fbfd09a533e045ff12928e 100644 (file)
@@ -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;
 }