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) |