Struttura KSPROCESSPIN (ks.h)

La struttura KSPROCESSPIN descrive lo stato del processo di un pin specifico.

Sintassi

typedef struct _KSPROCESSPIN {
  PKSPIN            Pin;
  PKSSTREAM_POINTER StreamPointer;
  PKSPROCESSPIN     InPlaceCounterpart;
  PKSPROCESSPIN     DelegateBranch;
  PKSPROCESSPIN     CopySource;
  PVOID             Data;
  ULONG             BytesAvailable;
  ULONG             BytesUsed;
  ULONG             Flags;
  BOOLEAN           Terminate;
} KSPROCESSPIN, *PKSPROCESSPIN;

Members

Pin

Puntatore a una struttura KSPIN descritta dalla struttura KSPROCESSPIN. Tutto nella struttura fa riferimento a questo KSPIN.

StreamPointer

Puntatore a una struttura KSSTREAM_POINTER che punta al flusso di input nella posizione di input corrente o nel flusso di output nella posizione di output corrente. È possibile usare, ad esempio, i pin di output per stampare le informazioni sull'KSSTREAM_HEADER associato (ProcessPin-StreamPointer-StreamHeader-Flags>>>=...).

InPlaceCounterpart

Puntatore a una struttura KSPROCESSPIN. Se questo KSPROCESSPIN non fa parte di una trasformazione inplace , AVStream imposta InPlaceCounterpart su NULL. Se questo KSPROCESSPIN è l'input di una trasformazione inplace, InPlaceCounterpart punta al pin del processo di output per la trasformazione. Se questo KSPROCESSPIN è l'output di una trasformazione inplace, InPlaceCounterpart punta al pin del processo di input per la trasformazione.

DelegateBranch

Puntatore a una struttura KSPROCESSPIN. Se i fotogrammi che escono da questo KSPROCESSPIN vengono suddivisi e inviati a più pin sink e la suddivisione non causa una copia dei dati, ovvero la suddivisione invia i fotogrammi in modo di sola lettura e tutte le istanze del pin di divisione si trovano nella stessa pipe), DelegateBranch punta alla prima istanza del pin del processo. Il splitter gestisce automaticamente qualsiasi pin di processo con un delegato non NULLBranch.

CopySource

Puntatore a una struttura KSPROCESSPIN. Se i fotogrammi che escono da questo pin di processo vengono suddivisi e inviati a più pin sink in modo che causano una copia dei dati, ovvero uno dei filtri downstream sta modificando il frame di dati usando una trasformazione sul posto, CopySource punta al pin del processo da cui è stato copiato il frame. Il splitter gestisce automaticamente qualsiasi pin di processo con un valore CopySource non NULL.

Data

Puntatore a un buffer. Se il pin descritto da questa voce di processo è un pin di input, i dati puntano al byte successivo disponibile per l'input dei dati. Se il pin descritto da questa voce di processo è un pin di output, i dati puntano a un buffer di output in cui vengono inseriti i dati elaborati.

BytesAvailable

Questo membro specifica il numero di byte di dati disponibili in Dati.

BytesUsed

Questo membro specifica il numero di byte di questo frame di dati usato dalla funzione di elaborazione. I driver AVStream devono impostare questo membro per aggiornare la quantità di lettura o scrittura.

Flags

Questo membro contiene una copia dei flag dalla struttura di KSSTREAM_HEADER pertinente, se questo KSPROCESSPIN è un pin di input.

Terminate

Questo membro indica se il frame di dati corrente deve essere inviato downstream dopo il completamento dell'invio del processo. Se TRUE, il frame viene inviato downstream anche se tutti i dati non sono stati utilizzati. Se FALSE, il frame non viene rilasciato finché non vengono usati tutti i dati.

Commenti

La struttura KSPROCESSPIN viene usata nel modello di elaborazione incentrato sui filtri . È possibile usare questa struttura per accedere ai dati in un pin di input specifico o per scrivere dati elaborati in un pin di output.

Solo i client incentrati sui filtri usano i pin di processo. Inoltre, i pin di processo che hanno un delegato nonNULLBranch o un copysource non NULL in genere non sono di preoccupazione per il client. Il splitter gestisce automaticamente i pin di processo con questi puntatori.

La maggior parte dei client riguarda i membri Pin, Data, BytesAvailable, ByteUsed, Flag e Termina. I dati possono essere letti dal flusso o scritti nel flusso tramite il membro Dati ; ByteDisponibili indica al client il numero di byte di dati disponibili nel frame di dati corrente (buffer) a cui punta Dati . Poiché il minidriver client legge da o scrive nel flusso, è consigliabile aggiornare ByteUsed per riflettere il numero di byte di dati utilizzati. Il flag Termina può essere impostato se il minidriver viene eseguito con il frame corrente nonostante il fatto che BytesUsed non è uguale a ByteDisponi. Dopo l'uscita del minidriver, i puntatori sono avanzati e i fotogrammi vengono completati in base alle esigenze.

Requisiti

   
Client minimo supportato Disponibile in Microsoft Windows XP e versioni successive e in Microsoft DirectX 8.0 e versioni successive.
Intestazione ks.h (include Ks.h)

Vedi anche

KSPIN

KSPROCESSPIN_INDEXENTRY

KSSTREAM_HEADER

KSSTREAM_POINTER