PCAM_PROCESS_RAW_FRAME_ROUTINE_EX fonction de rappel (usbcamdi.h)
La fonction de rappel CamProcessRawVideoFrameEx d’un minidriver d’appareil photo décode une image vidéo brute.
Syntaxe
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
)
{...}
Paramètres
BusDeviceObject
Pointeur vers l’objet d’appareil du minidriver de l’appareil photo créé par le hub USB.
DeviceContext
Pointeur vers le contexte d’appareil du minidriver de l’appareil photo.
FrameContext
Pointeur vers le contexte du cadre du minidriver.
FrameBuffer
Pointeur vers la mémoire tampon qui reçoit la trame vidéo finale traitée. Pour plus d’informations sur la façon dont USBCAMD utilise ce paramètre, consultez la section Remarques.
FrameLength
Spécifie la longueur de la mémoire tampon de frame (à partir de la demande de lecture d’origine) en octets.
RawFrameBuffer
Pointeur vers la mémoire tampon contenant les paquets USB reçus. Pour plus d’informations sur la façon dont USBCAMD utilise ce paramètre, consultez la section Remarques.
RawFrameLength
Spécifie la longueur de RawFrameBuffer en octets.
NumberOfPackets
Spécifie le nombre de paquets USB reçus dans RawFrameBuffer.
BytesReturned
Pointeur vers le nombre d’octets transférés. Le minidriver doit le définir sur zéro s’il rencontre des erreurs pendant le traitement, comme décrit dans Data Flow Utilisation de canaux isochronous. Pour plus d’informations sur la façon dont USBCAMD utilise ce paramètre, consultez la section Remarques.
ActualRawFrameLength
Contient la longueur de la mémoire tampon réelle reçue de la caméra. Cette valeur est spécifiée en octets.
StreamNumber
Indique le numéro de flux auquel ce frame est associé.
Valeur retournée
CamProcessRawVideoFrameEx retourne STATUS_SUCCESS ou un code d’erreur approprié.
Remarques
Avant qu’USBCAMD appelle le rappel CamProcessRawVideoFrameEx du minidriver, il définit le premier DWORD de la mémoire tampon vers lequel pointe le paramètre FrameBuffer sur la valeur 0xdeadbeef. Après avoir appelé le rappel CamProcessRawVideoFrameEx du minidriver, USBCAMD vérifie le premier DWORD dans la mémoire tampon vers lequel pointe le paramètre FrameBuffer pour la valeur 0xdeadbeef afin de déterminer si CamProcessRawVideoFrameEx a correctement copié l’image vidéo de la mémoire tampon pointée par le paramètre RawFrameBuffer dans la mémoire tampon pointée par le paramètre FrameBuffer .
Cette fonction n’est pas appelée si l’un des bits suivants est défini dans l’argument CamControlFlag passé à la fonction USBCAMD_InitializeNewInterface :
USBCAMD_CamControlFlag_NoVideoRawProcessing
USBCAMD_CamControlFlag_NoStillRawProcessing
USBCAMD efface l’indicateur d’options d’en-tête de flux avant de passer le cadre brut au minidriver. L’indicateur par défaut est les images clés uniquement. Le minidriver de la caméra doit définir les indicateurs d’option d’en-tête de flux de manière appropriée s’il doit indiquer autre chose que des images clés.
L’USBCAMD d’origine n’appelle pas CamProcessRawVideoFrameEx.
Cette fonction est facultative.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | usbcamdi.h (incluez Usbcamdi.h) |
IRQL | PASSIVE_LEVEL |