Partager 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:

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)

Voir aussi

KSSTREAM_HEADER