Поделиться через


функция обратного вызова 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

Указывает количество USB-пакетов, полученных в RawFrameBuffer.

BytesReturned

Указатель на количество переданных байтов. Если во время обработки возникают какие-либо ошибки, мини-отвертка должна иметь значение 0, как описано в Поток данных использование изохронных каналов. Дополнительные сведения о том, как USBCAMD использует этот параметр, см. в разделе Примечания.

ActualRawFrameLength

Содержит длину фактического буфера, полученного от камеры. Это значение указывается в байтах.

StreamNumber

Указывает номер потока, с которым связан этот кадр.

Возвращаемое значение

CamProcessRawVideoFrameEx возвращает STATUS_SUCCESS или соответствующий код ошибки.

Комментарии

Перед тем как USBCAMD вызовет обратный вызов CamProcessRawVideoFrameEx мини-накопителя, он устанавливает для первого DWORD в буфере, на который указывает параметр FrameBuffer , значение 0xdeadbeef. После вызова обратного вызова USBCAMD camProcessRawVideoFrameEx мини-накопителя проверяет первый DWORD в буфере, на который указывает параметр FrameBuffer , для значения 0xdeadbeef , чтобы определить, успешно ли CamProcessRawVideoFrameEx скопировал видеокадр из буфера, на который указывает параметр RawFrameBuffer , в буфер, на который указывает параметр FrameBuffer .

Эта функция не вызывается, если в аргументе CamControlFlag , передаваемом функции USBCAMD_InitializeNewInterface , задан один из следующих битов:

USBCAMD_CamControlFlag_NoVideoRawProcessing

USBCAMD_CamControlFlag_NoStillRawProcessing

USBCAMD очищает флаг параметров заголовка потока перед передачей необработанного кадра в мини-диск. Флагом по умолчанию являются только ключевые кадры. Мини-диск камеры должен установить флаги параметров заголовка потока, если ему нужно указать что-либо, кроме ключевых кадров.

Исходный USBCAMD не вызывает CamProcessRawVideoFrameEx.

Эта функция является необязательной.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть usbcamdi.h (включая Usbcamdi.h)
IRQL PASSIVE_LEVEL