Share via


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)

Voir aussi

KSSTREAM_HEADER