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 后, 检查 FrameBuffer0xdeadbeef 参数指向的缓冲区中的第一个 DWORD,以确定 CamProcessRawVideoFrameEx 是否成功地将视频帧从 RawFrameBuffer 参数指向的缓冲区复制到 FrameBuffer 参数指向的缓冲区中。

如果在传递给 USBCAMD_InitializeNewInterface 函数的 CamControlFlag 参数中设置了以下任一位,则不调用此函数:

USBCAMD_CamControlFlag_NoVideoRawProcessing

USBCAMD_CamControlFlag_NoStillRawProcessing

USBCAMD 在将原始帧传递到微型驱动程序之前清除流标头选项标志。 默认标志仅是关键帧。 如果相机微型驱动程序需要指示关键帧以外的任何内容,应适当地设置流标头选项标志。

原始 USBCAMD 不调用 CamProcessRawVideoFrameEx

此函数是可选的。

要求

   
目标平台 桌面
Header usbcamdi.h (包括 Usbcamdi.h)
IRQL PASSIVE_LEVEL