neutrino-mp auf dem PC

Entwicklung
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

neutrino-mp auf dem PC

Beitrag von Houdini »

Dank seife's commits von gestern funktioniert jetzt auch die Tonausgabe und die Bilderanzeige auf dem PC
Es lässt sich schon einiges damit machen und eignet sich sehr gut zum Entwickeln.

Damit es auch ohne Dvbinterface läuft braucht es nur ein paar kleine Hacks.

Danke dafür.

Aber bei diesem Arrayzugriff out of bounds hängt es hier (key ist dann -1):

Code: Alles auswählen

diff --git a/src/system/setting_helpers.cpp b/src/system/setting_helpers.cpp
index 38efa96..2b804ca 100644
--- a/src/system/setting_helpers.cpp
+++ b/src/system/setting_helpers.cpp
@@ -560,10 +560,11 @@ bool CAutoModeNotifier::changeNotify(const neutrino_locale_t /*OptionName*/, voi
        int i;
        int modes[VIDEO_STD_MAX+1];
 
-       memset(modes, 0, sizeof(int)*VIDEO_STD_MAX+1);
+       memset(modes, 0, sizeof(int)*(VIDEO_STD_MAX+1));
 
        for(i = 0; i < VIDEOMENU_VIDEOMODE_OPTION_COUNT; i++) {
-               modes[VIDEOMENU_VIDEOMODE_OPTIONS[i].key] = g_settings.enabled_video_modes[i];
+               if ((VIDEOMENU_VIDEOMODE_OPTIONS[i].key >= 0) && ((VIDEOMENU_VIDEOMODE_OPTIONS[i].key <= VIDEO_STD_MAX)))
+                       modes[VIDEOMENU_VIDEOMODE_OPTIONS[i].key] = g_settings.enabled_video_modes[i];
        }
        videoDecoder->SetAutoModes(modes);
        return false;
Welche lua lib wird benötigt?
Die ubuntu 13.04 version geht so nicht. Das habe ich erstmal so umgangen, zumindest kompiliert und linkt es.

Code: Alles auswählen

diff --git a/src/gui/luainstance.cpp b/src/gui/luainstance.cpp
index 8afc712..d79e164 100644
--- a/src/gui/luainstance.cpp
+++ b/src/gui/luainstance.cpp
@@ -34,6 +34,8 @@
 #define MAGIC_COLOR 0x42424200
 #define MAGIC_MASK  0xFFFFFF00
 
+#define DYNAMIC_LUAPOSIX
+
 struct table_key {                                                                                                                                                                                  
        const char *name;                                                                                                                                                                            
        long code;                                                                                                                                                                                   
@@ -359,7 +361,7 @@ void CLuaInstance::registerFunctions()                                                                                                                                           
                                                                                                                                                                                                     
        lua_pop(lua, 1);                                                                                                                                                                             
                                                                                                                                                                                                     
-       luaL_setfuncs(lua, methods, 0);
+//     luaL_setfuncs(lua, methods, 0);
        lua_pop(lua, 1);
 
        lua_register(lua, className, NewWindow);
@@ -517,7 +519,7 @@ int CLuaInstance::GetInput(lua_State *L)
        /* signed int is debatable, but the "big" messages can't yet be handled
         * inside lua scripts anyway. RC_timeout == -1, RC_nokey == -2 */
        lua_pushinteger(L, (int)msg);
-       lua_pushunsigned(L, data);
+//     lua_pushunsigned(L, data);
        return 2;
 }
 
die ffmpeg libs müssen bei mir am Schluß bei den Linkerlibraries stehen, sonst gibt es unresolvd symbols, keine Ahnung warum das bei mir so ist, diese Geschichten hatte ich schön öfters.

Code: Alles auswählen

diff --git a/src/Makefile.am b/src/Makefile.am
index 83ac196..c8f9700 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -104,7 +104,7 @@ neutrino_LDADD += -lgif
 else
 neutrino_LDADD += -lungif
 endif
-neutrino_LDADD += -llua -ldl
+neutrino_LDADD += -llua5.1 -ldl
 
 if ENABLE_UPNP
 neutrino_LDADD += \
@@ -124,7 +124,12 @@ endif
 
 if USE_STB_HAL
 neutrino_LDADD += \
-       -lstb-hal
+       -lstb-hal \
+       @AVFORMAT_LIBS@ \
+       @AVUTIL_LIBS@ \
+       @AVCODEC_LIBS@ \
+       @SWSCALE_LIBS@
+
 neutrino_LDFLAGS = \
        -L$(STB_HAL_LIB)
 endif
libstb-hal kompiliert nicht mit den ubuntu 13.04 Paketen, die sind zu alt.
Was wäre die beste Lösung dafür?
Gestern war ich damit gescheitert, daß die autotools die selbstkompilierten Pakete nicht so genommen haben (die lagen im home) bzw. es gab massig unresolved symbols.

Das brauchts, wenn man keine DVB Karte hat, da wird ein dummy FE erzeugt, damit es später keine Nullpointerzugriffe gibt, wenn lifefe NULL ist:

Code: Alles auswählen

diff --git a/src/zapit/src/femanager.cpp b/src/zapit/src/femanager.cpp
index 374686d..445326b 100644
--- a/src/zapit/src/femanager.cpp
+++ b/src/zapit/src/femanager.cpp
@@ -80,8 +80,17 @@ bool CFEManager::Init()
                                        other_fe.insert(fe->getInfo()->type);
                                        delete fe;
                                }
