Anpassung des pvr350-Plugins an neue ivtv-Treiber wie im 2.6.18

  • Von dem Plugin geistern verschiedene Versionen rum:


    - letzte offizielle Version ist die 0.0.4pre1.


    - diese Version hatte ich mit aktualisierten ivtv-Headern mal etwas aufgefrischt, wodurch das Bild beim Umschalten nicht mehr auf dem letzten Frame einfror, sondern schwarz wurde. Zudem hatte ich die Größe des internen Ringbuffers reduziert, so dass das Umschalten auch etwas schneller ging. Es blieb das Problem, dass das Spulen nur zeitverzögert funktionierte. Diese Version ist als 0.0.4pre1-Dr.Seltsam nach meinem Kenntnisstand inzwischen recht weit verbreitet.


    -der Author hatte dann einigen Leuten eine Vorabversion der 0.0.5 zur Verfügung gestellt, mit dem das Spulen einwandfrei klappte, aber das Umschalten nun 4-5 Sek. dauerte. Leider ist der Kontakt inzwischen abgebrochen, ich habe zuletzt keine Antworten mehr erhalten.


    Alle drei Versionen sind mit Kernel 2.6.18 bzw. aktuellen ivtv-Treibern nicht mehr lauffähig, da sie direkte Firmware-API-calls verwenden. Das entsprechende IOCTL ist im Treiber inzwischen aber nicht mehr enthalten. Ich habe die Sourcen auf die derzeit (noch) gültigen ivtv-IOCTLs angepasst - wobei auch das nicht von Dauer sein wird, denn die Decoderseite des Treibers wird für die Integration in kernel 2.6.19 oder 2.6.20 demnächst nochmal eine Großbaustelle ...


    Nach wie vor nicht vollständig geklärt ist, warum das Umschalten mit den fwapi-calls so schnell geht, mit dem offiziellen IOCTL jedoch so langsam. Es ist definitiv ein Problem des großen ivtv-Buffers, der erstmal gefüllt werden muss. Reduziert man die Buffergröße, so geht das Umschalten schnell, aber es kommt zu Rucklern. Ich habe nun eine Lösung gefunden, mit der sich die Umschaltdauer auf akzeptable 2-3 s reduziert: im ivtv-Treiber habe ich das Clearen des Decoders beim Decoderstop abgeschaltet. Diese Funktion kam erst im 0.3-Entwicklungszweig irgendwann dazu, und ich kann keinerlei Nachteile feststellen, wenn man das wieder entfernt.


    Anbei also die Plugin-Sourcen inklusive ivtv-Patch.


    Ich möchte bei dieser Gelegenheit auch nochmal auf Konsolen vor der Übernahme durch ivtv-fb schützen - so funktioniert es wirklich! verweisen, falls das untergegangen sein sollte ....

    Dateien

    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

    Einmal editiert, zuletzt von Dr. Seltsam ()

  • OK, ich baue das mal ein! Was passiert denn wenn man noch den alten Kernel hat! Sollte man vielleicht den Plugin-Namen ändern?


    Gruß


    Toxic

    Registrierter VDR-User #1275


    VDR-Server: Proxmox 7.1 - LXC Container - Debian 11.5 - eTobi-VDR 2.6.0

    DVB-Hardware: Digital Devices - Cine S2 V5.5 und V6

    VDR-Clients: FireTV Sticks 2 bis 4K Max und Kodi 19.4

  • der name ist ja erstmal zweitrangig. Wäre toll wenn sich ein richtiger coder das mal genauer anschauen würde.
    Ich benutze bisher noch pvr350 4pre1 version mit patch damit vdr > 1.3.38 läuft. Damit habe gibts keine Verzögerung beim umschalten aber ansonsten 1-2 problemchen (spulen verzögert, sporadische 2sek skips bei wiedergabe von aufnahmen).
    Deine Version scheint diese probleme nicht zu haben (muß aber auf das zweite problem bei mir nochmal testen), aber dafür halt die grausame umschaltdauer, fürs zappen nicht wirklich geeignet.


    mfg

    Server: Seagate Dockstar - Debian Squeeze

    Client: Apple TV 2 / Samsung LExxC650

    OldOne: Debian Etch - Matrox G450 & SkyStar2

  • Zitat

    Original von uzer
    aber dafür halt die grausame umschaltdauer, fürs zappen nicht wirklich geeignet.


    hast Du ivtv wie vorgeschlagen gepatcht ?

    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

  • Zitat

    Original von Toxic-Tonic
    OK, ich baue das mal ein! Was passiert denn wenn man noch den alten Kernel hat! Sollte man vielleicht den Plugin-Namen ändern?


    das Plugin ist abwärtskompatibel zu alten ivtv-Treibern. Wer keine gepatchten ivtv-Treiber hat, wird aber wegen der 4-5s Umschaltzeit enttäuscht sein.


    Den Plugin-namen zu ändern möchte ich mir nicht anmaßen. Du kannst ja beide Versionen Kompilieren, entsprechnend umbenennen und einen Softlink per default auf eine der beiden Versionen setzen. Das kann dann jeder leicht entsprechend seines Kernels ändern.

    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

  • ich hab nichts gepatched und ungefähr gute 3sek umschaltdauer mit ivtv 0.4.7 - Ist da noch ein Hinweis für einen ivtv patch in den sourcen?


    Beim orig pvr plugin hab ich ca ne halbe sek.

    Server: Seagate Dockstar - Debian Squeeze

    Client: Apple TV 2 / Samsung LExxC650

    OldOne: Debian Etch - Matrox G450 & SkyStar2

  • schau mal in den Unterordner patches



    man braucht nur den Abschnitt "Clear all Buffers" durch eine "if 0-Bedingung" unwirksam machen.

    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

  • Zitat

    Original von uzer
    Beim orig pvr plugin hab ich ca ne halbe sek.


    wobei das nicht 100% sauber funktioniert, da z.T. Pixel beim Umschalten kommen. Da verbleiben Reste im buffer, die noch mit wiedergegeben werden.


    Mit Patch ist eine akzeptable Umschaltzeit (ca. 2-3 sek. von DVB-T und noch etwas schneller von analog) bei sauberem Umschalten gegeben

    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

  • und wenn wir schon am Patchen sind:


    Das Plugin hatte bisher noch diesen Abschnitt in device.c



    Leider sind diese Funktion im ivtv-Treiber auch nicht mehr enthalten, da Hans Verkuil keine Notwendigkeit sieht, an diesen Buffern etwas zu ändern. Ich hab`s daher entfernt. Ich bin mir auch nicht sicher, ob der obenstehende Code überhaupt je etwas bewirkt hat. Erklärt sind diese Decoder-Optionen in ivtv-driver.h nur dürftig:

    Code
    int decbuffers;		/* 0 = 6 buffers, 1 = 9 buffers */
    	int prebuffer;		/* 0 = no prebuffer, 1 = enabled, see docs */


    Will man das gleiche Verhalten weiterhin haben, muss man in ivtv-drivers.c die Werte auf Null setzen:

    Code
    itv->dec_options.decbuffers = 0;
    	itv->dec_options.prebuffer = 0;


    Ich habe den Eindruck, als wenn es dann noch einen Tick schneller mit dem Umschalten geht.

    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

  • ich hab jetzt mal die Patches eingespielt und es geht wirklich was besser.


    Allerdings habe ich immer noch diese kurzen Sprünge bei der Wiedergabe von Aufnahmen.

    Code
    ERROR: invalid Count in cRingBuffLinear::Del: 1000


    diese Meldung wird dabei im user.log erzeugt.


    Kennt die einer?


    mfg

    Server: Seagate Dockstar - Debian Squeeze

    Client: Apple TV 2 / Samsung LExxC650

    OldOne: Debian Etch - Matrox G450 & SkyStar2

  • nee, sowas habe ich noch nie gehabt.
    Ist vdr gepatcht (eventuell mit Bigpatch /Livebuffer) ? bei mir läuft vdr nur mit dem liemikuutio-Patch.

    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

  • jaja, ist gepatched. Und das Problem gibts auch erst seid vdr 1.3.36 oder so - davor hatte ich das auch noch nie gesehn.


    Ich probier mal ohne BigPatch.


    PS. Welche Bitrate hast du bei pvrinput eingestellt? Ich habe beobachtet das das Problem schlimmer wird, desto niedriger die Bitrate. Bei 8000 tritt es glaube ich gar nicht auf, aber jetzt bei 6000 oder 4500 entsprechend stärker.

    Server: Seagate Dockstar - Debian Squeeze

    Client: Apple TV 2 / Samsung LExxC650

    OldOne: Debian Etch - Matrox G450 & SkyStar2

    Einmal editiert, zuletzt von uzer ()

  • ich habe meist 6000 genommen.

    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

Jetzt mitmachen!

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