Outputdevice wechseln zw. xvdr (XBMC-pvr) und softhddevice

  • hallo,


    ich nehme mal TomJoad's zitat aus dem softhddevice thread, um eben diesen nicht zuzumüllen:

    Zitat

    Bei mir läuft softhddevice und xvdr (pipelka) parallel ohne Probleme.

    wie kommt man aus xvdr/XBMC über die RC wieder retour zu softhddevice?


    gruß, ciax

    Lascala LC17 - tribute to viking ;o) + atric IR / SoC ASUS J3455M-E / OctopusNet S4 / yavdr ubuntu jammy / output: osd2web + kivy-osd2web / branch 'python3' via 6.4" TFT & sat>ip DVB-S/S2 via FullHD / NVidia GT1030 passiv

    2 Mal editiert, zuletzt von ciax ()

  • Ich dachte es kann jemand anders besser beantworten.


    So habe ich es in commands.conf

    Code
    Start xbmc: (svdrpsend plug softhddevice prim 2; xbmc; svdrpsend plug softhddevice prim)


    Da Display bei mir schon im environment ist, brauche ich es nicht setzten.


    Ansonsten noch noch --standalone wenn kein Windowmanager.


    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 johns! du sollst ja auch eigentlich am softhddevice arbeiten und nicht blöde user-fragen beantworten :D - ich steh' aber trotzdem am schlauch:


    du schaltest mit "svdrpsend plug softhddevice prim 2;" auf dein 2. ausgabedevice (zB. xvdr) - danach startest du "xbmc;". xbmc bleibt solange am ausgabedevice (xvdr) hängen, bis du es selbst beendest - danach müßte dein letzter command greifen und wieder zu vdr/softhddevice als ausgabe schalten. aber wohin schaltet der letzte command "svdrpsend plug softhddevice prim" ? ich nehme an, daß ohne angabe der nummer des "prim" device das 1. device genutzt wird, stimmt's oder denkfehler?


    das mit dem "--standalone" ist mir auch nicht klar. ich nutze keinen WM - nur "plain X".


    doofe fragen, gell - ich stell sie trotzdem :]


    ciax


  • du schaltest mit "svdrpsend plug softhddevice prim 2;" auf dein 2. ausgabedevice (zB. xvdr) - danach startest du "xbmc;". xbmc bleibt solange am ausgabedevice (xvdr) hängen, bis du es selbst beendest - danach müßte dein letzter command greifen und wieder zu vdr/softhddevice als ausgabe schalten. aber wohin schaltet der letzte command "svdrpsend plug softhddevice prim" ? ich nehme an, daß ohne angabe der nummer des "prim" device das 1. device genutzt wird, stimmt's oder denkfehler?


    Bis auf das prim ohne Nummer auf das SoftHDDevice umschaltet egal welche Nummer es ist, stimmt es.


    Man könnte noch erweitern, das ein Name auf das Device des Plugins mit diesen Namen umschaltet, aber dafür kenne ich mit den VDR internas zuwenig aus.


    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

  • Bis auf das prim ohne Nummer auf das SoftHDDevice umschaltet egal welche Nummer es ist, stimmt es.

    danke für die rückmeldung und deinen commands.conf auszug! jetzt ist es klar geworden ;)

    Man könnte noch erweitern, das ein Name auf das Device des Plugins mit diesen Namen umschaltet, aber dafür kenne ich mit den VDR internas zuwenig aus.

    das wäre aber eine fleißaufgabe - kümmere dich lieber um wichtigeres im softhddevice :tup :] :tup
    //edit: du hast's ja echt schon in deine ToDo-liste aufgenommen :--> "svdrp prim: support plugin names for device numbers."



    ciax


    ps: noch setze ich den thread nicht auf "solved" - kommt sicher noch was ...

    Lascala LC17 - tribute to viking ;o) + atric IR / SoC ASUS J3455M-E / OctopusNet S4 / yavdr ubuntu jammy / output: osd2web + kivy-osd2web / branch 'python3' via 6.4" TFT & sat>ip DVB-S/S2 via FullHD / NVidia GT1030 passiv

    Einmal editiert, zuletzt von ciax ()

  • Moin!


    Etwas Offtopic, aber:

    "svdrp prim: support plugin names for device numbers."


    einem cDevice-Objekt wirst du niemals ansehen können, von welchem Plugin es erstellt wurde. Wenn die Plugins nicht z.B. einen Service-Call o.ä. anbieten, sprich mithelfen, wird das nichts.


    Lars.


  • yavdr hijack .. 8) - passt aber gut. tobt euch nur aus .. solange es anregt.

  • bei gen2vdr gibt es ein Script was für das Umschalten angedacht ist, /_config/bin/g2v_switch [-switch]
    allerdings gibt es das nicht erst seit jetzt aber es wurde für aktuelle Gegebenhaiten angepasst.


    Schön wenn die die Distributoren dazu schon Gedanken gemacht haben. :mua

    Software: gen2vdr V3 ( Beta8 ) / gen2vdr V2
    Hardware: Intel 5200EE - 5N7A-VM - Scythe Shuriken - BeQuiet(Netzteil) - X10-USB Remote
    SMT 7020S & P3@900 - Testsystem mit FF und X10-USB Remote
    Links für Neueinsteiger


    "Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

  • da würd's nun etwas in vdr-1.7.27.geben:

    Code
    - The new function cDevice::DeviceName() returns a string identifying the name of
       the given device.


    ciax

  • Moin!


    da würd's nun etwas in vdr-1.7.27.geben:


    Ja, wenn die Ausgabe-Plugins diese Funktion passend überladen, könnte es gehen. Sowas meinte ich mit Hilfestellung - schön, dass es da jetzt eine Standardschnittstelle gibt.
    Was aber auf alle Fälle geht, ist, einfach "ein Ausgabe-Device weiter"-schalten. Man muss ja nur über das cDevice-Array laufen und nachsehen, ob HasDecoder was wahres zurückgibt. Und natürlich nicht bei 0 starten, sondern auf der Nummer, die dem aktuellen Ausgabe-Device entspricht.
    Wenn du dann nur zwei Ausgabe-Devices hast, wechselt du zwischen den beiden hin und her. Das muss aber eigentlich nicht nach softhddevice, daraus könnte man auch ein eigenes Plugin basteln (wenn's das nicht schon gibt).


    Lars.

  • da würd's nun etwas in vdr-1.7.27.geben:

    - The new function cDevice::DeviceName() returns a string identifying the name of
    the given device.


    sodala, nach langer zeit bin ich doch noch dazu gekommen, das umschalten zw. softhddevice und xvdr/xbmc mittels "svdrpsend plug softhddevice" zu probieren. grundsätzlich funktioniert es gut und wie gewollt, allerdings reisst es mir nach ein paar sekunden den vdr mit einem segfault (libc-2.11.1.so) nieder.
    wenn ich xbmc via "externalplayer" plugin starte funktioniert es.


    das (syslog)log zeigt mir:

    Code
    May 15 20:22:48 pvr vdr: [6041] executing command '(/opt/src/vdr/vdr-1.7.26/svdrpsend plug softhddevice prim 2; export DISPLAY=:0.1; /opt/src/xbmc_pvr/xbmc/start-xbmc.sh; /opt/src/vdr/vdr-1.7.26/svdrpsend plug softhddevice prim)'
    May 15 20:22:52 pvr lircd-0.8.6[1044]: accepted new client on /var/run/lirc/lircd
    May 15 20:23:39 pvr vdr: video: 11:11:40.888  +41  287   0/\ms  35 v-buf
    May 15 20:24:18 pvr vdr: [6041] PANIC: watchdog timer expired - exiting!
    May 15 20:24:18 pvr kernel: [ 2643.021195] vdr[6041]: segfault at 18 ip 00007f988910476c sp 00007fffabf9b950 error 4 in libc-2.11.1.so[7f988908d000+
    17a000]
    May 15 20:24:18 pvr lircd-0.8.6[1044]: removed client
    May 15 20:24:18 pvr kernel: [ 2643.100773] ALSA hda_codec.c:1471: hda_codec_cleanup_stream: NID=0x4
    May 15 20:24:18 pvr lircd-0.8.6[1044]: removed client


    was tut da der watchdog? das xbmc-log gibt gar nichts her ..


    "start-xbmc.sh" sieht so aus:

    Bash
    #!/bin/bash
    
    
    /usr/local/bin/svdrpsend REMO off
    export DISPLAY=:0.1
    /opt/src/xbmc_pvr/xbmc/xbmc.bin -fs --lircdev /dev/lircd
    /usr/local/bin/svdrpsend REMO on
    exit 0


    kann sich da einer etwas daraus zusammenreimen?


    ciax


    //edit: der segfault hat - glaube ich - keine bedeutung. auch wenn ich vdr sauber über die runvdr-(extreme) beende gibt es immer einen segfault - allerdings in dieser form direkt im vdr-binary und nicht mit libc

    Code
    May 15 20:00:18 pvr kernel: [ 1203.563434] vdr[1440]: segfault at 7f4886d10798 ip 0000000000550256 sp 00007fff8cba8c70 error 4 in vdr[400000+1c7000]

    . warum das so ist, weiß ich nicht - das gab's auch trotz hochziehen der (ubuntu)distri und neukompilieren des vdr ....


    ich könnte noch den watchdog-timer höher setzen, aber das bringt gegen das problem doch auch nichts ...

    Lascala LC17 - tribute to viking ;o) + atric IR / SoC ASUS J3455M-E / OctopusNet S4 / yavdr ubuntu jammy / output: osd2web + kivy-osd2web / branch 'python3' via 6.4" TFT & sat>ip DVB-S/S2 via FullHD / NVidia GT1030 passiv

    Einmal editiert, zuletzt von ciax ()

  • Kommandos, die vom vdr gestartet werden, dürfen nicht länger dauern als die Watchdog-Zeit, bis sie beendet sind.
    Also den xbmc-start in den Hintergrund schieben, dann könnte das laufen. Das Skript muss sich jedenfalls schnell beenden!

    vdr-2.6.4

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, hbbtv, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver

    ubuntu focal, yavdr-ansible, linux-5.15 ,AsRock J4105, CIne CT-V7 DVB-C

  • - Braucht man hier wirklich das primary device ? Eigentlich braucht es nur ATTA und DETA - xvdr läuft doch auch parallel.
    - Den segfault solltest du mal verfolgen durch einen backtrace - in Ordnung ist sowas nie - aber nicht relevant für dein Problem.
    - Vom Watchdog ausgehend nehme ich an du versuchst XBMC über commands.conf zu starten. Das funktioniert so nicht. Also entweder
    + externalplayer, wobei dann bei restart des VDR was auch immer du startest auch mit beendet wird oder
    + ein geeignetes upstart/at Kommando was den länger laufenden Prozess ausserhalb des VDR startet.


    Nun bin ich wieder still, nicht das es heisst das yavdr hier hijacked :P

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

  • hallo,


    erstmal danke für die rückmeldungen - hätte nicht gedacht, daß da so schnell was kommt ;)


    Zitat

    Kommandos, die vom vdr gestartet werden, dürfen nicht länger dauern als die Watchdog-Zeit, bis sie beendet sind.


    Also den xbmc-start in den Hintergrund schieben, dann könnte das laufen. Das Skript muss sich jedenfalls schnell beenden


    das ist mal eine aussage - habe ich nicht gewußt! ich führe das umschalten mittels "command" (commands.conf) durch (siehe code-schnipsel/logauszug von oben). wenn ich jetzt das script "start-xbmc.sh" in den hintegrund schiebe, blockiert es nicht mehr und der letzte befehl "vdrpsend plug softhddevice prim" wird ausgeführt, womit ich wieder im "vdr-modus" lande. richtig? dann geht das mit dem in hintergrund schicken nicht so einfach ....



    das mit ATTA und DETA müßte ich ausprobieren - klingt logisch. xbmc müßte dabei aber immer parallel laufen? das gefällt mir nicht so ...


    Zitat

    + ein geeignetes upstart/at Kommando was den länger laufenden Prozess ausserhalb des VDR startet.


    das heißt nun, daß auch bei boxstart vdr und xbmc parallel laufen? oder meinst du mit "at" einen job starten, der dann über commands.conf ein paar sekunden später ausgeführt (im hintergrund/separat) wird?

    Nun bin ich wieder still, nicht das es heisst das yavdr hier hijacked :P

    bitte gerne 8) - das sind nur späßchen ...


    ciax


    //edit: ok, das mit "at" habe ich mir angeschaut (habe ich noch nie genutzt) - "at" sollte für mich geeignet sein. nur, wenn ich das wieder aus der commands.conf (vdr) mache, dann "blockiert" es nicht mehr und der letzte befehl (vdrpsend plug softhddevice prim) wird wieder gleich ausgeführt, womit ich wieder im vdr lande. hmm, ganz durchblicken tu ich noch nicht ... kommt schon noch.

    Lascala LC17 - tribute to viking ;o) + atric IR / SoC ASUS J3455M-E / OctopusNet S4 / yavdr ubuntu jammy / output: osd2web + kivy-osd2web / branch 'python3' via 6.4" TFT & sat>ip DVB-S/S2 via FullHD / NVidia GT1030 passiv

    Einmal editiert, zuletzt von ciax ()

  • Moin!


    Du solltest natürlich nicht nur xbmc im Hintergrund starten, sondern ein Script, dass xbmc startet und danach dann wieder das Primary Device setzt (bzw. ATTA ausführt).
    Du musst dein Script also teilen.


    Lars.

  • ciax: keine Angst - ich plapper weiter munter drauf los ;) - wir machen das umschalten ja schon eine Weile.


    Wenn du at benutzt solltest du in das XBMC script am Ende wieder das zurückschalten übernehmen.
    Verstanden habe ich es so das du temporär XBMC als Hauptanwendung haben willst, standardmässig VDR mit SHD läuft ?


    In yavdr benutzen wir menuorg um Befehle abzusetzen, die einen Upstart Job xbmc starten, in dessen pre-start und post-stop schalten wir die FB ab - denkbar wäre hier für dich sicher auch DETA vorher und ATTA nachher zu machen.

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!