-                       } else
-                               delete fe;
+                       } 
+                       else
+                       {
+//                             delete fe;
+                               fekey = MAKE_FE_KEY(i, j);
+                               femap.insert(std::pair <unsigned short, CFrontend*> (fekey, fe));
+                               INFO("add fe %d", fe->fenumber);
+                               if(livefe == NULL)
+                                       livefe = fe;
+                               fe->setIndex(idx++);
+                       }
                }
        }
        INFO("found %d frontends", (int)femap.size());
diff --git a/src/zapit/src/frontend.cpp b/src/zapit/src/frontend.cpp
index 08d0ee6..6f6718e 100644
--- a/src/zapit/src/frontend.cpp
+++ b/src/zapit/src/frontend.cpp
@@ -391,7 +391,7 @@ uint32_t CFrontend::getRate()
 fe_status_t CFrontend::getStatus(void) const
 {
        struct dvb_frontend_event event;
-       fop(ioctl, FE_READ_STATUS, &event.status);
+//     fop(ioctl, FE_READ_STATUS, &event.status);
        return (fe_status_t) (event.status & FE_HAS_LOCK);
 }
 
@@ -406,7 +406,7 @@ FrontendParameters CFrontend::getFrontend(void) const
 uint32_t CFrontend::getBitErrorRate(void) const
 {
        uint32_t ber = 0;
-       fop(ioctl, FE_READ_BER, &ber);
+//     fop(ioctl, FE_READ_BER, &ber);
        if (ber > 100000000)    /* azbox minime driver has useless values around 500.000.000 */
                ber = 0;
 
@@ -416,7 +416,7 @@ uint32_t CFrontend::getBitErrorRate(void) const
 uint16_t CFrontend::getSignalStrength(void) const
 {
        uint16_t strength = 0;
-       fop(ioctl, FE_READ_SIGNAL_STRENGTH, &strength);
+//     fop(ioctl, FE_READ_SIGNAL_STRENGTH, &strength);
 
        return strength;
 }
@@ -424,7 +424,7 @@ uint16_t CFrontend::getSignalStrength(void) const
 uint16_t CFrontend::getSignalNoiseRatio(void) const
 {
        uint16_t snr = 0;
-       fop(ioctl, FE_READ_SNR, &snr);
+//     fop(ioctl, FE_READ_SNR, &snr);
        return snr;
 }
 #if 0 
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: neutrino-mp auf dem PC

Beitrag von seife »

Zum bauen am einfachsten das Makefile aus dem buildsystem, doc/Makefile.native nehmen, damit funktioniert es bei mir (openSUSE Factory). Das definiert auch sachen wie DYNAMIC_LUAPOSIX etc.

Verlangte Lua-Version ist 5.2.

Für das "starte ohne dvb-device" habe ich lokal schon einen (IMHO) besseren patch, der nur eins und nicht viele dummy-devices erzeugt, aber so etwa in derselben Klasse spielt :-)

