structure KS_FRAME_INFO (ksmedia.h)
La structure KS_FRAME_INFO étend la structure KSSTREAM_HEADER pour les flux vidéo.
Syntaxe
typedef struct tagKS_FRAME_INFO {
ULONG ExtendedHeaderSize;
DWORD dwFrameFlags;
LONGLONG PictureNumber;
LONGLONG DropCount;
HANDLE hDirectDraw;
HANDLE hSurfaceHandle;
RECT DirectDrawRect;
union {
LONG lSurfacePitch;
DWORD Reserved1;
};
DWORD Reserved2;
union {
struct {
DWORD Reserved3;
DWORD Reserved4;
};
ULONGLONG FrameCompletionNumber;
};
} KS_FRAME_INFO, *PKS_FRAME_INFO;
Membres
ExtendedHeaderSize
Spécifie la taille de cette structure, en octets.
dwFrameFlags
Spécifie des indicateurs indiquant des informations supplémentaires sur le cadre capturé. Pendant la capture, le minidriver définit ce membre sur l’une des valeurs suivantes définies dans ksmedia.h:
Drapeau | Signification |
---|---|
KS_VIDEO_FLAG_FRAME | Indique un cadre complet. |
KS_VIDEO_FLAG_FIELD1 | Indique le champ 1 d’une séquence à deux champs. |
KS_VIDEO_FLAG_FIELD2 | Indique le champ 2 d’une séquence à deux champs. |
KS_VIDEO_FLAG_I_FRAME | Indique que cette trame peut être entièrement décodée sans référence à d’autres images. |
KS_VIDEO_FLAG_P_FRAME | Indique qu’il s’agit d’une trame prédite. |
KS_VIDEO_FLAG_B_FRAME | Indique qu’il s’agit d’un cadre bidirectionnel. |
PictureNumber
Spécifie un nombre représentant le numéro d’image actuel. Initialisez ou mettez à jour cette valeur lors de la transition vers KSSTATE_ACQUIRE.
DropCount
Spécifie le nombre d’images qui n’ont pas été capturées. Pendant la capture, le minidriver définit ce membre. Ce compteur doit être incrémenté chaque fois qu’un cadre doit avoir été capturé, mais pas ; cette condition se produit généralement lorsqu’aucune mémoire tampon n’a été disponible pendant la capture. Initialisez ou mettez à jour cette valeur lors de la transition vers KSSTATE_ACQUIRE.
hDirectDraw
Spécifie le handle en mode utilisateur pour DirectDraw. Ce handle est fourni uniquement au minidriver lors de la capture sur une surface DirectDraw à des fins d’aperçu ou de superposition.
hSurfaceHandle
Spécifie le handle en mode utilisateur sur l’aire DirectDraw. Ce handle est fourni uniquement au minidriver lors de la capture sur une surface DirectDraw à des fins d’aperçu ou de superposition.
DirectDrawRect
Spécifie la partie de la surface DirectDraw verrouillée. Il s’agit normalement de la surface entière.
lSurfacePitch
Contient l’emplacement de surface (également appelé stride).
Reserved1
Réservé et ne doit pas être utilisé par le minidriver.
Reserved2
Réservé et ne doit pas être utilisé par le minidriver.
Reserved3
Réservé et ne doit pas être utilisé par le minidriver.
Reserved4
Réservé et ne doit pas être utilisé par le minidriver.
FrameCompletionNumber
Numéro de séquence d’identification pour le frame dans la file d’attente terminée. Ce nombre est utilisé pour vérifier l’ordre de trame approprié. Lorsque cette valeur est 0, la trame a été annulée.
Ce membre est disponible à partir de Windows 8.1.
Remarques
La structure KS_FRAME_INFO permet de renvoyer des informations sur le cadre capturé, ainsi qu’un moyen de passer des handles Microsoft DirectDraw utilisés lors de la capture à une surface DirectDraw.
Le nombre de membres PictureNumber représente le nombre de l’image actuelle, qui est calculé de l’une des deux manières en fonction de l’appareil :
Mesurez le temps écoulé depuis le démarrage du flux et divisez-le par la durée de l’image. Cette méthode convient aux appareils qui ne fournissent pas leur propre horloge. Par exemple:
PictureNumber = ElapsedTime / FrameDuration;
Ajoutez le nombre d’images capturées et le nombre d’images supprimées. Cette méthode est appropriée pour les appareils qui fournissent leur propre horloge. Par exemple:
PictureNumber = FramesCaptured + FramesDropped;
Lorsque vous calculez PictureNumber et DropCount, il est important d’utiliser la durée d’image spécifiée lors de l’ouverture du flux, ce qui peut ne pas nécessairement correspondre au taux auquel l’appareil produit réellement des images. Par exemple, une caméra USB peut uniquement produire des images à 7,5 fps, mais un client peut ouvrir le flux à 8 fps. Dans ce cas, tous les calculs doivent utiliser le nombre de 8 fps.
Pour plus d’informations sur la mise à jour PictureNumber et DropCount consultez capture de vidéo.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | ksmedia.h (include Ksmedia.h) |