Osd2tcp
Aus M740 WikiWeb
Dieser Artikel ist veraltet und wird von mir (andreas.koch) nicht mehr aktualisiert. Aktuelle Infos befinden sich im Wiki von open7x0.org unter dem gleichnamigen Thema »Osd2tcp«.
Das eigens von Andreas.Koch für die M740AV entwickelte Kommando osd2tcp ermöglicht es, Änderungen am OSD zu verfolgen und das OSD über eine Netzwerk-Verbindung (TCP) zu übertragen.
Inhaltsverzeichnis |
Aufruf
Bei Aufruf ohne Angabe von Parametern erfolgt die 'usage'-Ausgabe:
osd2tcp V 0.0.2 - Andreas Koch - 2005-08-04
usage: osd2tcp [-v] [-x|--block_width n] [-y|--block_height n] [-p|--check_block_part n]
[-b|--bits_per_pixel n] [-c|--compression_level n] [-w|--wait_frame n] port
-v :
verbose
-x | --block_width n :
Breite eines Blocks des OSDs. n muss ein Teiler von 720 sein.
Bereich: 10..720
Standardwert: 60
-y | --block_height n :
Hoehe eines Blocks des OSDs. n muss ein Teiler von 576 sein.
Bereich: 12..576
Standardwert: 32
-c | --compression_level n :
Kompression des uebertragenen Bilds
Bereich: 0..9 (0 = keine Kompression)
Standardwert: 0
-p | --check_block_part n :
n/1000 eines Blocks bei der Aenderungserkennung verwendet wird.
Bereich: 1..500
Standardwert: 10
-b | --bits_per_pixel n :
Bits pro Pixel die uebertragen werden
Moegliche Werte: 1 := 32 Bits/Pixel, 2 := 16 Bits/Pixel, 3:= 8 Bits/Pixel
Standardwert: 3
-w | --wait_frames n :
n Frames (1/25 Sekunde) zwischen Aenderungspruefungen warten
Bereich: 1..50
Standardwert: 13
port : 1..65535
Funktionsweise
Wenn ein Client am Tool angemeldet ist, überprüft das Tool das OSD laufend auf Änderungen. Es wird dazu eine Prüfsumme (ADLER32) jedes OSD-Blocks berechnet. Es werden jedoch nicht alle Pixel eines Blocks benutzt, sondern wie als Parameter ("-p" bzw. "--check_block_part") übergeben ein Anteil von Pixel eines Blocks. Die Abstände in denen diese Überprüfung stattfindet können über den Parameter "-w" bzw. "--wait_frames" eingestellt werden. Auch die Blockgröße kann über die Parameter "-x" bzw. "--block_width" und "-y" bzw. "--block_height", die die Breite und Höhe eines Blocks angeben, eingestellt werden . Zu beachten ist dabei, dass die Breite eines Blocks ein ganzzahliger Teiler der gesamt Breite des OSDs (720 Pixel) und die Höhe eines Blocks ein ganzzahliger Teiler der gesamt Höhe des OSDs (576 Pixel) sein muß. Das OSD wird dann in Blöcke der angegebenen größe unterteilt. Dabei wird mit dem Block 0 in der oberen linken Ecke des OSDs begonnen. Die Blöcke werden dabei von links nach rechts durchnummeriert. Ist der rechte Rand des OSDs erreicht, wird die Nummerierung in der nächsten Zeile am linken Rand des OSD mit dem folgenden Block fortgesetzt.
Beispiel zur Block-Nummerierung für 6 Blöcke (Breite 240, Höhe 288):
0--------240-------480------720 | | | | | 0 | 1 | 2 | | | | | 288-------+---------+---------+ | | | | | 3 | 4 | 5 | | | | | 576-------+---------+---------+
Erkennt das Tool Änderungen am OSD wird an alle angemeldeten Clients übermittelt welche Blöcke sich geändert haben. Ein Client kann die Übertragung eines Blocks über seine Blocknummer anfordern. Die Blöcke werden Zeilenweise im RAW-Format oder zlib-komprimierten RAW-Format übertragen, d.h. die Pixel einer Zeile eines Block werden hintereinanderweg übertragen, und nach dem Ende der Zeile am linken Rand des Blocks in der nächsten Zeile fortgesetzt. Ein Pixel besteht dabei aus 1,2 oder 4 Bytes (konfigurationsabhängig). Ein Pixel setzt sich aus den vier Farbkanälen Transparenz, Rot, Grün und Blau, die immer in dieser Reihenfolge übertragen werden. Werden 4 Bytes pro Pixel übertragen, wird je ein Byte pro Kanal verwendet; werden 2 Bytes übertragen, wird für die Tranzparenz nur 1 Bit und für die restlichen drei Kanäle je 5 Bits verwendet; wird 1 Byte übertragen, werden je 2 Bits pro Kanal verwendet.
Beispiel für ein Block der Größe 10x12
Übertragungsreihenfolge der Pixel (angeben sind jeweils X und Y Koordinaten im Block): +-------+-------+-------+- -+-------+-------+-------+- -+-------+ | | | | | | | | | | | 00,00 | 01,00 | 02,00 | ... | 10,00 | 00,01 | 01,01 | ... | 10,12 | | | | | | | | | | | +-------+-------+-------+- -+-------+-------+-------+- -+-------+
Übertragung der Farbkanäle pro Pixel (in Übertragungsreihenfolge):
Benötigte Firmware
Das Programm ist in Lemmis Firmware ab Version 1.50.4-lemmi-02 und 1.50.6-lemmi-01 (beide basieren auf Siemens Beta-Versionen) implementiert. Aktiviert wird es durch Einstellungen in der Datei /var/etc/lemmi-settings.txt.
Ansonsten kann es auf allen Firmware-Versionen mit telnet-Zugang verwendet werden.
Verzeichnisse & Dateien der Firmware
/ (root file system; gemounted von /dev/mtd1)
- /data (Verzeichnis; gemounted von /dev/mtd2)
- /data/.timer (Verzeichnis)
- /data/RA_FILE
- /data/SI (Verzeichnis)
- /etc (Verzeichnis)
- /sbin (Verzeichnis)
- /usb (Softlink nach /var/media/USB-HDD) bis Firmware 1.x
- /usb1 (Softlink nach /var/media/USB-HDD-1) ab Firmware 2.x
- /usb2 (Softlink nach /var/media/USB-HDD-2) ab Firmware 2.x
- /usb/bin (Verzeichnis)
- /usr (Verzeichnis)
- /usr/bin (Verzeichnis)
- /usr/bin/key-control
- /usr/bin/osd2tcp
- /usr/bin/scan-param
- /usr/bin/stdin2tcp
- /usr/bin/watchdir
- /usr/bin (Verzeichnis)
Firmware Links
- Firmware Übersicht, Firmware Downloads, Beta-Firmware
- Firmware 1.12.1
- Firmware 1.18, Firmware 1.18.lemmi
- Firmware 1.29.5, Firmware 1.29.5.lemmi
- Firmware 1.33_cf, Firmware 1.33.lemmi (spanische FW)
- Firmware 1.37.4, Firmware 1.37.4.lemmi
- Firmware 1.44.4_cf, Firmware 1.44.4.lemmi (spanische FW)
- Firmware 1.49.5, Firmware 1.49.5.lemmi
- Firmware 1.50.6, Firmware 1.50.6.lemmi
- Firmware 2.1, Firmware 2.01.0.lemmi
- Allgemeine Infos:
- Hintergrundwissen:
- Aufbau der Updates: WSW Dateien, WSW Header, RSA Verschlüsselung
- Flash-RAM, cramfs Dateisystem
- Portal »Linux Projekt«