Wenn ich das auf allen Plattformen wenigstens mal testkompiliert habe, dann pushe ich das auch nach gitorious.

Bild & Ton hätte übrigens schon vor gestern gehen müssen, nur der audioplayer nicht (und die Standbilder im Videodekoder...)

Den rest schaue ich mir an und machs dann mit rein.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: neutrino-mp auf dem PC

Beitrag von seife »

Ich hab's mal auf einem ubuntu-13.04 x86_64 probiert:

Code: Alles auswählen

apt-get install autoconf libtool libavformat-dev libswscale-dev g++ libopenthreads-dev libglew-dev freeglut3-dev libao-dev libcurl4-gnutls-dev libfreetype6-dev libid3tag0-dev libmad0-dev libogg-dev libpng12-dev liblua5.2-dev libgif-dev libjpeg-turbo8-dev libvorbis-dev
Dann doc/Makefile.native (die Version von heute :-) in ein leeres Verzeichnis kopiert, dort drin "make ffmpeg", "make libdvbsi", "make neutrino" und das baut.

Code: Alles auswählen

export SIMULATE_FE=1
root/bin/neutrino
... und startet. Ein dvb-device an die VM durchzureichen war mir jetzt zu stressig, aber ich denke das müsste alles gehen.
flk
Contributor
Beiträge: 292
Registriert: Donnerstag 21. November 2002, 05:32
Box 1: AX HD51
Image: tuxbox
Kontaktdaten:

Re: neutrino-mp auf dem PC

Beitrag von flk »

Ich habs mal unter Archlinux versucht. Da hat man ja eher das Problem, dass die Pakete zu neu sind. Gebaut hat das sofort ohne Mecker, allerdings will Neutrino nicht starten:

Code: Alles auswählen

[flk@i5 pc]$ root/bin/neutrino
[neutrino] frameBuffer Instance created
libstb-hal debug is active for the following components:
audio  video  demux  play   power  init   ca     record 
[LT:00000000:init  ] init_td_api begin, initialized=0, debug=0xff
[LT:00000000:init  ] init_td_api: setting GL Framebuffer size to 1280x720
[LT:00000000:init  ] init_td_api: export GLFB_RESOLUTION="<w>,<h>" to set another resolution
[LT:00d4e5a0:init  ] GLFB: GL thread starting
Speicherzugriffsfehler (Speicherabzug geschrieben)
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: neutrino-mp auf dem PC

Beitrag von seife »

gdb backtrace?
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: neutrino-mp auf dem PC

Beitrag von seife »

ok, das arch dingens ist eklig:

Code: Alles auswählen

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffec2f4700 (LWP 398)]
utf8_toUtf16 (enc=0x6dd2e0 <utf8_encoding>, fromP=0x7fffec2f32d0, 
    fromLim=0x7fffc803b6c0 <Address 0x7fffc803b6c0 out of bounds>, toP=0x7fffec2f32c8, toLim=0x7fffe4021bef)
    at /home/seife/n/source/neutrino-mp/lib/xmltree/xmltok.c:256
256           *to++ = *from++;
(gdb) print to
$1 = (unsigned short *) 0x7fffe4022002
(gdb) print from
$2 = 0x7fffe401dd78 "or the graphics hardware\"/>\n<enum value=\"2\" text=\"Let the graphics hardware emit a software interrupt and sleep\"/>\n</description>\n<description lang=\"de\" text=\"Methode zur Begrenzung der Bildverzögeru"...
(gdb) bt
#0  utf8_toUtf16 (enc=0x6dd2e0 <utf8_encoding>, fromP=0x7fffec2f32d0, 
    fromLim=0x7fffc803b6c0 <Address 0x7fffc803b6c0 out of bounds>, toP=0x7fffec2f32c8, toLim=0x7fffe4021bef)
    at /home/seife/n/source/neutrino-mp/lib/xmltree/xmltok.c:256
