ICCompress-Funktion (vfw.h)
Die ICCompress-Funktion komprimiert ein einzelnes Videobild.
Syntax
DWORD VFWAPIV ICCompress(
HIC hic,
DWORD dwFlags,
LPBITMAPINFOHEADER lpbiOutput,
LPVOID lpData,
LPBITMAPINFOHEADER lpbiInput,
LPVOID lpBits,
LPDWORD lpckid,
LPDWORD lpdwFlags,
LONG lFrameNum,
DWORD dwFrameSize,
DWORD dwQuality,
LPBITMAPINFOHEADER lpbiPrev,
LPVOID lpPrev
);
Parameter
hic
Griff zum zu verwendenden Kompressor.
dwFlags
Komprimierungsflag. Der folgende Wert wird definiert:
ICCOMPRESS_KEYFRAME
Kompressor sollte diesen Frame zu einem Keyframe machen.
lpbiOutput
Zeiger auf eine BITMAPINFOHEADER-Struktur , die das Ausgabeformat enthält.
lpData
Zeiger auf einen Ausgabepuffer, der groß genug ist, um einen komprimierten Frame zu enthalten.
lpbiInput
Zeiger auf eine BITMAPINFOHEADER-Struktur , die das Eingabeformat enthält.
lpBits
Zeiger auf den Eingabepuffer.
lpckid
Reserviert; nicht verwenden.
lpdwFlags
Zeiger auf die im AVI-Index verwendeten Rückgabeflags. Der folgende Wert wird definiert:
AVIIF_KEYFRAME
Der aktuelle Frame ist ein Keyframe.
lFrameNum
Framenummer.
dwFrameSize
Angeforderte Framegröße in Bytes. Geben Sie einen Wert ohne Zero an, wenn der Kompressor eine vorgeschlagene Framegröße unterstützt, wie das Vorhandensein des von der ICGetInfo-Funktion zurückgegebenen VIDCF_CRUNCH Flags anzeigt. Wenn dieses Flag nicht festgelegt ist oder keine Datenrate für den Frame angegeben ist, geben Sie null für diesen Parameter an.
Ein Kompressor muss möglicherweise auf die Bildqualität verzichten oder einen anderen Kompromiss unternehmen, um das in diesem Parameter angegebene Größenziel zu erhalten.
dwQuality
Der angeforderte Qualitätswert für den Frame. Geben Sie einen nichtzero-Wert an, wenn der Kompressor einen vorgeschlagenen Qualitätswert unterstützt, wie das Vorhandensein des von ICGetInfo zurückgegebenen VIDCF_QUALITY Flags anzeigt. Geben Sie andernfalls null für diesen Parameter an.
lpbiPrev
Zeiger auf eine BITMAPINFOHEADER-Struktur , die das Format des vorherigen Frames enthält.
lpPrev
Zeiger auf das nicht komprimierte Bild des vorherigen Frames. Dieser Parameter wird nicht für die schnelle temporale Komprimierung verwendet. Geben Sie null für diesen Parameter an, wenn sie einen Keyframe komprimieren, wenn der Kompressor keine temporale Komprimierung unterstützt oder wenn der Kompressor keinen externen Puffer zum Speichern des Formats und der Daten des vorherigen Bilds benötigt.
Rückgabewert
Gibt ICERR_OK zurück, wenn erfolgreich oder andernfalls ein Fehler aufgetreten ist.
Hinweise
Sie können die erforderliche Größe des Ausgabepuffers abrufen, indem Sie die ICM_COMPRESS_GET_SIZE Nachricht senden (oder das ICCompressGetSize-Makro verwenden).
Der Kompressor legt den Inhalt von lpdwFlags auf AVIIF_KEYFRAME fest, wenn er einen Keyframe erstellt. Wenn Ihre Anwendung AVI-Dateien erstellt, sollten die für lpckid und lpdwFlags zurückgegebenen Informationen in der Datei gespeichert werden.
Kompressoren verwenden lpbiPrev und lpPrev , um eine temporale Komprimierung durchzuführen und benötigen einen externen Puffer, um das Format und die Daten des vorherigen Frames zu speichern. Geben Sie null für lpbiPrev und lpPrev an, wenn sie einen Keyframe komprimieren, wenn eine schnelle Komprimierung ausgeführt wird oder wenn der Kompressor über einen eigenen Puffer zum Speichern des Formats und der Daten des vorherigen Images verfügt. Geben Sie nicht NULL-Werte für diese Parameter an, wenn ICGetInfo das flag VIDCF_TEMPORAL zurückgibt, der Kompressor eine normale Komprimierung ausführt und der zu komprimierende Frame kein Keyframe ist.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | vfw.h |
Bibliothek | Vfw32.lib |
DLL | Msvfw32.dll |