PCAM_PROCESS_RAW_FRAME_ROUTINE_EX fungsi panggilan balik (usbcamdi.h)

Fungsi panggilan balik CamProcessRawVideoFrameEx kamera minidriver mendekode bingkai video mentah.

Sintaks

PCAM_PROCESS_RAW_FRAME_ROUTINE_EX PcamProcessRawFrameRoutineEx;

NTSTATUS PcamProcessRawFrameRoutineEx(
  PDEVICE_OBJECT BusDeviceObject,
  PVOID DeviceContext,
  PVOID FrameContext,
  PVOID FrameBuffer,
  ULONG FrameLength,
  PVOID RawFrameBuffer,
  ULONG RawFrameLength,
  ULONG NumberOfPackets,
  PULONG BytesReturned,
  ULONG ActualRawFrameLength,
  ULONG StreamNumber
)
{...}

Parameter

BusDeviceObject

Arahkan ke objek perangkat minidriver kamera yang dibuat oleh hub USB.

DeviceContext

Arahkan ke konteks perangkat minidriver kamera.

FrameContext

Arahkan ke konteks bingkai minidriver.

FrameBuffer

Arahkan ke buffer yang menerima bingkai video yang diproses akhir. Lihat bagian Keterangan untuk informasi selengkapnya tentang cara USBCAMD menggunakan parameter ini.

FrameLength

Menentukan panjang buffer bingkai (dari permintaan baca asli) dalam byte.

RawFrameBuffer

Arahkan ke buffer yang berisi paket USB yang diterima. Lihat bagian Keterangan untuk informasi selengkapnya tentang cara USBCAMD menggunakan parameter ini.

RawFrameLength

Menentukan panjang RawFrameBuffer dalam byte.

NumberOfPackets

Menentukan jumlah paket USB yang diterima ke RawFrameBuffer.

BytesReturned

Arahkan ke jumlah byte yang ditransfer. Minidriver harus mengatur ini ke nol jika mengalami kesalahan selama pemrosesan, seperti yang dijelaskan dalam Aliran Data Menggunakan Pipa Isochronous. Lihat bagian Keterangan untuk informasi selengkapnya tentang cara USBCAMD menggunakan parameter ini.

ActualRawFrameLength

Berisi panjang buffer aktual yang diterima dari kamera. Nilai ini ditentukan dalam byte.

StreamNumber

Menunjukkan nomor aliran yang dikaitkan dengan bingkai ini.

Nilai kembali

CamProcessRawVideoFrameEx mengembalikan STATUS_SUCCESS atau kode kesalahan yang sesuai.

Keterangan

Sebelum USBCAMD memanggil panggilan balik CamProcessRawVideoFrameEx minidriver, ia mengatur DWORD pertama dalam buffer yang diarahkan oleh parameter FrameBuffer ke nilai 0xdeadbeef. Setelah memanggil CamProcessRawVideoFrameEx callback minidriver USBCAMD memeriksa DWORD pertama dalam buffer yang diarahkan oleh parameter FrameBuffer untuk nilai yang 0xdeadbeef tentukan jika CamProcessRawVideoFrameEx berhasil menyalin bingkai video dari buffer yang diarahkan oleh parameter RawFrameBuffer ke dalam buffer yang diarahkan oleh parameter FrameBuffer .

Fungsi ini tidak dipanggil jika salah satu bit berikut diatur dalam argumen CamControlFlag yang diteruskan ke fungsi USBCAMD_InitializeNewInterface :

USBCAMD_CamControlFlag_NoVideoRawProcessing

USBCAMD_CamControlFlag_NoStillRawProcessing

USBCAMD menghapus bendera opsi header stream sebelum meneruskan bingkai mentah ke minidriver. Bendera default hanya bingkai kunci. Minidriver kamera harus mengatur bendera opsi header stream dengan tepat jika perlu menunjukkan apa pun selain bingkai kunci.

USBCAMD asli tidak memanggil CamProcessRawVideoFrameEx.

Fungsi ini bersifat opsional.

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header usbcamdi.h (termasuk Usbcamdi.h)
IRQL PASSIVE_LEVEL