2.3. Helligkeit, Kontrast, Farbsättigung
Dieses Beispiel entspricht dem Beispiel msvc-low-level-parameters auf der zu den Framegrabbern mitgelieferten CD. Download des Projektes: 384x288x555xcont.zip bzw. der ausführbaren Datei: 384x288x555xcont.exe.

Durch ändern eines oder mehrer Werte ist die Wirkung nach drücken von \\\\\\\"Set Values\\\\\\\" sichtbar.
Für Helligkeit, Kontrast, Sättigung und Gain gibt es eigene die Treiberfunktionen 5,6 und 11,12 um diese Werte vom Treiber zu lesen und zum Treiber zu schreiben. Aktiviert werden sämtliche Einstellungen erst mit Funktion 8. Die Teilung dieser Funktionalität ist für Schieberegler vorteilhaft. Da die Funktionen 5,6,11 und 12 sehr kurze Durchlaufzeiten haben können diese direkt an die Sliderbewegungen der Regler gekoppelt werden. Die Tatsächliche Umsetzung mit Funktion 8 sollte dagegen in einer Timerroutine erfolgen, z.B. aller 200ms. Damit sind die Einstellungen zeitnah sichtbar und die Regler sind leicht und flüssig bewegbar. In diesem Beispiel entspricht der Knopf \\\\\\\"Set Values\\\\\\\" der Ausführung der Funktion 8. Die Grabberkarten der FG3x Serie haben zahlreiche Einstellungen, die im Handbuch detailliert bitweise beschrieben sind. Das Beispiel zeigt die ersten 25 Byte des XRAMs, so wird der Transferbereich dieser Werte genannt. Mit den Funktionen 7 und 30 können die einzelnen Bits leicht manipuliert werden. Um die Einstellungen des aktiven Eingangs zu Speichern werden die XRAM Werte mit \\\\\\\"Save\\\\\\\" in einer binären Datei abgelegt. Mit Programmstart können diese Werte mit \\\\\\\"Load\\\\\\\" zurückgeladen und aktiviert werden. Diese Vorgehensweise ist ratsam, wenn Programme bestimmte spezifische Einstellungen benötigen.
for (i=0;i<25;i++)
{
cx=i;
FG30DRV (30,&cx,&dx);
dataset[i]=cx&0xff;
}
Diese for-Schleife liest die ersten 25 Byte des XRAM, in dem die wichtigsten Einstellungen enthalten sind. Nach Manipulation (hier in den ersten 25 Werten des Dialogs möglich) schreibt eine gleichartige Schleife mit Funktion 7 die Werte in den Treiber zurück.
for (i=0;i<29;i++)
dataset[i]=(char)GetDlgItemInt (hwnd,2000+i,NULL,FALSE);
// put xram back into driver
for (i=0;i<25;i++)
{
cx=i;
dx=(short)dataset[i];
FG30DRV (7,&cx,&dx);
}
//put back contrast, brightness, saturation
cx=dataset[25]+(dataset[26]<<8);
dx=(short)dataset[27];
FG30DRV (5,&cx,&dx);
//put back gain
cx=(short)dataset[28];
FG30DRV (11,&cx,&dx);
//use changed values now
FG30DRV (8,&cx,&dx);
Letztendlich sind die Werte für Helkligkeit, Kontrast, Sättigung und Gain auch nur Werte des XRAMs und hier im Dialog somit doppelt vorhanden. XRAM Werte sind Grabber unabhängig. Für verschiedene Videodecoder ICs, etwa für SAA7191 auf FG-30 ISA oder SAA 7110 auf FG-31 ISA und FG32 werden sämtliche Werte, falls notwendig in Äquivalente für den jeweiligen Decoder konvertiert. XRAM Werte sind somit das kleinste gemeinsame Vielfache der Funktionalität der FG-3x Serie. Für mehr Details sind weitere Funktionen verfügbar. Der komplette Wertebereich des Treibers der aktuellen Karten ist etwa 3 mal größer und wird im Handbuch als EXRAM (Extendet- XRAM) bezeichnet. Funktion 18 ist Äquivalent zu Funktion 8 und die EXRAM Werte sind in ähnlicher Form manipulierbar. Die Verwendung der EXRAM Einstellungen kann Anpassungen für zuküftige Framegrabber erfordern - dagegen sind die XRAM-Werte auch dann noch bestmöglich kompatibel. |