#1  0x00007fffeac8bcad in ?? () from /usr/lib/libexpat.so.1
#2  0x00007fffeac8ca1e in ?? () from /usr/lib/libexpat.so.1
#3  0x00007fffeac8adb1 in ?? () from /usr/lib/libexpat.so.1
#4  0x00007fffeac8b53d in ?? () from /usr/lib/libexpat.so.1
#5  0x00007fffeac8e9af in XML_ParseBuffer () from /usr/lib/libexpat.so.1
#6  0x00007fffeaf0ff5c in driParseOptionInfo () from /usr/lib/xorg/modules/dri/swrast_dri.so
#7  0x00007fffeb1a8ded in dri_init_screen_helper () from /usr/lib/xorg/modules/dri/swrast_dri.so
#8  0x00007fffeb1a9d67 in ?? () from /usr/lib/xorg/modules/dri/swrast_dri.so
#9  0x00007fffeaf0df9d in ?? () from /usr/lib/xorg/modules/dri/swrast_dri.so
#10 0x00007ffff5ce548d in ?? () from /usr/lib/libGL.so.1
#11 0x00007ffff5cc65e8 in ?? () from /usr/lib/libGL.so.1
#12 0x00007ffff5cc2a67 in glXGetFBConfigs () from /usr/lib/libGL.so.1
#13 0x00007ffff5cc3523 in glXChooseFBConfigSGIX () from /usr/lib/libGL.so.1
#14 0x00007ffff5f2f81c in fgChooseFBConfig () from /usr/lib/libglut.so.3
#15 0x00007ffff5f2fa9c in fgOpenWindow () from /usr/lib/libglut.so.3
#16 0x00007ffff5f2e7aa in fgCreateWindow () from /usr/lib/libglut.so.3
#17 0x00007ffff5f300f1 in glutCreateWindow () from /usr/lib/libglut.so.3
#18 0x000000000069a570 in GLFramebuffer::setupCtx (this=this@entry=0xb92540)
    at /home/seife/n/source/libstb-hal/generic-pc/glfb.cpp:202
#19 0x000000000069af29 in GLFramebuffer::run (this=0xb92540)
    at /home/seife/n/source/libstb-hal/generic-pc/glfb.cpp:158
#20 0x00007ffff69b7aa0 in OpenThreads::ThreadPrivateActions::StartThread(void*) ()
   from /usr/lib/libOpenThreads.so.11
#21 0x00007ffff6596dd2 in start_thread () from /usr/lib/libpthread.so.0
#22 0x00007ffff36d3ced in clone () from /usr/lib/libc.so.6
(gdb) 
Ich vermute, dass die neutrino libxmltree-symbole mit libexpat conflicten... freiwillige vor :-)
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: neutrino-mp auf dem PC

Beitrag von seife »

Ich habe jetzt einen relativ hässlichen hack ins xmltok eingebaut, der für mich die crashes beim Start fixt.

Das Problem ist übrigens, dass viele Distributionen Libraries noch nicht nach dem "State of the Art", mit "hidden visibility" für interne Symbole bauen:

Code: Alles auswählen

[seife@archlinux ~]$ nm -D /usr/lib/libexpat.so.1|grep " Xml"
000000000001ad60 T XmlGetUtf16InternalEncoding
000000000001ae30 T XmlGetUtf16InternalEncodingNS
000000000001ad50 T XmlGetUtf8InternalEncoding
000000000001ae20 T XmlGetUtf8InternalEncodingNS
000000000001ad70 T XmlInitEncoding
000000000001ae40 T XmlInitEncodingNS
000000000001aa70 T XmlInitUnknownEncoding
000000000001aef0 T XmlInitUnknownEncodingNS
000000000001add0 T XmlParseXmlDecl
000000000001aea0 T XmlParseXmlDeclNS
000000000001cb20 T XmlPrologStateInit
000000000001cb40 T XmlPrologStateInitExternalEntity
000000000001aa60 T XmlSizeOfUnknownEncoding
000000000001aa00 T XmlUtf16Encode
000000000001a820 T XmlUtf8Encode
Diese Symbole sind intern und haben eigentlich nichts in der Libray verloren.
openSUSE baut schon länger mit -fvisibility=hidden und deswegen hatte ich nie Probleme damit :-)
flk
Contributor
Beiträge: 292
Registriert: Donnerstag 21. November 2002, 05:32
Box 1: AX HD51
Image: tuxbox
Kontaktdaten:

