VCR.NET 4.0 und SqlCe – Frust…

Ich habe jetzt eine Reihe von Vorversuchen gemacht, um dem VCR.NET Recording Service durch den Einsatz der Microsoft SQL Server 4.0 Compact Edition (SqlCe) eine ordentliche Datenbank zu verpassen. Nach anfäglichen Erfolgen betrachte ich das jetzt nach dem Versuch, auch die Programmzeitschrift im SqlCe zu halten, als gescheitert. Konkret ist mein mir selbst gesetztes Zeitbudget erschöpft und ich werde die SqlCe Integration zurückfahren müssen – keine Ahnung, ob auf den Urzustand oder etwas anderes. Weitere Experimente zur Optimierung oder andere (freie) Datenbanken ausprobieren werde ich nicht machen, dazu ist mir die Zeit zu schade – funktional liegt ja die VCR.NET 4.0 Entwicklung schon zu lange auf Eis und die persistente Ablage sollte nur ein unbedeutender Nebenschauplatz sein.

Was hat mich denn so wirklich genervt? Am Anfang die Geschwindigkeit beim Anlegen von Datensätzen: eine Programmzeitschrift mit 20.000+ Einträge mit einer Rate von ca. 10 pro Sekunde (ich habe keinen sonderlich langsamen Rechner!) steht ausserhalb jeder Diskussion. Nun, das Problem war schnell gelöst: durch den Einsatz von Cursor und Record liegt man bei deutlich über 10.000 Operationen pro Sekunde. Da kam dann wieder Freude auf.

Häßlich wurde es dann wieder, als ich versucht habe, die Beschreibungen der Sendungen als Spalten zu definieren. Diese können (und sind oft) theoretisch recht lang werden. Also erst einmal als unbegrenzter (UNICODE) NTEXT: träge beim Suchen (LIKE), qualvoll langsam beim Auslesen. Ich habe dann in den sauren Apfel gebissen und mir gesagt, dass 4.000 Zeichen wohl auch reichen werden und bin zu NVARCHAR(4000) übergelaufen. Die Übertragungsgeschwindigkeit ist dann akzeptabel. Bei der Suche in der Programmzeitschrift sucht VCR.NET in der Voreinstellung über Name, Beschreibung und Kurzbeschreibung mit LIKE ‘%text%’ – Volltextsuche kann SqlCe ja nicht. Ist die Suche auf eine Spalte noch gerade so erträglich, ist es über drei Spalten schon sehr ruckelig.

Also einfach alle Spalten in eine redundante (unsichtbare) Spalte kombinieren und darin suchen. Tja, von der Geschwindigkeit her geht das gerade noch so (schenll ist anders), aber leider ist die Breite einer Tabellenzeile auf ca. 8.000 Bytes beschränkt: ich bekomme die aktuelle Programmzeitschrift von Astra 1 und 2 gar nicht erst eingespielt.

Ich habe mir jetzt nicht die Mühe gemacht herauszufinden, an welcher Stelle es genau knallt – könnte 3Sat sein, die haben ab und an mal wirklich ausführliche Beschreibungen. Obwohl ich durchaus noch Ideen habe, das teilweise in den Griff zu bekommen [ist ja auch so ausserhalb der Freizeit mein Job :-)] ist für mich der Punkt erreicht, an dem ich ganz klar sagen muss: jetzt ist VCR.NET Funktionalität mal wieder dran.

So, das muss erst mal reichen. Vielleicht melde ich mich dazu noch einmal, wenn ich eine angemessene Lösung implementiert habe.

Bis dahin viel Spaß

Jochen

[Zusatz] Back to the Roots – sämtliche SqlCe Erweiterungen wurden entfernt und es geht weiter wie bisher.

Verbesserte BDA Unterstützung in DVB.NET 4.0

DVB.NET 4.0 (und damit auch VCR.NET 4.0) kann nun auch die Standardmechanismen des Microsoft BDA System verwenden, um die DiSEqC (IBDA_DiseqCommand) und DVB-S2 (IBDA_DigitalDemodulator2) Steuerung beim Satellitenempfang vorzunehmen. Ich habe das bei meiner Nova-HD-S2 unter Windows 7 im Test: DVB-S2 scheint problemlos zu funktionieren, DiSEqC muckt ab und an [unabhängig davon, dass die Microsoft Dokumentation unvollständig (put_EnableDiseqCommands) und im Detail (put_DiseqLNBSource) auch wirklich fehlerhaft ist] – grundsätzlich sieht es aber gut aus.

Vielleicht finden sich ja Anwender mit anderer Hardware, die in der 4.0er Testphase (ups: wie lange läuft die eigentlich schon? peinlich!) mal schauen, ob inzwischen nicht auf die ganzen propritären Ansteuerungen verzichtet werden kann. Zumindest Hauppauge scheint da ja gute Arbeit geleistet zu haben.

Soweit zur Information

Jochen

[Erster Zusatz] Der Kanalwechsel bei Einsatz der BDA IBDA_DigitalDemodulator2 Schnittstelle scheint deutlich langsamer zu sein als bei Verwendung der Nova eigenen Methodik. Bei IBDA_DiseqCommand ist es leider noch schlimmer: schließt man ein Gerät in einer Anwendung auf DiSEqC 2 und öffnet erneut einen Zugriff in der gleichen Anwendung, so wird die Umschaltung auf DiSEqC 1 einfach ignoriert. Es scheint mir, als würde hier ein Zustand vermerkt, der das Schließen / Öffnen des Gerätes via BDA überlebt.

Windows 7 Media Center – Nanu!

Gestern habe ich mir mehr oder weniger ohne Absicht das Windows 7 Media Center auf meinem DVB.NET / VCR.NET System installiert. Leider scheint sich dies irgendwie in die Kommunikation via BDA einzuklinken: die Umschaltzeiten mit DVB.NET sind [bei meiner Hauppage Nova-HD-S2] mindestens um einen Faktor 10 langsamer geworden! Bei einigen (insbesondere auf DVB-S2 Quellgruppen) Sendern sogar so sehr, dass diese gar nicht mehr angsteuert werden konnten (etwa Anixe HD oder BBC One HD).

Ich habe das WMC 7 wieder deinstalliert und nach einem Reboot ist alles wieder, wie es sein soll. PUH!

Also Vorsicht…

Jochen

[Erster Zusatz] Das scheint mit dem WMC 7 doch nichts zu tun zu haben. Ich versuche gerade, die BDA Schnittstelle IBDA_DigitalDemodulator2 zu verwenden und so auf die spezielle DVB-S2 Ansteuerung der Nova zu verzichten. Es sieht im Moment so aus, als wenn nach der Nutzung der BDA Schnittstelle die speziellen Mechanismen nicht mehr richtig funktionieren. Manchmal fängt es sich, manchmal braucht man einen Neustart von Windows (7).

[Zweiter Zusatz] Vielen Dank für folgenden Hinweis des Benutzers KayDiefenthal: wenn du deine tv karte in mce einmal eingerichtet hast krallt sich der ehrecvr.exe (Aufnahmen planer dienst des Mce ) die Karte, dann ist die karte gesperrt für andere anwendungen.