PCAM_PROCESS_RAW_FRAME_ROUTINE_EX callback function (usbcamdi.h)

A camera minidriver's CamProcessRawVideoFrameEx callback function decodes a raw video frame.

Syntax

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
)
{...}

Parameters

BusDeviceObject

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

DeviceContext

Pointer to the camera minidriver's device context.

FrameContext

Pointer to the minidriver's frame context.

FrameBuffer

Pointer to the buffer that receives the final processed video frame. See the Remarks section for more information about how USBCAMD uses this parameter.

FrameLength

Specifies the length of the frame buffer (from the original read request) in bytes.

RawFrameBuffer

Pointer to the buffer containing the received USB packets. See the Remarks section for more information about how USBCAMD uses this parameter.

RawFrameLength

Specifies the length of RawFrameBuffer in bytes.

NumberOfPackets

Specifies the number of USB packets received into RawFrameBuffer.

BytesReturned

Pointer to the number of bytes transferred. The minidriver must set this to zero if it encounters any errors during processing, as described in Data Flow Using Isochronous Pipes. See the Remarks section for more information about how USBCAMD uses this parameter.

ActualRawFrameLength

Contains the length of the actual buffer received from the camera. This value is specified in bytes.

StreamNumber

Indicates the stream number with which this frame is associated with.

Return value

CamProcessRawVideoFrameEx returns STATUS_SUCCESS or an appropriate error code.

Remarks

Before USBCAMD calls the minidriver's CamProcessRawVideoFrameEx callback, it sets the first DWORD in the buffer pointed to by the FrameBuffer parameter to the value 0xdeadbeef. After calling the minidriver's CamProcessRawVideoFrameEx callback USBCAMD checks the first DWORD in the buffer pointed to by the FrameBuffer parameter for the value 0xdeadbeef to determine if CamProcessRawVideoFrameEx successfully copied the video frame from the buffer pointed to by the RawFrameBuffer parameter into the buffer pointed to by the FrameBuffer parameter.

This function is not called if either one of the following bits are set in the CamControlFlag argument passed to the USBCAMD_InitializeNewInterface function:

USBCAMD_CamControlFlag_NoVideoRawProcessing

USBCAMD_CamControlFlag_NoStillRawProcessing

USBCAMD clears the stream header options flag before passing the raw frame to the minidriver. The default flag is key frames only. The camera minidriver should set the stream header option flags appropriately if it needs to indicate anything other than key frames.

The original USBCAMD does not call CamProcessRawVideoFrameEx.

This function is optional.

Requirements

Requirement Value
Target Platform Desktop
Header usbcamdi.h (include Usbcamdi.h)
IRQL PASSIVE_LEVEL