Re: neutrino-mp auf dem PC

Beitrag von flk »

Vielen Dank :) Funktioniert hier auch ....... Neutrino am PC juhu ! Muss mal schnell nen DVB-T Stick rauskramen

Trotzdem habe ich im Lauf der Jahre Archlinux schätzen gelernt. Es ist flexibel, aktuell und gut dokumentiert. Für ein Rolling Release hält sich die "Fummelei" in Grenzen und inzwischen komme ich damit einfach besser zurecht, als mit Debian oder Derivaten. Ich brauche hier allerdings auch nicht unbedingt ein Produktivsystem. Open Suse will ich aber schon längst mal wieder testen. Das letzte Suse, das ich installiert hatte, war 6.4

Auf jeden Fall ist das richtig klasse, dass Neutrino jetzt unter Arch läuft :wink:
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: neutrino-mp auf dem PC

Beitrag von seife »

Bei DVB-T kann es sein, dass der scan nicht richtig funktioniert. Martii hatte da letztens was in seinem fork gefixt. Ich selber habe aber nicht wirklich Empfang, drum habe ich das noch nicht getestet...
flk
Contributor
Beiträge: 292
Registriert: Donnerstag 21. November 2002, 05:32
Box 1: AX HD51
Image: tuxbox
Kontaktdaten:

Re: neutrino-mp auf dem PC

Beitrag von flk »

Habe den Stick endlich gefunden .... heilige Ordnung :)

Prinzipiell funktioniert das bei mir mit der Kanalsuche. Bei mir sind ganze 12 Programme über DVB-T empfangbar ... bei Transponder 38 und nach 8 gefundenen Sendern hat die Kanalsuche ne lange Pause eingelegt, aber während ich in martiis Clone nach dem richtigen Commit gesucht habe ( gibts da eigentlich eine Möglichkeit sowas zu finden, ohne alle Commits durchzuschauen ?) ist s doch noch fertig geworden. Alle 12 gefunden und Bild kommt auch :up: Ton fehlt, aber vorerst bin ich glücklich. Funktionieren denn Full featured DVB-S Karten ? Ich habe hier noch einen Igel Thin Client rumstehen und der ist mit seinem Via C7 1GHz für alles andere wohl zu schwach.
Oldtimer56
Neugieriger
Neugieriger
Beiträge: 10
Registriert: Freitag 9. November 2012, 09:39

Re: neutrino-mp auf dem PC

Beitrag von Oldtimer56 »

Mit dem Neutrino-MP Build aus dem max.git für Spark7162 klappt die DVB-T Suche auch > 35 Sender werden gefunden, davon ein paar doppelt die von einem anderen Standort kommen.
Leider verhält sich aber die Kanalliste beim SAT Betrieb ( Master / Loop ) als ob nur ein Single Tuner drin wäre.
Bei Aufnahme werden nur die Sender des gleichen Transponders freigegeben.
Stelle ich auf : ( Master / Master ) geht's.
Muss nur aufpassen, dass ich in der gleichen Ebene bleibe, hehe :wink:
flk
Contributor
Beiträge: 292
Registriert: Donnerstag 21. November 2002, 05:32
Box 1: AX HD51
Image: tuxbox
Kontaktdaten:

Re: neutrino-mp auf dem PC

Beitrag von flk »

