Metode IMediaDet::GetBitmapBits
[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine , dan Pengambilan Audio/Video di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]
Catatan
[Tidak digunakan lagi. API ini bisa dihapus dari rilis Windows mendatang.]
Metode mengambil GetBitmapBits
bingkai video pada waktu media yang ditentukan. Bingkai yang dikembalikan selalu dalam format RGB 24-bit.
Sintaks
HRESULT GetBitmapBits(
double StreamTime,
long *pBufferSize,
char *pBuffer,
long Width,
long Height
);
Parameter
-
StreamTime
-
Waktu untuk mengambil bingkai video, dalam hitung detik.
-
pBufferSize
-
Menerima ukuran buffer yang diperlukan. Jika pBufferNULL, variabel menerima ukuran buffer yang diperlukan untuk mengambil bingkai. Jika pBuffer bukan NULL, parameter ini diabaikan.
-
pBuffer
-
Pointer ke buffer yang menerima struktur BITMAPINFOHEADER diikuti oleh bit DIB.
-
Lebar
-
Lebar gambar video, dalam piksel.
-
Tinggi
-
Tinggi gambar video, dalam piksel.
Mengembalikan nilai
Mengembalikan nilai HRESULT . Nilai yang mungkin termasuk yang berikut ini:
Menampilkan kode | Deskripsi |
---|---|
|
Berhasil. |
|
Tidak dapat menambahkan filter Sampel Grabber ke grafik. |
|
Memori tidak cukup. |
|
Kesalahan penunjuk NULL. |
|
Kesalahan tak terduga. |
|
Tipe media tidak valid. |
Keterangan
Sebelum memanggil metode ini, atur nama file dan streaming dengan memanggil IMediaDet::p ut_Filename dan IMediaDet::p ut_CurrentStream.
Untuk menentukan ukuran buffer yang diperlukan, panggil metode ini dengan pBuffer sama dengan NULL. Ukuran dikembalikan dalam variabel yang diacu oleh pBufferSize. Kemudian buat buffer dan panggil metode lagi, dengan pBuffer sama dengan alamat buffer. Ketika metode kembali, buffer berisi struktur BITMAPINFOHEADER diikuti oleh bitmap. Bitmap diskalakan ke dimensi yang ditentukan dalam parameter Lebar dan Tinggi .
Metode ini menempatkan detektor media ke dalam mode ambil bitmap. Setelah metode ini dipanggil, berbagai metode informasi aliran di IMediaDet tidak berfungsi, kecuali Anda membuat instans baru detektor media.
Catatan
File header Qedit.h tidak kompatibel dengan header Direct3D yang lebih baru dari versi 7.
Catatan
Untuk mendapatkan Qedit.h, unduh Microsoft Windows SDK Update untuk Windows Vista dan .NET Framework 3.0. Qedit.h tidak tersedia di Microsoft Windows SDK untuk Windows 7 dan .NET Framework 3.5 Service Pack 1.
Contoh
Kode berikut menggunakan GetBitmapBits
metode untuk membuat bitmap independen perangkat.
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;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Header |
|
Pustaka |
|
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk