Codierung von VCR.NET 4.0 abgeschlossen – die Tests beginnen…

Nach einer Kürzung der geplanten Features ist die eigentliche Entwicklung von VCR.NET 4.0 abgeschlossen. Ich werde nun noch einige Zeit intern testen und die neue Online Hilfe fertigstellen und dann eine Version zum allgemeinen Beta-Test freigeben – zusammen mit der offiziellen DVB.NET Version 4.0, die nun schon einige Zeit stabil ist.

Puh

Jochen

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.

Neues Ablagesystem für VCR.NET

Beginnend mit VCR.NET 4.0 werden alle Informationen, die bisher in verschiedenen Dateien an verschiedenen Orten gespeichert wurden (Konfiguration, aktive und archivierte Aufträge, Protokolle, Programmzeitschriften) in einer einzige Microsoft SQL Compact Edition (SqlCe 4.0) Datenbank abgelegt. Die Übernahme erfolgt beim ersten Starten automatisch. Die Datenbank ist integraler Bestandteil der VCR.NET Installation (Private Mode des SqlCe), so dass keine weiteren Schritt bei einer Erstinstallation oder einem Upgrade notwendig sind. Kurz: technisch sollten die Anwender von der Änderung gar nichts bemerken.

Die Umstellung wurde durch die (sehr zähen und langsam fortschreitenden – ich weiß … leider!) Arbeiten am neuen Zeitplaner sinnvoll. Allerdings habe ich trotz erfolgreicher Umstellung der aktuellen Funktionalitäten noch nicht das endgültige Datenbankschema erreicht. Daher wird es vorerst auch kein Preview geben – ich selbst nutze die Version noch nicht produktiv. Nach einer Aktualisierung auf das neue Ablagesystem gibt es auch kein Zurück mehr und ich möchte nicht schon in der Beta Phase Schemamigrationen machen müssen. Etwas Geduld also…

Die Wahl genau dieser Datenbank ergibt sich aus dem Umfeld (privates Lernprojekt, tagesaktuelle Anforderungen) und daher sind andere Datenbanken wie MySQL und Konsorten kein Thema. Die Implementierung ist zwar an vielen Stellen ADO.NET basierend allgemein gehalten, allerdings musste ich insbesondere aus Performancegründen bei der Programmzeitschrift einige Kompromisse schliessen und direkt gegen SqlCe programmieren. Auf der einen Seite stehe ich noch ganz am Anfang und möchte daher nicht die Hoffnung aufgeben, dass bis zum Release von VCR.NET 4.0 etwas Ordentliches daraus wird. Aber auf der anderen Seite ist das für 4.0 nur ein kleiner Nebenschauplatz, an dem ich eigentlich gar nicht lange verweilen wollte. Naja, man kann es sich selbst auch nicht Recht machen, oder…

Soweit zur Information

Jochen