Jump to content

Erstellung einer Favoritenliste nicht möglich


Albert Konrad

Recommended Posts

vor 1 Stunde schrieb Albert Konrad:

z.B. passieren die in der anliegenden Datei beschriebenen Dinge

 

Das sieht ja böse aus. Was bei den Favoriten anstatt des Sendernamens erscheint, ist die Sender-ID, die man mit Rechtsklick im Senderlisten-Editor -> ID in Zwischenablage erhält. Die Favoritenliste benutzt die ID als Verweis (also quasi als Link) auf den entsprechenden Eintrag der Senderliste.

 

Allerdings ist die fälschlich angezeigte ID teilweise verstümmelt. Sie enthält am Ende des numerischen Teils falsche Zeichen. Es sieht so aus, als wäre der Speicherbereich der Favoritenliste komplett durcheinandergeraten. Gesehen habe ich sowas noch nie und kann es mit einer "normalen" Windows-Installation (nicht in einer VM) auch nicht nachvollziehen.

 

Besteht das Problem auch, wenn du im Senderlisten-Editor nicht den Plus-Button verwendest, sondern Sender mit der Maus in die Favoriten ziehst oder Kopieren/Einfügen verwendest? Das geht übrigens auch mit Mehrfachauswahl und kategorieweise. Mehr dazu hier.

 

Link to comment

Also auch nicht besser.

 

vor 17 Stunden schrieb Albert Konrad:

MacBookPro mit M1-Prozessor unter macOS Monterey / Parallels Desktop / Windows 11

 

Die Ausführung von x86-Code muss also emuliert werden, d.h. der x86-Befehlssatz der Intel-CPUs mit ARM-Befehlen nachgebildet werden. Womöglich funktioniert das noch nicht perfekt. Ich sehe keinen Weg, das Problem im DVBViewer zu beheben. Es könnten sich sogar an anderen Stellen weitere Schwierigkeiten zeigen. Es würde mich jedenfalls wundern, wenn nur die Favoritenverwaltung betroffen ist, da von ihr verwendete Codeteile auch woanders im DVBViewer zum Einsatz kommen.

 

Link to comment

Mit der Möglichkeit, dass bei der Emulation des x86-Code etwas schief läuft, muss man natürlich rechnen. Angesichts der Tatsache, dass bereits für Windows 10 der x86-Befehlssatz der Intel-CPUs mit ARM-Befehlen nachgebildet wurde, verwundert es allerdings, dass da immer noch etwas schief läuft.

 

Auf jeden Fall vielen Dank für die Einschätzung, dass das Problem nicht auf Seiten des DVBViewer liegt bzw. sich nicht von dessen Seite her beheben lässt.

 

Für andere, die das gleiche Problem haben sollten, sei festgehallten, dass sich dieses umgehen lässt, wenn man die Favoritenliste eines Intel-PCs übernimmt, d.h. die dort erzeugten Dateien favourites.xml und channels.dat ins Konfigurationsverzeichnis des betroffenen PCs einfügt.

Link to comment

Hmm, was ich zumindest von unserer Seite ausschließen kann ist, dass es an Windows 11 oder Parallels liegt. Ich hab hier beides (allerdings nur auf meinem Intel-Mac) als Produktivsystem laufen und da geht es. Kannst du mal deine Favorites.xml und (sofern die anders ist als die normale) channels.dat posten?

Link to comment

Von Interesse wäre eventuell auch das DVBViewer.log (falls vorhanden), um sehen zu können, ob es bei dir Ausnahmefehler gibt. Am besten alles als zip einpacken und dann hier anhängen.

 

Link to comment

Anbei die gewünschten Dateien. Zu favourites.xml und channels.dat ist zu bemerken, dass auf deren Grundlage die Bearbeitung von Favoritenlisten auf anderen PCs, die unter Windows 10 laufen, keine Probleme verursacht.

 

(Zu Windows 11 on ARM ist zu bemerken, dass dies nur als Insider Preview verfügbar ist, das vermutlich häufiger ein Update erfährt. Den in der zweiten pdf-Datei von gestern dargestellten 4. Problemfall kann ich nicht mehr reproduzieren. ... Das könnte daran liegen, dass es zwischenzeitlich ein Update von Windows 11 gab und tatsächlich ein Emulationsproblem vorliegt.)

