Funzione ICCompress (vfw.h)
La funzione ICCompress comprime una singola immagine video.
Sintassi
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
);
Parametri
hic
Handle per il compressore da utilizzare.
dwFlags
Flag di compressione. Il valore seguente è definito:
ICCOMPRESS_KEYFRAME
Il compressore deve rendere questo fotogramma un fotogramma chiave.
lpbiOutput
Puntatore a una struttura BITMAPINFOHEADER contenente il formato di output.
lpData
Puntatore a un buffer di output sufficientemente grande da contenere un frame compresso.
lpbiInput
Puntatore a una struttura BITMAPINFOHEADER contenente il formato di input.
lpBits
Puntatore al buffer di input.
lpckid
Riservati; non usare.
lpdwFlags
Puntatore ai flag restituiti usati nell'indice AVI. Il valore seguente è definito:
AVIIF_KEYFRAME
Il fotogramma corrente è un fotogramma chiave.
lFrameNum
Numero di frame.
dwFrameSize
Dimensioni del frame richieste, in byte. Specificare un valore diverso da zero se il compressore supporta una dimensione del frame suggerita, come indicato dalla presenza del flag VIDCF_CRUNCH restituito dalla funzione ICGetInfo . Se questo flag non è impostato o non viene specificata una frequenza dei dati per il frame, specificare zero per questo parametro.
Un compressore potrebbe dover sacrificare la qualità dell'immagine o fare qualche altro compromesso per ottenere l'obiettivo di dimensione specificato in questo parametro.
dwQuality
Valore di qualità richiesto per il frame. Specificare un valore diverso da zero se il compressore supporta un valore di qualità suggerito, come indicato dalla presenza del flag VIDCF_QUALITY restituito da ICGetInfo. In caso contrario, specificare zero per questo parametro.
lpbiPrev
Puntatore a una struttura BITMAPINFOHEADER contenente il formato del frame precedente.
lpPrev
Puntatore all'immagine non compressa del frame precedente. Questo parametro non viene usato per la compressione temporale veloce. Specificare NULL per questo parametro quando si comprime un fotogramma chiave, se il compressore non supporta la compressione temporale o se il compressore non richiede un buffer esterno per archiviare il formato e i dati dell'immagine precedente.
Valore restituito
Restituisce ICERR_OK in caso di esito positivo o di errore.
Commenti
È possibile ottenere l'oggetto richiesto per dimensione del buffer di output inviando il messaggio ICM_COMPRESS_GET_SIZE (o utilizzando la macro ICCompressGetSize ).
Il compressore imposta il contenuto di lpdwFlags su AVIIF_KEYFRAME quando crea un fotogramma chiave. Se l'applicazione crea file AVI, deve salvare le informazioni restituite per lpckid e lpdwFlags nel file.
I compressori usano lpbiPrev e lpPrev per eseguire la compressione temporale e richiedono un buffer esterno per archiviare il formato e i dati del frame precedente. Specificare NULL per lpbiPrev e lpPrev durante la compressione di un fotogramma chiave, quando si esegue una compressione rapida o se il compressore dispone di un proprio buffer per archiviare il formato e i dati dell'immagine precedente. Specificare valori non NULL per questi parametri se ICGetInfo restituisce il flag VIDCF_TEMPORAL , il compressore esegue la compressione normale e il frame da comprimere non è un fotogramma chiave.
Requisiti
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | vfw.h |
Libreria | Vfw32.lib |
DLL | Msvfw32.dll |