IMediaDet::GetBitmapBits-Methode
Hinweis
[Veraltet. Diese API wird möglicherweise aus zukünftigen Releases von Windows.]
Die GetBitmapBits -Methode ruft einen Videoframe zur angegebenen Medienzeit ab. Der zurückgegebene Frame hat immer das 24-Bit-RGB-Format.
Syntax
HRESULT GetBitmapBits(
double StreamTime,
long *pBufferSize,
char *pBuffer,
long Width,
long Height
);
Parameter
-
StreamTime
-
Die Zeit, zu der der Videoframe abgerufen werden soll (in Sekunden).
-
pBufferSize
-
Empfängt die erforderliche Puffergröße. Wenn pBuffer NULL ist, erhält die Variable die Größe des Puffers, der zum Abrufen des Frames erforderlich ist. Wenn pBuffer nicht NULL ist, wird dieser Parameter ignoriert.
-
pBuffer
-
Zeiger auf einen Puffer, der eine BITMAPINFOHEADER-Struktur gefolgt von den DIB-Bits empfängt.
-
Width
-
Breite des Videobilds in Pixel.
-
Height
-
Höhe des Videobilds in Pixel.
Rückgabewert
Gibt einen HRESULT-Wert zurück. Folgende Werte sind möglich:
| Rückgabecode | Beschreibung |
|---|---|
|
Erfolg. |
|
Der Beispielgrabfilter konnte dem Diagramm nicht hinzugefügt werden. |
|
Nicht genügend Arbeitsspeicher. |
|
NULL-Zeigerfehler. |
|
Unerwarteter Fehler. |
|
Ungültiger Medientyp. |
Hinweise
Legen Sie vor dem Aufrufen dieser Methode den Dateinamen und stream fest, indem Sie IMediaDet::p ut _ Filename und IMediaDet::p ut _ CurrentStream aufrufen.
Um die größe des erforderlichen Puffers zu bestimmen, rufen Sie diese Methode mit pBuffer gleich NULL auf. Die Größe wird in der Variablen zurückgegeben, auf die pBufferSize zeigt. Erstellen Sie dann den Puffer, und rufen Sie die -Methode erneut auf, während pBuffer der Adresse des Puffers entspricht. Wenn die Methode zurückgegeben wird, enthält der Puffer eine BITMAPINFOHEADER-Struktur gefolgt von der Bitmap. Die Bitmap wird auf die in den Parametern Width und Height angegebenen Dimensionen skaliert.
Diese Methode versetzt die Medienerkennung in den Bitmap-Greifmodus. Sobald diese Methode aufgerufen wurde, funktionieren die verschiedenen Streaminformationsmethoden in IMediaDet nicht mehr, es sei denn, Sie erstellen eine neue Instanz der Medienerkennung.
Hinweis
Die Headerdatei Qedit.h ist nicht mit Direct3D-Headern nach Version 7 kompatibel.
Hinweis
Um Qedit.h zu erhalten, laden Sie das Microsoft Windows SDK-Update für Windows Vista und .NET Framework 3.0 herunter. Qedit.h ist im Microsoft Windows SDK für Windows 7 und .NET Framework 3.5 Service Pack 1 nicht verfügbar.
Beispiele
Im folgenden Code wird die GetBitmapBits -Methode verwendet, um eine geräteunabhängige Bitmap zu erstellen.
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;
}
Anforderungen
| Anforderung | Wert |
|---|---|
| Header |
|
| Bibliothek |
|