Dateien.zip

Link to comment
  • 1 month later...

Mittlerweile hat es verschiedene prerelease-Versionen von Windows 11 on ARM gegeben, die zu keinen Veränderungen des Verhaltens geführt haben. Die neueste ni_release-Version hat das Verhalten verändert: Die auftretenden Fehler haben sich verringert bzw. verändert. Es treten aber immer noch Fehler auf. Das deutet darauf hin, dass weder  DVBViewer noch Parallels Ursache der Fehler sind sonder Windows 11 on ARM. Die Fehler lassen sich mit der bereits früher geschilderten Methode umgehen.

Link to comment
  • 11 months later...

Hallo,

 

bei meinem system:  Mac min M2 -Parallels Desktop -Windows 11 ARM treten immer noch Probleme mit der ChannelID auf,

soweit ich feststellen konnte ist nur die SID betroffen! 

Vielleicht kann mann daraus neue Erkenntnisse gewinnen?? Zur Info, bei der SW E..Tv 4 wird die ChannelID korrekt erzeugt (64 bit prg) !!

 

Spoiler

ChannelID 

2359890582721931000 |Das Erste HD nok W11 arm
20C0 03FB 53EE 26F8
2359890582721931325 |Das Erste HD ok W11 
20C0 03FB 53EE 283D

 

2359890548428908000 |ZDF HD nok W11 arm
20C0 03F3 57E8 25E0
2359890548428909414 |ZDF HD ok
20C0 03F3 57E8 2B66 

 

23598905827225864W0 |arte HD nok W11 arm

2359890582722586686  |arte HD ok W11 

 

Word 0: 0x445D SID
Word 1: 0x0200 APID bit 0-12; bit 13..15: Tunertype (0 = undefined, 1 = DVB-C, 2 = DVB-S, 3 = DVB-T, 4 = ATSC)
Word 2: 0x0453 TID
Word 3: 0x20C0 bit 0..12: orbital position x 10 (range 0...8999), bit 13..14: TV/Radio (0 = undefined, 1 = TV, 2 = Radio, 3 = reserved)

 

 

 

 

 

Gruss aus Köln

 

Link to comment
vor 7 Stunden schrieb lsby:

soweit ich feststellen konnte ist nur die SID betroffen! 

Vielleicht kann mann daraus neue Erkenntnisse gewinnen??

 

Ich nicht ;) Ist das Kopieren der Sender ID in die Windows-Ablage im Senderlisten-Editor (siehe dortiges Kontextmenü) auch betroffen? Und die Sender ID in der timers.xml nach Aufnahmeprogrammierung?

 

Link to comment
vor 2 Stunden schrieb Griga:

Ist das Kopieren der Sender ID in die Windows-Ablage im Senderlisten-Editor (siehe dortiges Kontextmenü) auch betroffen

Ja

 

vor 2 Stunden schrieb Griga:

Und die Sender ID in der timers.xml nach Aufnahmeprogrammierung?

habe ich noch nicht kontrolliert. Ich vermute mal ja.

Überall wo die ChannelID erzeugt/gebracht wird, ist diese falsch. > DCBViewer und MediaServer.

Wird die ChannelID auch in TransEdit gebracht bzw. erstellt ?

Auszug der m3u liste die im MS erzeugt wird.

 

 

 Gruss 

Edited by lsby
Link to comment
vor 11 Stunden schrieb lsby:

Überall wo die ChannelID erzeugt/gebracht wird, ist diese falsch. > DCBViewer und MediaServer.

 

Das hilft weiter, insbesondere, dass die ChannelID im Media Server auf gleiche Weise falsch ist. Auch hier taucht in der ID von arte der Buchtabe "W" auf, der dort rein gar nichts zu suchen hat. Es liegt also weder speziell an dem Code für Favoriten noch an Zufälligkeiten des Memory Layouts.

 

