QAM256 auf erster Karte unterdrücken

  • Hi


    ich habe folgendes vor:
    Ich möchte mir einen Patch basteln, der dafür sorgt, dass auf der ersten Karte keine QAM256 angeboten wird. Ich gebe ehrlich zu, dass ich nicht gerade der Guru in C/C++ bin (erst rech nicht in den VDR-Sourcen), aber ich denke ich habe eine passende Stelle gefunden.


    In der dvbdevice.c die Funktion cDvbDevice::ProvidesChannel.
    Wenn ich es richtige verstehe, geht der VDR hin und fragt die einzelnen DVB Karte ab, ob diese diesen Channel unterstüzt. Also habe ich erstmal testweise folgende Codezeile am Anfang eingebaut:


    if( Channel->Modulation() == QAM_256 )
    return false;


    Diese Zeile(n) soll erstmal QAM256 auf allen Karte abschalten. Das funktioniert auch schon super. Nun wollte ich die if-Abfrage erweitern, so das die Abfrage nur beim ersten DVB-Device packt. Leider komme ich aber nicht an cardIndex o.ä. Den Weg über dvbTuner habe ich auch schon versucht.


    Hat jemand eine Idee. Klappt mein Vorhaben so überhaupt?

    mfg traxanos
    ____________________
    Ist das neu?, Nein Linux!


    VDR1: Zotac NM10-ITX Wifi - 2GB Ram - S2-6400 HD mit IR - yavdr 0.4 (development) - LianLi PC-Q11


    Tags: VDR-HD - AT5IONT-I - 4GB Ram - 512MB ION - TT 3600 DVB-S2 - TT6400-FF - Sundtek DVB-S2 Sundtek DVB-C - Tevii S480 (dank an L4M für kostenlose Bereitstellung) - yaVDR 0.5 (development) - SKY - HD+ - Atric - X10 FB - Zotac ID41 PLUS - SilverStone LC19B-R - Yamaha RX-V671 - Samsung 8Series 55"


  • Man kann über CardIndex() auf den Kartenindex zugreifen.


    Folglich sollte es

    Code
    if (CardIndex() == 0 && Channel->Modulation() == QAM_256)
         return false;


    tun.


    CU
    Oliver

  • Ich habe als Primary eine Technotrend-FF und dazu zwei Terratec Cinergy-Budgets.
    Mit QAM256 und FF streiken bei mir alle Kanäle auf niedrigen Frequenzen.


    Das schafft Abhilfe:


    --- dvbdevice.c 2006-05-03 00:42:46.000000000 +0200
    +++ dvbdevice_neu.c 2006-05-03 00:45:27.000000000 +0200
    @@ -806,6 +806,17 @@
    bool hasPriority = Priority < 0 || Priority > this->Priority();
    bool needsDetachReceivers = false;


    + // Problem QAM_256
    + if (Channel->Modulation() == QAM_256 && Channel->Frequency() < 121000)
    + {
    + if (IsPrimaryDevice()==true)
    + {
    + esyslog("ISH: %s Modulation: %0x on Device: %d (Primary) isn't available",Channel->Name(),Channel->Modulation(),DeviceNumber());
    + return false;
    + }
    + }
    +
    +
    if (ProvidesSource(Channel->Source()) && ProvidesCa(Channel)) {
    result = hasPriority;
    if (Priority >= 0 && Receiving(true)) {


    Falls Du generell alle QAM256 von der Primary aussperren willst, nimm
    einfach die Bedingung für die Frequenz raus.


    Nachteil: Für alle auf der Primary gesperrten Kanäle wird ein Receiver
    auf einer Budget gestartet. Um trotzdem komfortabel gucken und gleichzeitig
    aufnehmen zu können, sollten neben der Primary schon zwei weitere
    Karten vorhanden sein.


    Hoffe das hilft.


    Grüsse.

    Gentoo seit 0.26 :thumbup: - http://www.brakemeier.de

    :prost2

  • Ahhh CardIndex habe ich auch versucht... aber ohne (). Das ist schon fast ein DAU Flag wert für mich :D. Ich freu mich aber schon das die Idee/Ansatz schonmal richtig war, dafür das es meine ersten C++ erfahrungen am VDR sind. Das mit PrimaryDevice hatte ich mir auch schon überlegt. Das werde ich unteranderem auch nutzen.


    Meine Codezeile sieht nun wie folgt aus.


    Code
    if ( IsPrimaryDevice()==true && Channel->Modulation() == QAM_256 )
         return false;


    Als nächstes werden ich ein Flag zum an & ausschalten bauen.
    Ich denke das einige dieses Problem haben und eine Integration
    ins BP wäre hier nicht schlecht. (Sobald er ak-/deak-tivierbar ist)

    mfg traxanos
    ____________________
    Ist das neu?, Nein Linux!


    VDR1: Zotac NM10-ITX Wifi - 2GB Ram - S2-6400 HD mit IR - yavdr 0.4 (development) - LianLi PC-Q11


    Tags: VDR-HD - AT5IONT-I - 4GB Ram - 512MB ION - TT 3600 DVB-S2 - TT6400-FF - Sundtek DVB-S2 Sundtek DVB-C - Tevii S480 (dank an L4M für kostenlose Bereitstellung) - yaVDR 0.5 (development) - SKY - HD+ - Atric - X10 FB - Zotac ID41 PLUS - SilverStone LC19B-R - Yamaha RX-V671 - Samsung 8Series 55"

  • Zitat

    Original von traxanos

    Code
    if ( IsPrimaryDevice()==true && Channel->Modulation() == QAM_256 )
         return false;


    Bitte keine boolschen Bools boolsch vergleichen, bitte :motz2
    Ich frag ja auch nicht "Dass Du traxanos bist ist wahr?" sondern "Bist Du traxanos?" :D


    Code
    if ( IsPrimaryDevice() && Channel->Modulation() == QAM_256 )
  • Zitat

    Original von traxanos
    Ahhh CardIndex habe ich auch versucht... aber ohne (). Das ist schon fast ein DAU Flag wert für mich :D. Ich freu mich aber schon das die Idee/Ansatz schonmal richtig war, dafür das es meine ersten C++ erfahrungen am VDR sind. Das mit PrimaryDevice hatte ich mir auch schon überlegt. Das werde ich unteranderem auch nutzen.


    CardIndex() hat den Nachteil, dass der Index einer Karte nicht konstant ist.
    Mit einem aktuellen udev und seinen lustigen coldplug-features kann
    man da ein sehr "interessantes" Verhalten bekommen... .


    Zitat

    Original von traxanos
    Als nächstes werden ich ein Flag zum an & ausschalten bauen.
    Ich denke das einige dieses Problem haben und eine Integration
    ins BP wäre hier nicht schlecht. (Sobald er ak-/deak-tivierbar ist)


    .oO(...da hab ich doch drauf gehofft...)
    Genau! Und bitte alles schick konfigurierbar...inkl. der zu sperrenden Frequenzen ;)

    Gentoo seit 0.26 :thumbup: - http://www.brakemeier.de

    :prost2

  • MichaelB


    Zitat

    Genau! Und bitte alles schick konfigurierbar...inkl. der zu sperrenden Frequenzen


    Das mit den Frequenzen kommt wenn erst im 2ten Schritt


    Zitat

    sollten neben der Primary schon zwei weitere Karten vorhanden sein.


    Genau um das zu vermeiden, brauche ich den Patch. Momenten hatte ich es so gelöst, dass die Entschlüsselung nur auf der 2. Karte ausgeführt wird, damit ich nicht immer per Femon umschalten muss bei QAM256. Da QAM256 nur bei ein paar KD PayTv Kanäle verwendet wird habe ich mir immer die FF gesperrt, damit MAF & WAF stimmt ;)


    LordJaxom
    Oh man wenn ich das in der Firma zeigen... :D Naütlich brauche ich nicht noch auf true zu prüfen udn bei false kommt das ! Aber es funktioniert auch so... wäre das nicht etwas für den gcc ein Warning raus zu hauen. Er weis doch das die Funktion ein bool zurück wirft.

    mfg traxanos
    ____________________
    Ist das neu?, Nein Linux!


    VDR1: Zotac NM10-ITX Wifi - 2GB Ram - S2-6400 HD mit IR - yavdr 0.4 (development) - LianLi PC-Q11


    Tags: VDR-HD - AT5IONT-I - 4GB Ram - 512MB ION - TT 3600 DVB-S2 - TT6400-FF - Sundtek DVB-S2 Sundtek DVB-C - Tevii S480 (dank an L4M für kostenlose Bereitstellung) - yaVDR 0.5 (development) - SKY - HD+ - Atric - X10 FB - Zotac ID41 PLUS - SilverStone LC19B-R - Yamaha RX-V671 - Samsung 8Series 55"

  • Ich hab den mal etwas umgewandelt und meine Problemfrequenzen eingebaut.


    Doof ist jetzt nur das die Cinergy Karten scheinbar keinen Videotext durchlassen :(


    Code
    OSDTeletext: Did not find appropriate device for teletext receiver for channel n-tv, PID 80


    Gibt es da eine Möglichkeit?


    *edit*: Hat sich erledigt, nachdem ich den VDR nochmal komplett durchgestartet hatte gings.

    Wohnzimmer VDR: Silverstone LC20, Celeron 430, 2 GB Ram, 16GB SSD, 8' TFT TM-868, 4,5TB per CIFS gemountet, yavdr 0.4/0.5, Harmony One, GT220, Speedlink 7.1 (CMI8768 ), Streamingclient, 46XV733


    Keller-Stream/Storage-VDR: Core2Duo, 4GB Ram, 3x TT-S2-1600, 1 x Satelco DVB-S Basic, yavdr 0.5, 6TB Storage

    2 Mal editiert, zuletzt von mboka ()

  • Vielen Dank für den Patch, hat mir auch geholfen. Schöner wärs natürlich, die TT 2300C würde auf Ish NRW mit QAM256 tun (so wie meine alte Karte am gleichen Anschluß, siehe Sig).


    Jetzt stürzt vdr wenigstens nicht mehr mit "video stream broken" bei Aufnahmen von qam256-Kanälen ab.


    Gruß & danke noch mal, hoover

Jetzt mitmachen!

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