Brauch mal Hilfe für pvrinput in kombi mit Kanalsuche

  • Hallo Leute,


    bin gerade an meinem gepanschten Reelchannelscan-Plugin am basteln und komm irgendwie nicht weiter.


    Hatte ja vor einiger Zeit die Analoge Kanalsuche für das pvrinput Plugin aus dem Wirbelscan mit ins Reelchannelscan-Plugin gepackt. Jetzt wollte ich das pvrinput soweit erweitern daß es das EPG über nexTView beschafft, aber soweit bin ich noch nicht. Wollte jetzt erstmal den Channelscan soweit erweitern das er mittels VBI den Sendernamen und das CNI für nexTView ermittelt um sich ein manuelles erstellen einer configdatei zu ersparen.


    Jetzt zu meinem eigentlichen Problem, blöderweise beschlagnahmt das pvrinput "/dev/vbi" für sich, was in einem Input/output error endet. Also habt ihr eine Idee wie ich am einfachsten pvrinput dazu bewegt bekomme kurzzeitig alle seine genutzten devices freizugeben.


    Hab mal den aktuellen Pluginstand angehängt, zuzüglich pvrinput "VERSION 0.0.9" (funktioniert mit den aktuellen IVTV Treibern zwar nicht, aber der channelscan überprüft beim start ob das plugin geladen ist um die analoge suche aktivieren zu können, aber damit geht die Kanalsuche :rolleyes: )


    Des Weiteren wird das library "zvbi" von http://sourceforge.net/projects/zapping benötigt.


    Das benennen der Sendernamen geht auf jedenfalls mit dieser Kombination.


    Hoffe ihr habt eine Idee und könnt mir helfen.


    Will auf jedenfall noch Wirbel danken, hab eine Menge Respekt vor seinem können und hoffe er ist nicht zu böse das ich einige Dateien aus seinem Wirbelscan Plugin geklaut hab. Die Kanalsuche hätte ich nie selbst zustande bekommen (dafür fehlen mir einfach die Kenntnisse).


    Grüße,


    Alwin


    WARNUNG: Nur für mutige, extrem experimentell


    EDIT: Dateiangänge entfernt, nicht mehr aktuel, siehe weiter untenl!!!

  • die Idee finde ich Klasse, aber warum bastelst Du mit einer so alten Version? Die aktuellen Sourcen des pvrinput-Plugins
    http://drseltsam.device.name/vdr/pvr/src/pvrinput/ (Mirror von Wirbels Seite)
    haben die 0.1.1 schon weit hinter sich gelassen, da ist erheblich mehr verbessert worden als nur die Anpassung an neue ivtv-Treiberversionen.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Hallo Dr. Seltsam,


    mach ich ja gar nicht, nur mit der aktuellen Version, hab ich ja das beschriebene Problem, die alte Version nutze ich nur damit ein pvrinput Plugin erkannt wird, so das ich überhaupt die Kanalsuche starten kann (bin zu faul alle "cPlugin *p = cPluginManager::GetPlugin("pvrinput");" im code auszukommentieren) um zumindest die Funktion testen zu können welche auch funktioniert.


    Das Problem ist, daß ich noch nicht ganz so fit in sachen Programmierung bin und in Bezug auf Threads wie es in der aktuellen Version des pvrinput abgehandelt wird fehlen mir noch die Ideen.


    Denke die Vorgehensweise müßte etwa so sein:
    1. pvr thread stoppen
    2. devices freigeben
    3. Kanalsuche starten
    4. devices wieder durch pvrinput belegen
    5. Thread wieder starten


    und da hänge ich derzeit.

  • wenn ich es richtig verstehe, funktioniert Deine Lösung mit der 0.0.9-Version des pvrinputs, auch ohne dass Du dazu die von pvrinput geöffneten devices schließen musst?


    Aber wird denn nicht das pvrinput-Plugin durch ScanAnalogTV() sowieso gestoppt? Dann müssen ja auch die devices (und auch /dev/vbi...) freigegeben werden.


    Wenn es nur mit vbi probleme gibt, kannst Du in der aktuellen pvrinput-Version ja mal testweise

    Code
    sprintf(devName, "/dev/vbi%d", DeviceNumber); 
    vbi_fd = open(devName, O_RDONLY);
      if (vbi_fd < 0) {
        log(0, "error opening vbi device %s: %s",
          devName, strerror(errno));
        }


    in device.c deaktivieren.


    Ansonsten schau Dir mal an, was bei AntiFlickering passiert: beim Kanalwechsel wird das video-device geschlossen und gleich wieder geöffnet, wobei der read-thread wieder neu gestartet werden muss:



    Ob das vbi-device durch das Schließen des video-devices nun auch geschlossen wird, kann ich nicht sagen. Aber vielleicht reicht es ja schon, den readThread zu stoppen.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    Edited once, last by Dr. Seltsam ().

  • Wenn du schon ganze Dateien aus wirbelscan-0.0.2 (Teile von common.c, common.h, komplett frequencies.c und frequencies.h, ..) dafür nimmst, dann schreib bitte auch wo du diese Dateien her hast.


    Und nicht einfach im Header 'wirbelscan' durch 'channelscan' ersetzen. Find ich unfein. :tdw

  • Quote

    Original von wirbel
    Wenn du schon ganze Dateien aus wirbelscan-0.0.2 (Teile von common.c, common.h, komplett frequencies.c und frequencies.h, ..) dafür nimmst, dann schreib bitte auch wo du diese Dateien her hast.


    Und nicht einfach im Header 'wirbelscan' durch 'channelscan' ersetzen. Find ich unfein. :tdw


    Sorry Wirbel,


    dich nicht zu erwähnen das ist will ich ja gar nicht, hatte das in die README geschrieben. Leider hab ich die beim rumexperimentieren gelöscht, damit ichs hochladen konnte und als ich es in zwei Parts gesplittet hab, hatte ich nicht mehr dran gedacht die README reinzukopieren.


    Du hast beim wirbelscan eine Super Arbeit gemacht, und ich werd mich hütten was anderes zu behaupten.


    Und hatte bei meinem überschwenglichen treiben gestern, nicht dran gedacht es zumindest im Post zu erwähnen.


    Hallo Dr. Seltsam,


    habs mittlerweile hinbekommen. Stellte fest das /dev/video ebenfalls freigegeben sein muß. Beende jetzt alle Threads und gebe die devices frei. Hab mal die Änderungen als patch angehängt (Fügt ein Service Interface hinzu um pvrinput zu stoppen), ist aber ein ziemlicher Hack und geht bestimmt auch einfacher.


    Grüße,


    Alwin

  • Quote

    Original von pingpong ist aber ein ziemlicher Hack und geht bestimmt auch einfacher.


    ich hoffe, Wirbel schaut es sich mal an, denn der Ansatz ist interessant. (meine Programmierkünste sind leider sehr bescheiden).


    Was ist jetzt am Reelchannelscan-Plugin anders oder besser als bei Wirbelscan? Bzw. warum hast Du für Dein Experiment nicht das Wirbelscan-Plugin genommen? Da ist die PVR-Unterstützung ja von Haus aus besser.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Quote

    Original von Dr. Seltsam
    Was ist jetzt am Reelchannelscan-Plugin anders oder besser als bei Wirbelscan? Bzw. warum hast Du für Dein Experiment nicht das Wirbelscan-Plugin genommen? Da ist die PVR-Unterstützung ja von Haus aus besser.


    Mir gefiel die Ausgabe des Reelchannelscan-Plugin auf dem OSD über die gefundenen Sender besser, es listet alle Sender direkt mit ihrem Namen bei der Suche auf (bei DVB Sendern). Es wertet bei der suche alle gefundenen Transponder direkt aus.


    Anbei eine eine halbwegs funktionierende Version.

Participate now!

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