Die ChannelID ist keine permanent im Speicher vorhandene Zeichenkette, sondern wird bei Bedarf zusammengebaut: Zunächst fasst der Code verschiedene Senderdaten zu einer 64-Bit-Ganzzahl zusammen, verwandelt diese in einen String, hängt noch als Separator das Zeichen "|" an und dann den Sendernamen. Das sieht im Code so aus:

 

  result := IntToStr(Tuner.BuildID) + IDSeparator + ChannelName;

 

Die Funktion IntToStr, die hier einen 64-Bit-Wert in einen String verwandelt, ist besonders verdächtig, denn vor ihrem Einsatz ist der numerische Teil der ChannelID nur eine Gannzzahl in binärer Form. Da gibt es mit Sicherheit kein "W". IntToStr entstammt der Delphi Runtime-Bibliothek. Ich habe mir den Quellcode angeschaut: Die Funktion ist in x86-Assembler kodiert (also quasi Maschinensprache) und benutzt zudem fleißg x87-FPU-Befehle (Floating Point Unit der CPU), weil diese in 32-Bit-Code bei Multiplikationen/Divisionen schneller arbeiten als entsprechende Funktionen mit 64-Bit-Ganzzahlarithmetik. Insbesondere wird auch das FPU Control Word manipuliert, um ein bestimmtes Rundungverhalten zu bewirken. Womöglich kann die x87-Emulation mit ARM-Befehlen das nicht exakt nachbilden.

 

Um eine Überprüfung zu ermöglichen, habe ich IntToStr bei der Erzeugung der ChannelID durch eine Alternative ersetzt, die auf den FPU-Voodoo verzichtet, und stelle dir eine entsprechende DVBViewer-Testversion via PM zur Verfügung. Falls es damit funktioniert, ist das Problem jedoch vermutlich nicht vollständig gelöst, denn IntToStr wird auch bei anderen Gelegenheiten für 64-Bit-Werte verwendet, und FPU-Arithmetik sowieso...

 

Link to comment

Hallo,

 

danke für die Testversion, Ergebnise über Strg+ Y  

2359890582721931325|Das Erste HD

2359890582722586686|arte HD

 

sieht doch gut aus !!

Wo können noch Probleme auftreten die ich eventuell überprüfen könnte!?

Ist es möglich auch für dem MediaServer eine Testversion zu bekommen ?

 

Gruss aus Köln und noch eine schöne Karnevalszeit 

Edited by lsby
Link to comment
vor 27 Minuten schrieb lsby:

Wo können noch Probleme auftreten die ich eventuell überprüfen könnte!?

 

Ich habe schon versucht, solche Stellen zu ermitteln, aber da sucht man sich im Code tot. Es gibt auf jeden Fall mehrere. Außerdem verwendet die Runtime Library selbst IntToStr-Aufrufe. Ich versuche gerade, sie so zu patchen, dass alle Aufrufe von IntToStr auf die Alternative umgeleitet werden, sowohl im DVBViewer als auch im Media Server. Soweit ich bislang sehen kann, geht das.

 

vor 27 Minuten schrieb lsby:

Ist es möglich auch für dem MediaServer eine Testversion zu bekommen ?

 

Ja, wenn ich so weit bin... ich muss das erst mal selbst testen.

 

Was ich jedoch so nicht behandeln kann, sind eventuelle weitere Probleme mit nicht exakt emuliertem FPU-Code. Die könnten sich sehr subtil äußern ;)

 

Link to comment

Hallo,

 

habe eine neue Installation vorgenommen, die geänderten Daten in den entsprechenden Verzeichnisse kopiert zzw. überschrieben!

 

Im MediaServer gibt es zwei stellen wo die Daten nicht stimmen: SenderEPG + Medien

 

Bildschirmfoto2023-02-19um12_56_46.png.af57302ed5bb796de21b3d5d464fda50.png

 

Bildschirmfoto2023-02-19um12_55_40.thumb.png.617862653b333b6104443578766e9089.png

 

 

 

Gruss

Edited by lsby
Link to comment
vor 17 Stunden schrieb lsby:

Sender EPG > Arte es werden die Daten vom ersten angezeigt !!

 

