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 :
Indicateur | 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’une image aurait dû être capturée, mais ne l’était pas ; cette condition se produit généralement lorsqu’aucune mémoire tampon n’était 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 pour la surface 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 qui a été verrouillée. Il s’agit normalement de la surface entière.
lSurfacePitch
Contient un pas 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 identifiant le cadre dans la file d’attente terminée. Ce nombre est utilisé pour vérifier l’ordre d’image approprié. Lorsque cette valeur est 0, l’image a été annulée.
Ce membre est disponible à partir de Windows 8.1.
Remarques
La structure KS_FRAME_INFO permet de retourner des informations sur le cadre capturé, ainsi qu’un moyen de passer les poignées Microsoft DirectDraw utilisées lors de la capture sur 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 par la durée de l’image. Cette méthode est appropriée pour les appareils qui ne fournissent pas leur propre horloge. Par exemple :
PictureNumber = ElapsedTime / FrameDuration;
Ajoutez ensemble 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;
Lors du calcul de PictureNumber et DropCount, il est important d’utiliser la durée d’image spécifiée lors de l’ouverture du flux, qui peut ne pas nécessairement correspondre à la vitesse à laquelle l’appareil produit réellement des images. Par exemple, une caméra USB ne peut produire des images qu’à 7,5 fps, mais un client peut ouvrir le flux à 8 i/s. Dans ce cas, tous les calculs doivent utiliser le nombre de 8 fps.
Pour plus d’informations sur la mise à jour de PictureNumber et DropCount, consultez Capture de vidéo.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | ksmedia.h (inclure Ksmedia.h) |