softhddevice - Detach/Suspend

  • Hallo zusammen,

    meine Frage geht an die softhddevice-Kollegen:

    Was ist der Unterschied bei euch zwischen Suspend und Detach? Ich baue das gerade bei mir ein und bin etwas unsicher, was die Zustände angeht.

    Ich würde es so definieren:
    1) detached: Das Plugin beendet alle threads und stoppt die Verbindung zu audio- und video-Hardware, damit diese von anderen benutzt werden kann. Es läuft aber trotzdem im Hintergrund weiter und signalisiert VDR, dass weiterhin Daten angenommen werden, macht aber nichts damit. Damit das läuft, brauchts auch ein Osd. Im Prinzip wird ein temporäres dummydevice geschaffen. Soweit richtig?

    Wie verlässt man aber jetzt diesen Zustand am besten wieder. Soll das ein expizites "Attach" sein, oder ein Tastendruck, der z.B. ein SetPlaymode/Play etc. auslöst? Wie reagieren da eure plugins?

    2) suspend: Verstehe ich als "Ruhezustand", wo sich das Plugin quasi schlafen legt. Könnte aber auch der gleiche Zustand wie detached sein?! Geht das Plugin nach einer Zeit selbst in suspend?

    Nachdem die Zustände in softhddevice-drm-gles mittlerweile als state machine umgesetzt sind, würde es so vorhaben:

    - enter state DETACHED/SUSPEND: audio, video wird geschlossen, das device selbst bleibt offen, ein dummy-osd steht zur Verfügung
    - leave state DETACHED: Verlassen nur mit explizitem "ATTACH", Problem: Was passiert, wenn VDR SetPlayMode() oder Play() oder was auch immer ans Plugin schickt (z.B. wenn man blind navigiert). Wenn das Plugin nicht darauf reagiert, müsste man sich ja irgendwie den gewollten Zustand merken und bei einem "ATTACH" setzen. Oder kann/soll man jegliche VDR-Aktivität blockieren? Ich habe da auch ein cSoftHdControl bei euch gefunden...
    - leave state SUSPEND: Verlassen über jede User-Aktivität in den neuen state

    Ich hoffe, die Fragestellung ist nicht zu kompliziert, aber wäre top, wenn ihr mich in die richtige Richtung lenken könntet.

    Danke
    Andreas

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Hmm.. bei mir ist das letztlich das gleiche. Bei Suspend sowie bei Detach werden Audio und Video zu gemacht und freigegeben. Das ist immer noch das Original verhalten von Johns.

    Bei suspend wird wohl zusätzlich das ganze Plugin beendet. Letzlich sehe ich aber keinen Unterschied. Ich denke die Arie mit einem Dummy OSD kannst du dir sparen.

  • Hmm.. bei mir ist das letztlich das gleiche. Bei Suspend sowie bei Detach werden Audio und Video zu gemacht und freigegeben. Das ist immer noch das Original verhalten von Johns.

    Bei suspend wird wohl zusätzlich das ganze Plugin beendet. Letzlich sehe ich aber keinen Unterschied. Ich denke die Arie mit einem Dummy OSD kannst du dir sparen.

    Und wie kommt das Plugin wieder aus einem DETACH zurück, das z.B. über svdpr mit DETA gesetzt wurde? Muss man erst ein ATTA absetzen, oder reicht es, wenn man eine Taste drückt und z.B. den Kanal wechselt, damit alles wieder anspringt?

    Ich denke, das "Schlaf-Verhalten" kann man bei beiden gleich machen. Ich überlege nur, ob es Sinn macht, das Plugin auf 2 verschiedene Arten wieder aufwecken zu lassen. Einmal quasi automatisch und das andere Mal nur über ein explizites ATTA.

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Aus dem DETA kommt es nur per ATTA wieder zurück. Warum willst du es automatisch aufwachen lassen und wie soll das gehn. Der VDR bekommt ja von dem DETA nichts mit. Ausser das es dann kein Ausgabedevice gibt. Nur wie soll er dich dann aufwecken? Dazu gibt es ja keine Schnittstelle (mal von svdrp abgesehen).

    Da der VDR ja bei Supend und Detach weiterläuft könntest du blind über die commands.conf ein ATTA/ RESU senden lassen wobei man das dann auf eine Taste legen müsste damit es blind bedienbar ist.

    Nur m.E. bringt das wenig weil die Stromsparmöglichkeiten bei einem Suspend doch eher marginal sind.

  • Ich glaube, es geht auch weniger ums Stromsparen, sondern ums "Tuner-Sparen" ;)

    Sprich, der Tuner ist dann für den VDR nicht mehr durch ein Live-Signal belegt und kann für eine Aufnahme oder EPG-Scan verwendet werden.

    Allerdings braucht eine NVIDIA-Karte doch auch weniger Strom, wenn sie nicht gerade ein HD-Signal dekodieren und darstellen muß, das merkt man an der Temperatur oder der Lüfterdrehzahl.

    Und, wenn dynamite läuft, kann auch ein nicht benötigter Tuner inkl. DVB-Stromversorgung "schlafen gehen".

    vdr User #2022 - hdvdr2:

    Lenovo SFF M83, Intel(R) Core(TM) i5-4670S, 32 GB Ram, zram-swap/tmp, ubuntu-focal+ESM, softhdcuvid-placebo, ffmpeg-6.1.4(git)

    ddbridge mit 2xDVB-S2 und (Flex) 2xDVB-C/T Tunern, nvidia-GF1050Ti SFF (nvidia-dkms-580.105.08), system SSD btrfs,

    timeshift-btrfs, Video 8TB HDD XFS/cow, yavdr-ansible-2.7.7-seahawk, tvscraper tvsp, Kernel 6.12.59+dddvb-0.9.41-git

    vdradmin-am-3.6.15, vdr-live-ng, vdrmanager (Smartphones als FB)

  • Aus dem DETA kommt es nur per ATTA wieder zurück. Warum willst du es automatisch aufwachen lassen und wie soll das gehn. Der VDR bekommt ja von dem DETA nichts mit. Ausser das es dann kein Ausgabedevice gibt. Nur wie soll er dich dann aufwecken? Dazu gibt es ja keine Schnittstelle (mal von svdrp abgesehen).

    Da der VDR ja bei Supend und Detach weiterläuft könntest du blind über die commands.conf ein ATTA/ RESU senden lassen wobei man das dann auf eine Taste legen müsste damit es blind bedienbar ist.

    Nur m.E. bringt das wenig weil die Stromsparmöglichkeiten bei einem Suspend doch eher marginal sind.

    Man könnte das aufwachen aus den 2 Zuständen unterschiedlich behandeln. Aus DETA geht nur ein ATTA und wenn man in SUSP ist könnte eine User-Aktivität das plugin wieder wecken. Z.B. ein Kanalwechsel.

    Das Plugin bekommt davon schon mit, da von VDR ein SetPlayMode kommt, auf das man entsprechend reagieren kann. Man muss das natürlich nicht alles haben und ob es Sinn macht ist die andere Frage... Minimalziel wäre, im Plugin alle Resourcen freizugeben, damit VDR weiterlaufen kann und sich währenddessen z.B. Kodi audio und video schnappt.

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Ich glaube, es geht auch weniger ums Stromsparen, sondern ums "Tuner-Sparen" ;)

    Sprich, der Tuner ist dann für den VDR nicht mehr durch ein Live-Signal belegt und kann für eine Aufnahme oder EPG-Scan verwendet werden.

    Um Tuner sparen gehts mir nicht. Und damit hat m.E. das Ausgabeplugin auch nichts zu tun. VDR kann doch selbst alles nach Min.Userinactivity oder so ähnlich schlafen legen. Das passiert bei mir nach einer Stunde wenn ich keine Taste drücke und dann werden die Tuner getrennt und stehen für den EPG Scan zur Verfügung. Mein Ziel ist es, VDR (z.B. für Aufnahmen) laufen zu lassen aber das Ausgabeplugin zu trennen.

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Gerade, wenn nur 1 Tuner vorhanden ist, wäre das wichtig. Ich hatte da ein Script, das regelmäßig den TV pingt und nach dem Abschalten (Standby mittels FB) auch das softhddevice detached sowie nach dem Einschalten wieder attached.

    vdr User #2022 - hdvdr2:

    Lenovo SFF M83, Intel(R) Core(TM) i5-4670S, 32 GB Ram, zram-swap/tmp, ubuntu-focal+ESM, softhdcuvid-placebo, ffmpeg-6.1.4(git)

    ddbridge mit 2xDVB-S2 und (Flex) 2xDVB-C/T Tunern, nvidia-GF1050Ti SFF (nvidia-dkms-580.105.08), system SSD btrfs,

    timeshift-btrfs, Video 8TB HDD XFS/cow, yavdr-ansible-2.7.7-seahawk, tvscraper tvsp, Kernel 6.12.59+dddvb-0.9.41-git

    vdradmin-am-3.6.15, vdr-live-ng, vdrmanager (Smartphones als FB)

  • Ich bin da nur Nutzer dieser Funktionalität und hoffe beim yavdr-frontend Skript darauf, dass ein DETA nur durch ein ATTA zu beenden ist - das yavdr-frontend Skript schickt dem VDR dann zusätzlich noch ein svdrpsend remo off, damit der VDR in dem Zustand nicht mehr auf Eingaben reagiert. Damit ist dann hoffentlich sichergestellt, dass das VDR-Frontend keinem anderen Programm rein grätscht oder der VDR mitgerissen wird, wenn der X-Server gestoppt wird.

    Ich lasse den VDR standardmäßig mit detachtem Frontend starten (Argument -D für softhddevice) und prüfe dann im Frontend-Skript, ob der VDR für eine Aufnahmebzw. ein Plugin, ohne Aufnahme aber durch das vdr-addon-acpiwakeup oder von Hand gestartet wurde (dbus2vdr kann den VDR fragen, ob er einen manuellen Start annimmt, außerdem schaue ich auf den Timestamp, den das vdr-addon-acpiwakup in eine Datei schreibt, wenn es den Aufweckzeitpunkt in der RTC setzt) oder es einen manuellen Start gab - im letzten Fall schiebe ich den ATTA Befehl hinterher.

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich bin da nur Nutzer dieser Funktionalität und hoffe beim yavdr-frontend Skript darauf, dass ein DETA nur durch ein ATTA zu beenden ist - das yavdr-frontend Skript schickt dem VDR dann zusätzlich noch ein svdrpsend remo off, damit der VDR in dem Zustand nicht mehr auf Eingaben reagiert. Damit ist dann hoffentlich sichergestellt, dass das VDR-Frontend keinem anderen Programm rein grätscht oder der VDR mitgerissen wird, wenn der X-Server gestoppt wird.

    Ich lasse den VDR standardmäßig mit detachtem Frontend starten (Argument -D für softhddevice) und prüfe dann im Frontend-Skript, ob der VDR für eine Aufnahmebzw. ein Plugin, ohne Aufnahme aber durch das vdr-addon-acpiwakeup oder von Hand gestartet wurde (dbus2vdr kann den VDR fragen, ob er einen manuellen Start annimmt, außerdem schaue ich auf den Timestamp, den das vdr-addon-acpiwakup in eine Datei schreibt, wenn es den Aufweckzeitpunkt in der RTC setzt) oder es einen manuellen Start gab - im letzten Fall schiebe ich den ATTA Befehl hinterher.

    Klingt logisch und das wäre der Anwendungsfall für DETA/ATTA. Gibt es ausser remo off noch eine Möglichkeit dem VDR die Kontrolle zu entziehen? Was hat es damit https://github.com/jojo61/vdr-plu…cuvid.cpp#L1730 bzw. https://github.com/jojo61/vdr-plu…cuvid.cpp#L3699 auf sich?

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Das sieht für mich aus als wäre das die Bedienung des Frontends über vom X-Server weitergegebene Tastendrücke, während das Fenster von softhddevice den Fokus hat.

    Für Frontends ohne laufenden X-Server kann man den VDR die Tastatureingaben direkt von der Konsole lesen lassen (habe ich z.B. im Zusammenspiel mit rpihddevice gemacht).

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • prüfe dann im Frontend-Skript, ob der VDR

    Wo finde ich dieses Frontend-Skript? Ich möchte daraus lernen, wie man so etwas macht. Ich möchte gern wissen, welches Ereignis meinen yaVDR gestartet hat. Damit könnte ich dann entscheiden, ob ich den TV über HDMI-CEC einschalte.

    mein VDR
    • Software: yaVDR0.7-Ansible Ubuntu 24.04 (noble) mit vdr-2.7.7
    • DVB-T2: Hauppauge WinTV-dualHD
    • Fernseher: LG OLED42C48LA
  • Wo finde ich dieses Frontend-Skript?

    Hier ist die relevante Methode, die das ermittelt: https://github.com/seahawk1986/ya…troller.py#L285 ff. - ich bin noch dabei da einige bekannte Probleme der Version, die aktuell in yavdr-ansible genutzt wird, gerade zu ziehen und ordentliche Type-Annotationen zu nutzen, damit das übersichtlicher als der bisherige Code wird.

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Würds euch was ausmachen, das wo anders weiter zu diskutieren?

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Detach läuft soweit. D.h. ein "svdrpsend .... DETA" bringt das plugin in einen Zustand, der nur! mit einem ATTA wieder geweckt werden. Soweit so gut.

    Jetzt möchte ich noch einen Zustand suspended. Der ist prinzipiell der gleiche wie detached aber mit dem Unterschied, dass auch ein keypress ihn wecken soll. Evtl. auf bestimmte Tasten beschränkt.

    Ob der Zustand Sinn macht sei dahingestellt, aber man könnte den z.B. nach einem timeout oder übers Menü aktivieren.

    Rein komme ich, aber wie gehts mit einem Tastendruck wieder raus? Ich blicke noch nicht, wie ein plugin auf keys reagieren kann, da die allermeisten von VDR nicht weitergegeben werden, wenn ich das richtig sehe. Brauche ich da cControl oder sowas (was ich auch noch nicht genau verstanden habe)? In cStatus finde ich nichts passendes.

    Vielleicht kann mir jemand auf die Sprünge helfen, wie man das am besten macht...

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Eine Möglichkeit wäre über die keymacros.conf des VDR - vgl. http://www.vdr-wiki.de/wiki/index.php…#keymacros.conf - dazu muss das Plugin ein Menü anbieten, in dem die Reihenfolge fest ist, damit man bestimmte Aktionen basierend auf ihrer Position auslösen kann.

    Eine andere Möglichkeit wäre über so etwas wie das yavdr-frontend Skript, das auf einem Lirc-kompatiblen Socket mit liest und das Frontend wieder attached, wenn es im passenden Zustand dafür ist (egal, ob softhddevice gerade detached oder suspended ist) - da das auch eine DBus-API anbietet, kann man das auch von Hotkey-Funktionen eines Window Manager wie Openbox aus ansteuern: https://github.com/yavdr/yavdr-an…/rc.xml.j2#L181 ff.

    Und natürlich kann man diverse Hotkey-Programme bemühen, die dann svdrpsend-Befehle oder ähnliches ausführen - z.B. Triggerhappy auf Systemen ohne X-Server: https://github.com/wertarbyte/triggerhappy

    Edit: und softhddevice probiert immer einen Resume() in der ProcessKey Methode: https://github.com/ua0lnj/vdr-plu…evice.cpp#L1940 ff.

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Edited once, last by seahawk1986 (November 21, 2025 at 8:29 AM).

  • Eine Möglichkeit wäre über die keymacros.conf des VDR - vgl. http://www.vdr-wiki.de/wiki/index.php…#keymacros.conf - dazu muss das Plugin ein Menü anbieten, in dem die Reihenfolge fest ist, damit man bestimmte Aktionen basierend auf ihrer Position auslösen kann.

    Eine andere Möglichkeit wäre über so etwas wie das yavdr-frontend Skript, das auf einem Lirc-kompatiblen Socket mit liest und das Frontend wieder attached, wenn es im passenden Zustand dafür ist (egal, ob softhddevice gerade detached oder suspended ist) - da das auch eine DBus-API anbietet, kann man das auch von Hotkey-Funktionen eines Window Manager wie Openbox aus ansteuern: https://github.com/yavdr/yavdr-an…/rc.xml.j2#L181 ff.

    Und natürlich kann man diverse Hotkey-Programme bemühen, die dann svdrpsend-Befehle oder ähnliches ausführen - z.B. Triggerhappy auf Systemen ohne X-Server: https://github.com/wertarbyte/triggerhappy

    Edit: und softhddevice probiert immer einen Resume() in der ProcessKey Methode: https://github.com/ua0lnj/vdr-plu…evice.cpp#L1940 ff.

    Danke dir. Triggerhappy, dbus etc. würden ja wahrscheinlich über svdrp wieder wecken. Ich denke, das würde klappen und das könnte man sich auch drum herum bauen.

    Die keymacros funktionieren so ja, dass sie über eine Zahlenabfolge das Menü bedienen, richtig? Auf den Menüpunkt müsste man sich dann die Funktion legen. Könnte man das auch verwirklichen, ohne dass das Menu tatsächlich angezeigt wird oder ginge das auch über das Setup Menu? Wobei es tatäschlich ja Sinn macht, das Menü anzuzeigen, damit man überhaupt erst manuell in den Suspend wechseln kann?

    Letzte Möglichkeit mit den ProcessKeys wäre wohl mein Favorit und ich müsste mir das bei lnj anschauen. Kann mir jemand erklären, was es mit dem dummy player und dummy control auf sich hat? Das habe ich noch nicht verstanden. Und Kann man die einfach bei einem suspend "scharf" schalten, oder muss man dafür auch einen Menüpunkt auswählen um den Fokus zu bekommen?

    Als Laie würde ich sagen, es wäre am einfachsten, wenn cStatus von VDR auch eine Methode KeyPressed() anbieten würde ;)

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Plugins, die auf globalen Status reagieren könnten sich ganz schön ins Gehege kommen - in der PLUGINS.html im Source Code des VDR wird die Implementierung einer cControl Klasse beschrieben, mit der ein Plugin die Tastendrücke für einen Player bekommen kann - wenn ich das richtig sehe, ist das der Weg, den softhddevice geht.

    Damit bekommt man allerdings nicht alle Tasten:

    cMyControl will receive the user's key presses through the ProcessKey() function. It will get all button presses, except for the volume control buttons (kVolUp, kVolDn, kMute), the power button (kPower) and the menu button (kMenu). If the user has not pressed a button for a while (which is typically in the area of about one second), ProcessKey() will be called with kNone, so that the cMyControl gets a chance to check whether its player is still active. Once the player has become inactive (because the user has decided to stop it or the DVB device has detached it), ProcessKey() must return osEnd to make the main program loop shut down the player control.

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

Participate now!

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