CamProcessUSBPacketEx routine

A camera minidriver's CamProcessUSBPacketEx callback function processes a USB packet.

Syntax


PCAM_PROCESS_PACKET_ROUTINE_EX CamProcessUSBPacketEx;

ULONG CamProcessUSBPacketEx(
   PDEVICE_OBJECT              BusDeviceObject,
   PVOID                       DeviceContext,
   PVOID                       CurrentFrameContext,
   PUSBD_ISO_PACKET_DESCRIPTOR SyncPacket,
   PVOID                       SyncBuffer,
   PUSBD_ISO_PACKET_DESCRIPTOR DataPacket,
   PVOID                       DataBuffer,
   PBOOLEAN                    FrameComplete,
   PULONG                      PacketFlag,
   PULONG                      ValidDataOffset
)
{ ... }

Parameters

BusDeviceObject

Pointer to the camera minidriver's device object created by the USB hub.

DeviceContext

Pointer to the camera minidriver's device context.

CurrentFrameContext

Pointer to the camera minidriver's frame context.

SyncPacket

Pointer to a USBD_ISO_PACKET_DESCRIPTOR structure from the sync pipe. This value is NULL if the interface has only one pipe.

SyncBuffer

Pointer to the data for the SyncPacket.

DataPacket

Specifies the isochronous packet descriptor from data pipe.

DataBuffer

Pointer to DataPacket.

FrameComplete

Pointer to a BOOLEAN value that the camera minidriver sets to indicate whether this is the first data packet for a new video frame.

PacketFlag

Pointer to a value that the minidriver sets to indicate the contents of the current frame. It should be set to one of the following values:

FlagMeaning

USBCAMD_PROCESSPACKETEX_DropFrame

The current frame is unsalvageable. The read IRP should be recycled.

USBCAMD_PROCESSPACKETEX_NextFrameIsStill

The frame is a still image.

USBCAMD_PROCESSPACKETEX_CurrentFrameIsStill

The current frame is for the still pin.

 

ValidDataOffset

Pointer to a ULONG value that indicates an offset from the beginning of the packet. USBCAMD should start the copy from this offset. This eliminates the extra buffer copy in the case of an in-band signal. If the camera is not using in-band signaling, ValidDataOffset should be set to zero.

Return value

This function returns the number of bytes that should be copied.

Remarks

The minidriver should complete its CamProcessUSBPacketEx function as quickly as possible. Image processing should be deferred to the CamProcessRawVideoFrameEx function.

This callback function is used with isochronous pipes only (video or still streaming).

The original USBCAMD does not call CamProcessUSBPacketEx.

This function is optional.

Requirements

Target platform

Desktop

Header

Usbcamdi.h (include Usbcamdi.h)

IRQL

DISPATCH_LEVEL

See also

USBD_ISO_PACKET_DESCRIPTOR
CamProcessRawVideoFrameEx

 

 

Send comments about this topic to Microsoft

Show: