Méthode IMediaDet::GetBitmapBits
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
Notes
[Déconseillé. Cette API peut être supprimée des versions ultérieures de Windows.]
La GetBitmapBits
méthode récupère une image vidéo à l’heure du média spécifiée. Le cadre retourné est toujours au format RVB 24 bits.
Syntaxe
HRESULT GetBitmapBits(
double StreamTime,
long *pBufferSize,
char *pBuffer,
long Width,
long Height
);
Paramètres
-
StreamTime
-
Heure à laquelle récupérer l’image vidéo, en secondes.
-
pBufferSize
-
Reçoit la taille de mémoire tampon requise. Si pBuffer a la valeur NULL, la variable reçoit la taille de la mémoire tampon nécessaire pour récupérer le cadre. Si pBuffer n’a pas la valeur NULL, ce paramètre est ignoré.
-
pBuffer
-
Pointeur vers une mémoire tampon qui reçoit une structure BITMAPINFOHEADER suivie des bits DIB.
-
Width
-
Largeur de l’image vidéo, en pixels.
-
Height
-
Hauteur de l’image vidéo, en pixels.
Valeur renvoyée
Retourne une valeur HRESULT . Il peut prendre les valeurs suivantes :
Code de retour | Description |
---|---|
|
Opération réussie. |
|
Impossible d’ajouter le filtre Sample Grabber au graphique. |
|
Mémoire insuffisante. |
|
Erreur de pointeur NULL. |
|
Erreur inattendue. |
|
Type de média non valide. |
Notes
Avant d’appeler cette méthode, définissez le nom du fichier et le flux en appelant IMediaDet::p ut_Filename et IMediaDet::p ut_CurrentStream.
Pour déterminer la taille de la mémoire tampon requise, appelez cette méthode avec pBuffer égal à NULL. La taille est retournée dans la variable pointée vers par pBufferSize. Ensuite, créez la mémoire tampon et appelez à nouveau la méthode, avec pBuffer égal à l’adresse de la mémoire tampon. Lorsque la méthode retourne, la mémoire tampon contient une structure BITMAPINFOHEADER suivie de la bitmap. La bitmap est mise à l’échelle selon les dimensions spécifiées dans les paramètres Width et Height .
Cette méthode place le détecteur multimédia en mode de saisie bitmap. Une fois cette méthode appelée, les différentes méthodes d’informations de flux dans IMediaDet ne fonctionnent pas, sauf si vous créez une nouvelle instance du détecteur multimédia.
Notes
Le fichier d’en-tête Qedit.h n’est pas compatible avec les en-têtes Direct3D ultérieurs à la version 7.
Notes
Pour obtenir Qedit.h, téléchargez la mise à jour Microsoft Windows SDK pour Windows Vista et .NET Framework 3.0. Qedit.h n’est pas disponible dans le Microsoft Windows SDK pour Windows 7 et .NET Framework 3.5 Service Pack 1.
Exemples
Le code suivant utilise la GetBitmapBits
méthode pour créer une bitmap indépendante de l’appareil.
long size;
hr = pDet->GetBitmapBits(0, &size, 0, width, height);
if (SUCCEEDED(hr))
{
char *pBuffer = new char[size];
if (!pBuffer)
return E_OUTOFMEMORY;
try {
hr = pDet->GetBitmapBits(0, 0, pBuffer, width, height);
}
catch (...) {
delete [] pBuffer;
throw;
}
if (SUCCEEDED(hr))
{
BITMAPINFOHEADER *bmih = (BITMAPINFOHEADER*)pBuffer;
HDC hdcDest = GetDC(0);
// Find the address of the start of the image data.
void *pData = pBuffer + sizeof(BITMAPINFOHEADER);
// Note: In general a BITMAPINFOHEADER can include extra color
// information at the end, so calculating the offset to the image
// data is not generally correct. However, the IMediaDet interface
// always returns an RGB-24 image with no extra color information.
BITMAPINFO bmi;
ZeroMemory(&bmi, sizeof(BITMAPINFO));
CopyMemory(&(bmi.bmiHeader), bmih, sizeof(BITMAPINFOHEADER));
HBITMAP hBitmap = CreateDIBitmap(hdcDest, bmih, CBM_INIT,
pData, &bmi, DIB_RGB_COLORS);
}
delete[] pBuffer;
}
Configuration requise
Condition requise | Valeur |
---|---|
En-tête |
|
Bibliothèque |
|
Voir aussi