Audio klappt jetzt .... mit ffmpeg 1.2.1 läufts allerdings viel zu schnell, klingt witzig :lol:
Wenn ich ffmpeg 1.0.7 baue, ist alles i.O.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: neutrino-mp auf dem PC

Beitrag von seife »

hm, muss ich probieren. Die packman-Pakete für openSUSE sind noch 1.0.6 -- da hat's funktioniert :-)

Bestimmt kommt die sample-rate irgendwie falsch rüber oder so, ein paar lt_info in audio.cpp werden das Rätsel lösen...
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: neutrino-mp auf dem PC

Beitrag von Houdini »

hab hier 'nen div by 0 gehabt
der wird getriggert für g_settings.screen_preset = 1;
dann ist m_listmaxshow = 16 und für m_playlist.size() = 0 ist (-1/16)+1 gecastet auf 32bit ist zufällig 0 :-)

achso, der default g_settings.screen_preset = 0; führt zu "zu kleinem" OSD auf dem PC.

Code: Alles auswählen

diff --git a/src/gui/audioplayer.cpp b/src/gui/audioplayer.cpp
index 6d609fa..d767b02 100644
--- a/src/gui/audioplayer.cpp
+++ b/src/gui/audioplayer.cpp
@@ -1896,7 +1896,15 @@ void CAudioPlayerGui::paint()
                int sb = m_fheight * m_listmaxshow;
                m_frameBuffer->paintBoxRel(m_x + m_width - 15, ypos, 15, sb, COL_MENUCONTENT_PLUS_1);
 
-               int sbc = ((m_playlist.size() - 1) / m_listmaxshow) + 1;
+               int sbc;
+               if (m_playlist.size() == 0) /* check for underflow, may lead to sbc=0 on 64bit systems */
+               {
+                       sbc = ((m_playlist.size() - 1) / m_listmaxshow) + 1;
+               }
+               else
+               {
+                       sbc = 1;
+               }
                int sbs = (m_selected / m_listmaxshow);
 
                m_frameBuffer->paintBoxRel(m_x + m_width - 13, ypos + 2 + sbs*(sb-4)/sbc , 11, (sb-4)/sbc, COL_MENUCONTENT_PLUS_3, RADIUS_SMALL);
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: neutrino-mp auf dem PC

Beitrag von seife »

sollte alles schon gefixt sein, hast du mal wieder nicht den aktuellen Code? :-)

Komisch dass die div-by-zero vorher nie aufgetreten sind... aber ich habe auch nie wirklich lange ohne channels etc. rumgeklickt :-) Der gcc 4.8 vom arch linux scheint da auch aggressiver zu optimieren. Da wird's noch einiges zu finden geben.

Für alle die "Mickymaus-Ton" haben: ich konnte das auf meiner arch-VM nicht nachvollziehen, habe aber auch nur mit dem audioplayer getestet. Schaut auch mal, welcher audiotreiber von der libao benutzt wird (das sollte der decoderthread beim start ausgeben)
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: neutrino-mp auf dem PC

Beitrag von Houdini »

seife hat geschrieben:sollte alles schon gefixt sein, hast du mal wieder nicht den aktuellen Code? :-)
och menno, glaube gestern abend hab ich das letzte mal aktualisiert...
flk
Contributor
Beiträge: 292
Registriert: Donnerstag 21. November 2002, 05:32
Box 1: AX HD51
Image: tuxbox
Kontaktdaten:

Re: neutrino-mp auf dem PC

Beitrag von flk »

seife hat geschrieben: Schaut auch mal, welcher audiotreiber von der libao benutzt wird (das sollte der decoderthread beim start ausgeben)
Das macht bei mir keinen Unterschied, ob pulse oder alsa, Donald Duck bleibt. Aber wie gesagt, mit ffmpeg 1.0.7 tut s. Wenn das sonst bei niemand auftritt, kann ich gut damit leben, für Neutrino extra ffmpeg binaries auf der Platte liegen zu haben.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: neutrino-mp auf dem PC

Beitrag von Houdini »

ich habe hier die Änderung zu einer "Anzeigeunschönheit", die mich schon länger geärgert hat,
die beiden Bilder untern zeigen den Unterschied.