Du kannst mit dem Browser überprüfen, ob der Quellcode der Seite an der Stelle die richtige ChannelID enthält: Arte selektieren, dann Rechtsklick auf den Sendernamen und "Untersuchen" (Firefox, Chrome), um die Entwicklerwerkzeuge des Browsers zu öffnen. Das aufgeklappte HTML <li ...> Element enthält den numerischen Teil der ID, z.B.

 

<li id="2359890582722586686" rel="DVB-S" class="jstree-leaf">
  <ins class="jstree-icon">&nbsp;</ins>
  <a href="#" class="jstree-clicked">
    <ins class="jstree-icon">&nbsp;</ins>
    arte HD
  </a>
</li>

 

Die ChannelIDs in M3U-Exporten des Media Servers sind jetzt korrekt? Da der Fix "globalgalaktisch" auf die gesamte Anwendung wirkt, ist praktisch unmöglich, dass er an einzelnen Stellen nicht greift. Nicht ausgeschlossen ist jedoch, dass es noch weitere Probleme mit der x86/x87-Emulation von Parallels gibt. Ich kann deiner Beschreibung jedoch nicht entnehmen, welcher Art sie sein könnten. Womöglich sind sie sich nicht so einfach auffindbar und behebbar.

 

Link to comment

P.S. Ich sehe gerade im Media Server Quellcode für den Sender EPG, dass für die Erzeugung des HTML-Codes und die dafür erforderliche Umwandlung des numerischen Teils der ChannelID in einen String nicht IntToStr verwendet wird, sondern dies im Rahmen der Format-Funktion geschieht:

 

WriteStrings([Format('<li id="%d" rel="%s"><a href="#">%s</a></li>', [ChannelIDValue, TunerType, EncodeUTF8(Name)]), #13#10]);

 

Wenn hier die Emulation auch falsch umwandelt, lässt sich das nicht mehr für die gesamte Anwendung vermeiden, da diese sehr komplexe Funktion für alle möglichen Formatierungen zuständig ist. Ich könnte die betroffene Stelle im DMS Code höchstens so umschreiben, dass sie IntToStr verwendet. Aber wer weiß, an wie vielen Stellen das noch nötig ist ;)

 

Link to comment

P.P.S. Ich denke, ich habe auch die andere von dir genannte Stelle gefunden. Sie betrifft nicht nur das Senderangebot auf der Medien-Seite, sondern auch in sämtlichen UPnP Clients. Auch hier lässt sich das Problem umgehen.

 

Die Format-Funktion verwendet für die Umwandlung von 64-Bit-Ganzzahlen in einen String die selbe Subroutine wie IntToStr. Das erklärt, warum es dabei auch schiefgeht. An diese Subroutine komme ich jedoch im DVBViewer/DMS-Code nicht heran, da sie die Code-Unit, in der sie steht, nicht exportiert. Deshalb kann ich sie nicht auf eine Alternative umbiegen.

 

Link to comment
vor 58 Minuten schrieb Griga:

Die ChannelIDs in M3U-Exporten des Media Servers sind jetzt korrekt?

ja 

Spoiler

#EXTINF:-1,arte HD (deu)
http://localhost:7522/upnp/channelstream/2359890582722586686|arte HD (deu).ts

#EXTINF:-1,arte HD (deu)
rtsp://localhost:554/?chid=2359890582722586686%7Carte%20HD%20%28deu%29

 

Medien>TV>Alle Sender>ARD

Arte (im Browser wiedergeben)

es öffnet sich ein neues Fenster

404 Not Found 

(i) steht folgender String 

http://localhost:8089/streamint.html?direct=1&server_id=uuid:98869A78-87B8-4751-8D39-1DE8E08B2E87&itemID=t%23a%2300000%23023598905827225864W0&streamid={56E8C1C7-D17C-4619-98F5-D22F7BC40A98}

 

was kann ich noch Testen ??

 

Gruss

Link to comment
vor 10 Minuten schrieb lsby:

was kann ich noch Testen ??

 

Wenn ich das mal wüsste ;) Ich kann dir wahrscheinlich heute abend noch eine neue DMS-Testversion zur Verfügung stellen, die die letzten beiden gemeldeten Probleme vermeidet.

 

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...