ivtv + Flackern (PVR250/350)

  • zu videodev2.h:


    Das Makefile im Plugin-Verzeichnis liest die Make.config aus dem VDR-Verzeichnis. Wenn man da also DVBDIR auf den richtigen Wert setzt, wird die richtige Datei eingebunden. Also kann es (meiner Meinung nach) problemlos aus dem Plugin-Verzeichnis wegfallen.


    mini
    Nachtrag:
    In der Make.config sollte man absolute Pfade angeben, sonst taugt das nicht... Das Beispiel "../DVB" leitet da einen in die Irre. Denn vom Plugin-Verzeichnis aus sieht die Welt ja anders aus.

  • Moin!


    Wenn in SetChannelDevice ein Fehler passiert, z.B. bei SetVideoNorm usw., bleibt der Lesethread im Pause-Modus. Ist das Absicht oder sollte der Thread wieder das Signal zum Weiterlaufen bekommen?
    Vermutlich ist es aber besser, wenn er nicht weiter versucht, Daten zu dekodieren, dass könnte ja sonst was für Müll sein, wenn der Kanal nur halb umgeschaltet wird. Er holt ja trotzdem weiter Daten vom Treiber, so dass es dem ja egal ist, was damit passiert.


    Ich versuch mal, meinen VDR mit einem neuen Kernel zu versorgen, damit ich das Plugin auch mal testen kann.


    mini.

  • Zitat

    Original von mini73
    Ich versuch mal, meinen VDR mit einem neuen Kernel zu versorgen, damit ich das Plugin auch mal testen kann.


    hast Du denn inzwischen eine PVR ?

    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

  • Die Idee war es, dann so lange zu warten, bis erneut auf nen andren Kanal geschaltet wird. Sollte aber eigentlich nicht vorkommen solange der Treiber noch reagiert.

  • Dr. Seltsam
    Nur die PVR150 in meinem VDR. Vielleicht finde ich heute Zeit, da einen neuen Kernel einzuspielen. Momentan muss ich nicht so viele Sachen aufnehmen, da kann er mal einen Tag ausfallen.
    Sollte ich eine bestimmte gcc-Version benutzen und muss ich sonst noch was beachten (glibc o.ä.)?


    wirbel
    So hab ich deinen Code auch interpretiert. Ich kenn mich mit den Innereien von Transport- und Programm-Stream nicht so richtig aus, aber wäre es vielleicht ein Idee, ein korrektes TS-Paket mit schwarzem Bild und ohne Ton an den VDR weiterzureichen, solange der Lesethread im Pause-Modus ist? ivtv kriegt ja von der Pause nichts mit, weil die Daten einfach weiter ausgelesen werden, und der VDR würde dann auch nichts merken. Oder stört es den VDR nicht, wenn er keine Daten mehr kriegt?

  • Zitat

    Original von mini73
    Dr. Seltsam
    Nur die PVR150 in meinem VDR. Vielleicht finde ich heute Zeit, da einen neuen Kernel einzuspielen. Momentan muss ich nicht so viele Sachen aufnehmen, da kann er mal einen Tag ausfallen.
    Sollte ich eine bestimmte gcc-Version benutzen und muss ich sonst noch was beachten (glibc o.ä.)?


    ist die Signatur (LinVDR mit vdr-1.3.24 noch aktuell? dann kann ich Dir sogar einen Kernel sowie ein neu kompiliertes Plugin bereitstellen. Für die 1.3.24 habe ich noch die Sourcen auf meinem woody

    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

  • Jo, momentan benutze ich noch den vdr 1.3.24. Ich hoffe, dass ich demnächst mal Zeit finde, eine 1.4er Version einzuspielen, vielleicht ja im Zuge unserer Aktion hier mit dem Plugin. Was wäre denn dabei zu beachten? Momentan benutze ich nur die Plugins dxr3, mp3 und pvrinput.


    Ein Kernel von dir wäre prima, da sind dann bestimmt auch die dxr3-Module vernünftig drin, die brauch ich ja auch...

  • vdr für LinVDR muss auf einem binärkompatiblen System kompiliert werden, d.h. Debian Woody oder LinVDR mit nachgerüsteten Entwicklungswerkzeugen (u.a. gcc 2.95!)


    Einen Kernel kannst du auf jedem Linux erstellen, mein neuer 2.6.18 ist z.B. auf Xubuntu mit gcc 4.0 gemacht.


    Ich schicke Dir nachhher mal Links zum runterladen des Kernels sowie eines kleinen vdr-1.4.3-Paketes. Ich habe mir vdr immer selbst kompiliert (mit wenigen Plugins), da ich von den hier im Forum angebotenen Paketen wegen des darin enthaltenen bigpatches nicht richtig überzeugt bin. Manchmal ist weniger mehr.


    Ja, dxr3 ist in beiden Paketen drin (Module + Plugin)

    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

  • Prima!


    Ich versuche in der Zwischenzeit mal, mir mittels debootstrap eine Woody-Umgebung unter meinem kubuntu 6.06.1 zu erstellen. Auf linvdr.org gibt's ja eine kleine Anleitung, ich denke, damit komme ich zurecht.

  • Zitat

    Original von mini73
    Oder stört es den VDR nicht, wenn er keine Daten mehr kriegt?


    Ich denke es stört nicht. Wenn du aber in der Lage bist, den Datenstrom passend zu manipulieren - gerne. Ich kenn mich nur z.Z. damit zu wenig aus um das zu tun.

  • Hallo
    Das ist mei erstes Posting und schon ein Problem. Ich benutze eine Technotrend DVB-C rev2.1 als Ausgabedevis
    und für analoge Kanäle eine Hauppauge WinTV PVR-350 als Eingabedevis. Als Distri habe ich CTVDR5 wobei der VDR die Version 1.4.2 hat
    und pvrinput 0.1.1-3. So nun zum Problem, wenn ich auf ein Analogen Kanal stelle bleibs Dunkel erst wenn ich eine Aufnahme starte kann
    ich erst analoge Kanäle sehen.


    dmesg
    ivtv: ==================== START INIT IVTV ====================
    ivtv: version 0.7.1 (tagged release) loading
    ivtv: Linux version: 2.6.17.13 mod_unload 586 gcc-3.3
    ivtv: In case of problems please include the debug info between
    ivtv: the START INIT IVTV and END INIT IVTV lines, along with
    ivtv: any module options, when mailing the ivtv-users mailinglist.
    DVB: registering new adapter (Technotrend/Hauppauge WinTV DVB-C rev2.X).
    adapter has MAC addr = 00:d0:5c:21:86:2b
    dvb-ttpci: info @ card 0: firm f0240009, rtsl b0250018, vid 71010068, app 80f22623
    dvb-ttpci: firmware @ card 0 supports CI link layer interface
    dvb-ttpci: Crystal audio DAC @ card 0 detected
    saa7146_vv: saa7146 (0): registered device video0 [v4l2]
    saa7146_vv: saa7146 (0): registered device vbi0 [v4l2]
    DVB: registering frontend 0 (VLSI VES1820 DVB-C)...
    input: DVB on-card IR receiver as /class/input/input2
    dvb-ttpci: found av7110-0.
    ivtv0: Autodetected Hauppauge WinTV PVR-350 card (cx23415 based)
    ACPI: PCI Interrupt 0000:02:01.0[A] -> GSI 17 (level, low) -> IRQ 201
    ivtv0: Unreasonably low latency timer, setting to 64 (was 32)
    tveeprom 2-0050: Hauppauge model 48139, rev K257, serial# 7880812
    tveeprom 2-0050: tuner model is Philips FM1216 ME MK3 (idx 57, type 38)
    tveeprom 2-0050: TV standards PAL(B/G) PAL(I) SECAM(L/L') PAL(D/D1/K) (eeprom 0x74)
    tveeprom 2-0050: audio processor is MSP4418 (idx 25)
    tveeprom 2-0050: decoder processor is SAA7115 (idx 19)
    tveeprom 2-0050: has radio, has IR remote
    tuner 2-0061: chip found @ 0xc2 (ivtv i2c driver #0)
    tda9887 2-0043: chip found @ 0x86 (ivtv i2c driver #0)
    saa7115 2-0021: saa7115 found @ 0x42 (ivtv i2c driver #0)
    saa7127 2-0044: saa7129 found @ 0x88 (ivtv i2c driver #0)
    msp3400 2-0040: MSP4418G-B3 found @ 0x80 (ivtv i2c driver #0)
    msp3400 2-0040: MSP4418G-B3 supports nicam and radio, mode is autodetect and autoselect
    ieee1394: Host added: ID:BUS[0-00:1023] GUID[000010dc003abfe4]
    eth1394: eth1: IEEE-1394 IPv4 over 1394 Ethernet (fw-host0)
    ivtv0: loaded v4l-cx2341x-enc.fw firmware (262144 bytes)
    ivtv0: loaded v4l-cx2341x-dec.fw firmware (262144 bytes)
    ivtv0: Encoder revision: 0x02050032
    ivtv0: Decoder revision: 0x02020023
    ivtv0: Allocate DMA encoder MPEG stream: 128 x 32768 buffers (4096KB total)
    ivtv0: Allocate DMA encoder YUV stream: 161 x 12960 buffers (2048KB total)
    ivtv0: Allocate DMA encoder VBI stream: 80 x 26208 buffers (2048KB total)
    ivtv0: Allocate DMA encoder PCM audio stream: 455 x 4608 buffers (2048KB total)
    ivtv0: Create encoder radio stream
    ivtv0: Allocate DMA decoder MPEG stream: 16 x 65536 buffers (1024KB total)
    ivtv0: Allocate DMA decoder VBI stream: 512 x 2048 buffers (1024KB total)
    ivtv0: Create decoder VOUT stream
    ivtv0: Allocate DMA decoder YUV stream: 20 x 51840 buffers (1024KB total)
    ivtv0: loaded v4l-cx2341x-init.mpg firmware (155648 bytes)
    tuner 2-0061: type set to 38 (Philips PAL/SECAM multi (FM1216ME MK3))
    ivtv0: Initialized Hauppauge WinTV PVR-350, card #0
    ivtv: ==================== END INIT IVTV ====================


    channels.conf
    SE4;w_pvrscan:126250:C0:C:0:301:300:305:A1:2020:0:0:0
    SE5;w_pvrscan:133250:C0:C:0:301:300:305:A1:2132:0:0:0
    SE6;w_pvrscan:140250:C0:C:0:301:300:305:A1:2244:0:0:0
    k11;w_pvrscan:217250:C0:C:0:301:300:305:A1:3476:0:0:0


    vdr -Ppvrinput
    pvrinput: 00:12:17 Detected input 0: Tuner 1
    pvrinput: 00:12:17 found 1 PVR device
    pvrinput: 00:12:47 cPvrDevice::ProvidesChannel 365 SE4 126250 50 AFE3C0AB
    pvrinput: 00:12:47 cPvrDevice::ProvidesSource C
    pvrinput: 00:12:47 cPvrDevice::ProvidesCa 365 SE4 161
    pvrinput: 00:12:47 cPvrDevice::ProvidesCa 365 SE4 161
    pvrinput: 00:13:10 cPvrDevice::ProvidesChannel 366 SE5 133250 0 AFE3C08B
    pvrinput: 00:13:10 cPvrDevice::ProvidesSource C
    pvrinput: 00:13:10 cPvrDevice::ProvidesCa 366 SE5 161
    pvrinput: 00:13:10 cPvrDevice::ProvidesCa 366 SE5 161
    pvrinput: 00:13:10 cPvrDevice::ProvidesChannel 366 SE5 133250 0 AFE3C01B
    pvrinput: 00:13:10 cPvrDevice::ProvidesSource C
    pvrinput: 00:13:10 cPvrDevice::ProvidesCa 366 SE5 161
    pvrinput: 00:13:10 cPvrDevice::ProvidesCa 366 SE5 161
    pvrinput: 00:13:10 cPvrDevice::SetChannelDevice 366 SE5 133250 0
    pvrinput: 00:13:10 cPvrDevice::SetPid 301 5 1
    pvrinput: 00:13:10 cPvrDevice::SetPid 300 6 1
    pvrinput: 00:13:10 cPvrDevice::OpenDvr
    pvrinput: 00:13:22 cPvrDevice::SetPid 301 5 0
    pvrinput: 00:13:22 cPvrDevice::SetPid 300 6 0


    Auf Kanal SE4 wurde die Aufnahme gestartet und Kanal SE5 kann erst gesehen werden,
    wobei bei allen anologen Aufnahmen kein Ton vorhanden ist. Mit Einstellungen
    DVB Primäres DVB-Interface auf 2 stellen bringt auch keine Abhilfe.

  • möchte das Thema "Flackern" nochmal aufwärmen.


    Letzter Erkenntnisstand war ja, dass ein gepatchtes pvrinput-Plugin, bei dem das device bei jedem Kanalwechsel geschlossen und wieder geöffnet wird, das Auftreten des Flackern wirksam verhindert. Es macht das Umschalten aber etwas langsamer.


    Ich habe jetzt herausgefunden, dass zur Vermeidung des Flackerns im Treiber folgendes enthalten ist (ivtv-streams.c):


    Code
    /* Setup API for Stream */
    		cx2341x_update(itv, ivtv_api_func, NULL, &itv->params);
    
    
    		ivtv_vapi(itv, CX2341X_ENC_MISC, 2, 3, (itv->hw_flags & IVTV_HW_CX25840) ? 1 : 0);


    Hierzu der Auszug aus der Dokumentation:



    Was der Treiber nun macht ist, dass bei allen Karten mit saa7115-Chip zum Parameter 3 der Wert 0 übergeben wird, während bei Karten mit cx25840 der Wert 1 zur Anwendung kommt.


    Ich habe nun festgestellt, dass meine PVR250-Karten (cx23416 mit saa7115) völlig flackerfrei laufen, wenn sie statt des Wertes 0 eine 1 bekommen. Dazu muss die Zeile in ivtv-streams.c wie folgt geändert werden:


    Code
    ivtv_vapi(itv, CX2341X_ENC_MISC, 2, 3, 1);


    Allerdings laufen cx23415-basierte Karten (PVR350, ältere PVR250) mit dieser Initialisierung nicht mehr!


    Bei wem es noch flackert, der kann das ja mal testen.


    PVR150 und PVR500-Karten (haben beide cx23416) sollten aufgrund des CX2584x (statt saa7115) vom Treiber bereits per default den Wert 1 bekommen, aber ein Test kann ja nicht schaden. Wer weiss, ob die Karte richtig erkannt wird ...

    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!