struttura KS_FRAME_INFO (ksmedia.h)

La struttura KS_FRAME_INFO estende la struttura KSSTREAM_HEADER per i flussi video.

Sintassi

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;

Members

ExtendedHeaderSize

Specifica le dimensioni di questa struttura, in byte.

dwFrameFlags

Specifica i flag che indicano informazioni aggiuntive sul frame acquisito. Durante l'acquisizione, il minidriver imposta questo membro su uno dei valori seguenti definiti in ksmedia.h:

Contrassegno Significato
KS_VIDEO_FLAG_FRAME Indica un frame completo.
KS_VIDEO_FLAG_FIELD1 Indica il campo 1 di una sequenza di due campi.
KS_VIDEO_FLAG_FIELD2 Indica il campo 2 di una sequenza a due campi.
KS_VIDEO_FLAG_I_FRAME Indica che questo frame può essere completamente decodificato senza riferimenti ad altri fotogrammi.
KS_VIDEO_FLAG_P_FRAME Indica che si tratta di un frame stimato.
KS_VIDEO_FLAG_B_FRAME Indica che si tratta di un frame bidirezionale.

PictureNumber

Specifica un conteggio che rappresenta il numero di immagine corrente. Inizializzare o aggiornare questo valore alla transizione in KSSTATE_ACQUIRE.

DropCount

Specifica il numero di immagini non acquisite. Durante l'acquisizione, il minidriver imposta questo membro. Questo contatore deve essere incrementato ogni volta che un frame deve essere stato acquisito ma non lo era; questa condizione si verifica in genere quando non sono disponibili buffer durante l'acquisizione. Inizializzare o aggiornare questo valore alla transizione in KSSTATE_ACQUIRE.

hDirectDraw

Specifica l'handle in modalità utente in DirectDraw. Questo handle viene fornito solo al minidriver durante l'acquisizione in una superficie DirectDraw per scopi di anteprima o sovrapposizione.

hSurfaceHandle

Specifica l'handle in modalità utente per la superficie DirectDraw. Questo handle viene fornito solo al minidriver durante l'acquisizione in una superficie DirectDraw per scopi di anteprima o sovrapposizione.

DirectDrawRect

Specifica la parte della superficie DirectDraw bloccata. Questa è in genere l'intera superficie.

lSurfacePitch

Contiene il passo della superficie (noto anche come stride).

Reserved1

Riservato e non deve essere usato dal minidriver.

Reserved2

Riservato e non deve essere usato dal minidriver.

Reserved3

Riservato e non deve essere usato dal minidriver.

Reserved4

Riservato e non deve essere usato dal minidriver.

FrameCompletionNumber

Numero di sequenza di identificazione per il frame nella coda completata. Questo numero viene usato per verificare l'ordine dei fotogrammi appropriato. Quando questo valore è 0, il frame è stato annullato.

Questo membro è disponibile a partire da Windows 8.1.

Commenti

La struttura KS_FRAME_INFO consente di restituire informazioni sul frame acquisito, nonché un modo per passare gli handle di Microsoft DirectDraw usati durante l'acquisizione in una superficie DirectDraw.

Il conteggio dei membri PictureNumber rappresenta il conteggio dell'immagine corrente, che viene calcolato in uno dei due modi in base al dispositivo:

  • Misurare il tempo dall'avvio del flusso e dividere per la durata del frame. Questo metodo è appropriato per i dispositivi che non forniscono il proprio orologio. Ad esempio:

    PictureNumber = ElapsedTime / FrameDuration;
    
  • Sommare il numero di fotogrammi acquisiti e il conteggio dei fotogrammi eliminati. Questo metodo è appropriato per i dispositivi che forniscono il proprio orologio. Ad esempio:

    PictureNumber = FramesCaptured + FramesDropped;
    

Quando si calcola PictureNumber e DropCount, è importante usare la durata del fotogramma specificata all'apertura del flusso, che potrebbe non corrispondere necessariamente alla frequenza con cui il dispositivo sta effettivamente producendo immagini. Ad esempio, una fotocamera USB può produrre solo immagini a 7,5 fps, ma un client potrebbe aprire il flusso a 8 fps. In questo caso, tutti i calcoli devono usare il numero di 8 fps.

Per altre informazioni sull'aggiornamento di PictureNumber e DropCount , vedere Acquisizione di video.

Requisiti

Requisito Valore
Intestazione ksmedia.h (include Ksmedia.h)

Vedi anche

KSSTREAM_HEADER