[softhddevice] Patch: ChannelInfo at Start, DPMS while Black screen, error at first attach

  • Hallo,
    habe die letzten Tage ein paar (zumindest für mich) sinnvolle Features in Softhddevice umgesetzt:


    1.) Channel Info wird bei attach/resume angezeigt:
    Praktisch wenn man es nur auf dem Desktop verwendet, dies betrifft alle Änderungen in der softhddevice.cpp.
    Habe bei der Gelegenheit auch gleich eine Funktion eingebaut, mit der der Statuswechsel etwas übersichtlicher wird.
    2.) DPMS bei radio betrieb/black screen:
    Ich nutze den VDR oft nur zum radio hören, deshalb finde ich es praktisch, wenn der Bildschirmschoner bei reinem Radiobetrieb/schwarzen Bildschirm ausgeht.
    3.) Für Kompilierung mit -DDebug musste ich noch in der misc.h einen Header ergänzen.
    4.) Bei Detachten Start auf einem Radiokanal wurde der Videothread bei mir nicht gestartet und das Frontend ist abgestürzt,
    lässt sich durch Aufruf von VideoDisplayWakeup(); am Ende von void VideoInit(const char *display_name) beheben.


    Da zumindest die letzten beiden Punkte wohl einige betreffen, anbei der diff zum aktuellen git-stand.


    Gruß red

  • Erstmal vielen Dank, werde mir den Rest ansehen.



    4.) Bei Detachten Start auf einem Radiokanal wurde der Videothread bei mir nicht gestartet und das Frontend ist abgestürzt,
    lässt sich durch Aufruf von VideoDisplayWakeup(); am Ende von void VideoInit(const char *display_name) beheben.


    Dies hatte ich auch schon ausprobiert und funktionierte leider nicht. Das Problem ist, daß VideoInit und die Restlichen X11 Aufrufe
    in verschiedenen Threads laufen und XLib nicht Threadsafe ist. Mit XInitThreads() lief das Ganze noch instabiler.


    Etwas vernünftiges ist mir noch nicht eingefallen.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Hi,
    naja ohne diesen Aufruf, wird der Videothread aber ja überhaupt nicht gestartet bei Radiokanälen.
    Somit ist das so doch immer noch die bessere Lösung oder?


    Bei Sendern mit Video tritt das Problem so denke ich nicht auf, weil VideoNextPacket VideoDisplayWakeup periodisch aufruft, und irgendwann X bereit ist.


    Interessanterweise funktioniert es immer beim zweiten Attach, oder sobald das OSD aufgerufen wird, zB über svdrpsend hitk ok.
    Ich vermute also beim Detachten Start passt einfach etwas nicht, suche in der Richtung nochmal.


    Gruß Stefan

  • Hi,
    naja ohne diesen Aufruf, wird der Videothread aber ja überhaupt nicht gestartet bei Radiokanälen.
    Somit ist das so doch immer noch die bessere Lösung oder?


    Eine Änderung, die jederzeit abstürzen kann ist doch wohl kaum eine Lösung.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470


  • Eine Änderung, die jederzeit abstürzen kann ist doch wohl kaum eine Lösung.


    Gerald


    Naja wie gesagt ohne die Zeile ist das Frontend auch tot. Und der Aufruf kann so oder so jederzeit passieren, da er getriggert wird durch:
    - Neues Videopaket
    - Osd
    - Kanal umschalten


    Zumindest soweit ich das bis jetzt überblicke.


    gruß Stefan

  • Das Problem war, daß der Fehler nur selten auftrat.
    Es kann auch sein, daß er in XLib bzw. im darunterliegenden xcb inzwischen behoben ist.


    Für solche Fälle mache ich ein Testscript was endlos den entsprechenden Fall testet und lasse es mehrere Stunden laufen.
    Wenn es nicht hängt, dann ist es zwar keine Garantie, aber sehr unwahrscheinlich.


    Die aktuelle Version funktioniert weil, zwischen dem Init und dem Wakeup eine gewisse Zeit liegt und sich die Threads dadurch
    nicht in die Quere kommen.


    Theoretisch könnte man auch die Initialisierung komplett in den Thread verlegen, dann wäre man auf der sicheren Seite.
    Ist mir aber zuviel Arbeit.


    Quote


    - Neues Videopaket
    - Osd
    - Kanal umschalten


    Das ist richtig, man müsste noch den Wakeup in die Audio Pipeline einbauen.


    Oder intensiv testen, ob die Änderung sicher läuft.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Gibt es eigentlich einen Grund, warum der XinitThreads() Aufruf aus-defined wurde?

    Code
    #ifdef USE_GLX_not_needed_done_with_locks
        if (!XInitThreads()) {
    	Error(_("video: Can't initialize X11 thread support on '%s'\n"),
    	    display_name);
        }
    #endif


    Genau dieses XIninThreads sollte doch für den Multithread-Support sorgen?
    Siehe:
    http://tronche.com/gui/x/xlib/display/XInitThreads.html


    Oder gibts damit wieder andere Probleme/Bugs?


    Übrigens habe ich im Log einige Einträge, bei denen versucht wird der Videothread über VideoDisplayWakeup() zu starten, X11 aber noch nicht bereit ist.
    Ist also wohl nur eine Frage der Zeit bis es zum Fehler kommt.



    Gruß Stefan

  • Es hatte beim Problem nicht geholfen. Und in der aktuellen Version ist es nicht notwendig.
    Beim Einbau von GLX habe ich dann gleich Locks verwendet.
    Meine Vermutung ist, daß der xcb 1.7x Thread Bug die Ursache war.


    Es geschiet nie ein parallleler Zugriff, nur aus verschiedenen Threads hintereinander.


    Wenn ich mir den Code so ansehe, dann ist "XlibDisplay" nicht richtig angeordnet.
    XlibDisplay darf erst gesetzt werden, wenn alles initialisiert ist, könnte das Problem sein.


    Ich spiele hier aber erst in der nächsten Major Version herum.


    Quote


    Übrigens habe ich im Log einige Einträge, bei denen versucht wird der Videothread über VideoDisplayWakeup() zu starten, X11 aber noch nicht bereit ist.


    Ist richtig und sollte über "XlibDisplay" Thread sicher sein.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Hi,
    wollte nur mal nachfragen wie der status zu dem patch aussieht?


    Ich fände es vor allem super, wenn der Teil zum dpms-on für radio übernommen werden würde :)


    Ich könnte auch gerne nochmal ein extra diff nur für diesen Teil gegen den aktuellen git-stand anfertigen?


    Gruß red

  • Einzelne Patches sind einfacher zureviewen und aufzunehmen.
    Inzwischen habe ich das meiste vom Patch schon wieder vergessen.


    Also ja und am Besten mit Option zum Ein und Ausschalten.
    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Danke,


    Ist nun im GIT.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!