Kann bitte mal jemand mit EPG/Empfang gegenchecken, daß die Anzeige der normalen Current/Next Events noch stimmen?

Code: Alles auswählen

diff --git a/src/gui/infoviewer.cpp b/src/gui/infoviewer.cpp
index 147b55d..c5ecdfc 100644
--- a/src/gui/infoviewer.cpp
+++ b/src/gui/infoviewer.cpp
@@ -492,7 +492,7 @@ void CInfoViewer::show_current_next(bool new_chan, int  epgpos)
                        loc = LOCALE_INFOVIEWER_EPGWAIT;
                else
                        loc = LOCALE_INFOVIEWER_EPGNOTLOAD;
-               g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO]->RenderString(ChanNameX+ 10, CurrInfoY, BoxEndX- (ChanNameX+ 20), g_Locale->getText(loc), COL_INFOBAR, 0, true); // UTF-8
+               g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO]->RenderString(ChanInfoX + 10 + info_time_width + 10, CurrInfoY, BoxEndX- (ChanNameX+ 20), g_Locale->getText(loc), COL_INFOBAR, 0, t
        } else {
                show_Data ();
        }
@@ -1719,7 +1719,7 @@ void CInfoViewer::show_Data (bool calledFromEvent)
                        (calledFromEvent && !(info_CurrentNext.flags & (CSectionsdClient::epgflags::has_next|CSectionsdClient::epgflags::has_current))))
        {
                // no EPG available
-               display_Info(NULL, g_Locale->getText(gotTime ? LOCALE_INFOVIEWER_NOEPG : LOCALE_INFOVIEWER_WAITTIME));
+               display_Info(g_Locale->getText(gotTime ? LOCALE_INFOVIEWER_NOEPG : LOCALE_INFOVIEWER_WAITTIME), NULL);
                /* send message. Parental pin check gets triggered on EPG events... */
                char *p = new char[sizeof(t_channel_id)];
                memmove(p, &channel_id, sizeof(t_channel_id));
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
flk
Contributor
Beiträge: 292
Registriert: Donnerstag 21. November 2002, 05:32
Box 1: AX HD51
Image: tuxbox
Kontaktdaten:

Re: neutrino-mp auf dem PC

Beitrag von flk »

Bei mir schaut alles noch ok aus. Bei deinem Code ist ein Stück abgeschnitten. Ich habe

Code: Alles auswählen

COL_INFOBAR, 0, t
durch

Code: Alles auswählen

COL_INFOBAR, 0, true);
ersetzt, oder fehlt noch mehr ? Gebaut hat das so.
Bildschirmfoto.jpg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
doc
Contributor
Beiträge: 1623
Registriert: Donnerstag 10. Januar 2002, 20:03

Re: neutrino-mp auf dem PC

Beitrag von doc »

Warum den Code nicht direkt etwas lesbarer strukturieren? Ich habe zwar einen schönen 24" Monitor aber deswegen muss man ja trotzdem nicht Codezeilen bauen die dann nur bei maximierten Fenster komplett zu sehen sind. Vermutlich ist genau dadurch dieser C&P Fehler entstanden. Als Minimum eben an jedem Funktionsparameter umbrechen. Dadurch kann man auch noch erklärende Comments hinter die Parameter noch setzen.

Code: Alles auswählen

diff --git a/src/gui/infoviewer.cpp b/src/gui/infoviewer.cpp
index 147b55d..f7c1960 100644
--- a/src/gui/infoviewer.cpp
+++ b/src/gui/infoviewer.cpp
@@ -492,7 +492,13 @@ void CInfoViewer::show_current_next(bool new_chan, int  epgpos)
                        loc = LOCALE_INFOVIEWER_EPGWAIT;
                else
                        loc = LOCALE_INFOVIEWER_EPGNOTLOAD;
