MakePrimaryDevice() und StopReplay()

  • Hallo kls ,

    softhddevice-drm-gles führt für seine detach/attach-Funktionen cDevice::MakePrimaryDevice() und cDevice::StopReplay() aktiv selbst aus, stoppt also die Wiedergabe von VDR.

    Ist das grundsätzlich ok, sollte das vermieden werden oder wo könnte da ein Problem entstehen?

    Gruß 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 --

  • Ein von cDevice abgeleitetes Device kann MakePrimaryDevice() implementieren, wenn es in dem Fall, dass es das primäre Device wird, etwas spezielles machen will, sollte diese Funktion aber selber nicht aufrufen.

    StopReplay() kann es aufrufen, da diese Funtion nicht virtual ist, ich sehe aber den Sinn darin nicht und rate davon ab.

  • Ok, danke für die Antwort. Dann betrachte ich das mal als hacky...

    Speziell geht es um Detach() und Attach() des Ausgabeplugins. Mit detach wird das Ausgabeplugin "stumm" geschalten und fungiert quasi als dummy-plugin. Aus diesem Zustand kommt man nur wieder mit einem attach, das es wieder zum PrimaryDevice macht, falls es das vorher war.

    Astrein ist das wahrscheinlich nicht, aber ich weiß nicht, wer oder was hier dazwischen funken könnte. StopReplay() und MakePrimaryDevice(false) deshalb, damit auch vdr nicht mehr versucht, auf Kanäle zu schalten etc.

    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 --

    Edited 2 times, last by rell (December 23, 2025 at 11:49 AM).

  • stoppt also die Wiedergabe von VDR.

    Das XineLibOutput-Plugin stoppt die Wiedergabe auch, wenn den Player verbindet/entfernt. Das scheint wohl nötig zu sein, wenn man das primäre Device wechseln will.

    Das Plugin wird beim Verbinden des Players primär und gibt den Status auf, wenn man den Player schließt.
    Gedacht ist das um von zB. der FF-Karte auf XineLibOutput umzuschalten und zurück.

    Wie die das intern gelöst haben, weiß ich aber nicht.

    Gruss
    SHF

    Mein (neuer) VDR:

    Software:
    Debian Wheezy mit Kernel 3.14
    VDR 2.0.7 & div. Plugins aus YaVDR-Paketen
    noad 0.8.6

    Hardware:
    MSI C847MS-E33, onboard 2x1,1GHz Sandybridge Celeron 847, 4GiB RAM
    32GB SSD (System), 4TB 3,5" WD-Red HDD (Video)
    TT FF DVB-S 1.5 FullTS-Mod PWM-Vreg-Mod, DVB-Sky 852 Dual DVB-S2
    Das ganze im alten HP Vectra VLi8-Gehäuse versorgt von:
    PicoPSU-160-XT und Meanwell EPP-150 im ATX-NT-Gehäuse

  • Hängt jetzt zwar nicht direkt zusammen, aber ist es erlaubt, dass ein Plugin cDevice::StillPicture() selbst aufruft und nicht aufpassen muss, wann es das tut?

    Das radio-plugin macht das z.B. um ein Standbild bei audio-only Sendern anzuzeigen.

    Sowei ich das herauslesen kann, könnte es beim radio-plugin zu einem Problem kommen, weil es mit mehreren Threads läuft und während (oder nach) einem Channel-Switch nochmal ein StillPicture nachschiebt, obwohl schon video da sein könnte. Das hat bei mir zu einem Absturz geführt. Jetzt überlege ich, ob ich das besser im radio oder Ausgabeplugin lösen soll.

    Falls alle zu jeder Zeit Stillpictures schicken können, muss ich das im Ausgabeplugin lösen...

    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 --

  • Ok, danke. Das heißt also, wenn dvbplayer einen Radiosender mit audio only abspielt, klappt es zwar, wenn das radio-plugin ein StillPicture einschiebt, aber vorgesehen ist es erstmal nicht.

    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 --

  • Audio und Video gehen ja in verschiedene Devices, also sollte es wohl keine Probleme machen, wenn einer Audio und der andere Video abspielt. Probleme würde ich erwarten, wenn mehrere das gleichzeitig tun, denn dann könnte es z.B. passieren, dass die Daten ineinander verschachtelt werden, was ziemlich sicher Fehler ergäbe.

  • Das meinte ich ja. Angenommen der dvbplayer vom VDR schaltet von einem Radiokanal auf einen "normalen" Sender und schickt mit PlayVideo Daten an das Ausgabedevice, dann darf das radio-plugin nicht auch noch Videodaten mit Stillpicture schicken. Das kann nämlich momentan der Fall sein, wenn die Threads des radio-plugins ein ungünstigs Timing haben.

    Edit: Das Ausgabeplugin nimmt beides entgegen. Audio und Video gehen also ins gleiche Device. Nur kann es halt sein, dass nicht beides gleichzeitig vorhanden ist.

    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 --

  • Audio und Video gehen also ins gleiche Device

    Stimmt, da hatte ich wohl was falsch in Erinnerung.

    Ich kenne die Interna des Radio-Plugins nicht, aber deiner Frage entnehme ich, dass es wohl asynchron zum eigentlichen Player Video-Daten schickt. Vielleicht könnte es ein cStatus-Objekt implementieren und auf ChannelSwitch() bzw. Replaying() reagieren und das Senden der Video-Daten beenden?

  • Das macht es bereits. Ich habe es umgebaut und es sollte jetzt richtig sein. Aber danke, meine Frage hat sich damit geklärt :)

    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 --

Participate now!

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