PCAM_PROCESS_RAW_FRAME_ROUTINE_EX回调函数 (usbcamdi.h)
相机微型驱动程序的 CamProcessRawVideoFrameEx 回调函数解码原始视频帧。
语法
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
)
{...}
参数
BusDeviceObject
指向 USB 中心创建的相机微型驱动程序设备对象的指针。
DeviceContext
指向相机微型驱动程序的设备上下文的指针。
FrameContext
指向微型驱动程序的帧上下文的指针。
FrameBuffer
指向接收最终处理的视频帧的缓冲区的指针。 有关 USBCAMD 如何使用此参数的详细信息,请参阅“备注”部分。
FrameLength
指定帧缓冲区(来自原始读取请求)的长度(以字节为单位)。
RawFrameBuffer
指向包含接收的 USB 数据包的缓冲区的指针。 有关 USBCAMD 如何使用此参数的详细信息,请参阅“备注”部分。
RawFrameLength
指定 RawFrameBuffer 的长度(以字节为单位)。
NumberOfPackets
指定 RawFrameBuffer收到的 USB 数据包数。
BytesReturned
指向传输的字节数的指针。 如果微型驱动程序在处理过程中遇到任何错误,则必须将其设置为零,如 使用异时序管道中所述。 有关 USBCAMD 如何使用此参数的详细信息,请参阅“备注”部分。
ActualRawFrameLength
包含从相机接收的实际缓冲区的长度。 此值以字节为单位指定。
StreamNumber
指示与此帧关联的流号。
返回值
CamProcessRawVideoFrameEx 返回STATUS_SUCCESS或适当的错误代码。
言论
在 USBCAMD 调用微型驱动程序的 CamProcessRawVideoFrameEx 回调之前,它将 FrameBuffer 参数指向的缓冲区中的第一个 DWORD 设置为值 0xdeadbeef。 调用微型驱动程序的 CamProcessRawVideoFrameEx 回调 USBCAMD 后,检查 FrameBuffer 参数指向的缓冲区中的第一个 DWORD,以确定值 0xdeadbeef 如果 CamProcessRawVideoFrameEx 成功将视频帧从 RawFrameBuffer 参数指向的缓冲区复制到 FrameBuffer 参数指向的缓冲区中。
如果在传递给 USBCAMD_InitializeNewInterface 函数的 CamControlFlag 参数中设置了以下任一位,则不调用此函数:
USBCAMD_CamControlFlag_NoVideoRawProcessing
USBCAMD_CamControlFlag_NoStillRawProcessing
USBCAMD 清除流标头选项标志,然后再将原始帧传递到微型驱动程序。 默认标志只是关键帧。 如果需要指示关键帧以外的任何内容,相机微型驱动程序应适当地设置流标头选项标志。
原始 USBCAMD 不调用 CamProcessRawVideoFrameEx。
此函数是可选的。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | usbcamdi.h (包括 Usbcamdi.h) |
IRQL | PASSIVE_LEVEL |