-               g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO]->RenderString(ChanNameX+ 10, CurrInfoY, BoxEndX- (ChanNameX+ 20), g_Locale->getText(loc), COL_INFOBAR, 0, true); // UTF-8
+               g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO]->RenderString(ChanInfoX + 10 + info_time_width + 10,
+                                                                               CurrInfoY,
+                                                                               BoxEndX-(ChanNameX+ 20),
+                                                                               g_Locale->getText(loc),
+                                                                               OL_INFOBAR,
+                                                                               0,
+                                                                               true);
        } else {
                show_Data ();
        }
Noch lesbarer wird das ganze wenn man noch ein Namespace für SNeutrinoSettings setzt, dadurch kann man sich die explizite Angabe jeweils sparen.
Na schönen Dank Herr Schwanke!
Ein toller Sommer! :-(
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: neutrino-mp auf dem PC

Beitrag von seife »

Zu spät, doc :-)

Code: Alles auswählen

da79e3b infoviewer: always paint 'no epg...' in the same place
a579bd0 infoviewer: simplify show_current_next()
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: neutrino-mp auf dem PC

Beitrag von Houdini »

>Warum den Code nicht direkt etwas lesbarer strukturieren?

Ja, das ist grundsätzlich richtig,
nach meiner Erfahrung ist aber der Kontext oben/unten wichtiger,
deswegen lasse ich lieber die Zeile länger.

Schönen Brückentag :-)
martii
Einsteiger
Einsteiger
Beiträge: 217
Registriert: Donnerstag 14. Juni 2012, 09:39

Re: neutrino-mp auf dem PC

Beitrag von martii »

Nach

Code: Alles auswählen

diff --git a/generic-pc/audio.cpp b/generic-pc/audio.cpp
index 99effcd..da0fbdc 100644
--- a/generic-pc/audio.cpp
+++ b/generic-pc/audio.cpp
@@ -329,7 +329,7 @@ void cAudio::run()
        {
                driver = ao_default_driver_id();
                sformat.bits = 16;
-               sformat.channels = c->channels;
+               sformat.channels = av_get_channel_layout_nb_channels(c->channels);
                sformat.rate = c->sample_rate;
                sformat.byte_format = AO_FMT_NATIVE;
                sformat.matrix = 0;
@@ -349,7 +349,7 @@ void cAudio::run()
        fprintf(stderr, "\n");
 #endif
        lt_info("codec params: sample_fmt %d sample_rate %d channels %d\n",
-                       c->sample_fmt, c->sample_rate, c->channels);
+                       c->sample_fmt, c->sample_rate, av_get_channel_layout_nb_channels(c->channels));
        while (thread_started) {
                int gotframe = 0;
                if (av_read_frame(avfc, &avpkt) < 0)
passt's mit der Audio-Ausgabe auch mit ffmpeg 1.2.1.
doc
Contributor
Beiträge: 1623
Registriert: Donnerstag 10. Januar 2002, 20:03

Re: neutrino-mp auf dem PC

Beitrag von doc »

Houdini hat geschrieben:Ja, das ist grundsätzlich richtig,
nach meiner Erfahrung ist aber der Kontext oben/unten wichtiger,
deswegen lasse ich lieber die Zeile länger.
Ähm, welcher Kontext? Deine Veränderungen sind genau in dem Aufruf der Funktion die ich meine.
Dem Compiler ist das egal, der zerlegt das sowieso in einen Binärblob, nur den Programmierern sollte das nicht egal sein, wenn ich jedes mal Ewigkeiten brauche um erst mal den Code zu verstehen ist niemanden geholfen.

Probiere mal so ein Stück Code in größeren Projekten upstream zu bekommen. :wink: Never ever. Und das ist auch gut so.
Mir vergeht immer die Lust bei Neutrino im Quellcode zu stöbern. Nix für ungut.
Na schönen Dank Herr Schwanke!
Ein toller Sommer! :-(
flk
Contributor
Beiträge: 292
Registriert: Donnerstag 21. November 2002, 05:32
Box 1: AX HD51
Image: tuxbox
Kontaktdaten:

Re: neutrino-mp auf dem PC

Beitrag von flk »

:up: Vielen Dank
Antworten