Fonction ICCompress (vfw.h)
La fonction ICCompress compresse une seule image vidéo.
Syntaxe
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
);
Paramètres
hic
Poignée au compresseur à utiliser.
dwFlags
Indicateur de compression. La valeur suivante est définie :
ICCOMPRESS_KEYFRAME
Le compresseur doit faire de ce cadre un cadre clé.
lpbiOutput
Pointeur vers une structure BITMAPINFOHEADER contenant le format de sortie.
lpData
Pointeur vers une mémoire tampon de sortie suffisamment grande pour contenir un cadre compressé.
lpbiInput
Pointeur vers une structure BITMAPINFOHEADER contenant le format d’entrée.
lpBits
Pointeur vers la mémoire tampon d’entrée.
lpckid
Réservé ; ne pas utiliser.
lpdwFlags
Pointeur vers les indicateurs de retour utilisés dans l’index AVI. La valeur suivante est définie :
AVIIF_KEYFRAME
Le cadre actuel est un cadre clé.
lFrameNum
Numéro d’image.
dwFrameSize
Taille de trame demandée, en octets. Spécifiez une valeur différente de zéro si le compresseur prend en charge une taille de trame suggérée, comme indiqué par la présence de l’indicateur VIDCF_CRUNCH retourné par la fonction ICGetInfo . Si cet indicateur n’est pas défini ou si un débit de données pour la trame n’est pas spécifié, spécifiez zéro pour ce paramètre.
Un compresseur peut devoir sacrifier la qualité de l’image ou faire un autre compromis pour obtenir l’objectif de taille spécifié dans ce paramètre.
dwQuality
Valeur de qualité demandée pour le cadre. Spécifiez une valeur différente de zéro si le compresseur prend en charge une valeur de qualité suggérée, comme indiqué par la présence de l’indicateur de VIDCF_QUALITY retourné par ICGetInfo. Sinon, spécifiez zéro pour ce paramètre.
lpbiPrev
Pointeur vers une structure BITMAPINFOHEADER contenant le format de l’image précédente.
lpPrev
Pointeur vers l’image non compressée du cadre précédent. Ce paramètre n’est pas utilisé pour la compression temporelle rapide. Spécifiez NULL pour ce paramètre lors de la compression d’une trame clé, si le compresseur ne prend pas en charge la compression temporelle ou si le compresseur ne nécessite pas de mémoire tampon externe pour stocker le format et les données de l’image précédente.
Valeur retournée
Retourne ICERR_OK en cas de réussite ou une erreur dans le cas contraire.
Remarques
Vous pouvez obtenir la valeur requise en fonction de la taille de la mémoire tampon de sortie en envoyant le message ICM_COMPRESS_GET_SIZE (ou à l’aide de la macro ICCompressGetSize ).
Le compresseur définit le contenu de lpdwFlags sur AVIIF_KEYFRAME lorsqu’il crée un cadre clé. Si votre application crée des fichiers AVI, elle doit enregistrer les informations retournées pour lpckid et lpdwFlags dans le fichier.
Les compresseurs utilisent lpbiPrev et lpPrev pour effectuer une compression temporelle et nécessitent une mémoire tampon externe pour stocker le format et les données de l’image précédente. Spécifiez NULL pour lpbiPrev et lpPrev lors de la compression d’une image clé, lors de la compression rapide ou si le compresseur dispose de sa propre mémoire tampon pour stocker le format et les données de l’image précédente. Spécifiez des valeurs non NULL pour ces paramètres si ICGetInfo renvoie l’indicateur VIDCF_TEMPORAL , si le compresseur effectue une compression normale et si le cadre à compresser n’est pas une image clé.
Configuration requise
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | vfw.h |
Bibliothèque | Vfw32.lib |
DLL | Msvfw32.dll |