Condividi tramite


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;

Membri

Pin

Puntatore a una struttura KSPIN descritta dalla struttura KSPROCESSPIN. Tutto nella struttura si riferisce 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. Può essere usato, ad esempio, dai pin di output per stampare le informazioni sul 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 divisione non causa una copia dei dati (ovvero la divisione invia i fotogrammi in modo di sola lettura e tutte le istanze del pin diviso si trovano nella stessa pipe), DelegateBranch punta alla prima istanza del pin del processo. Il separatore gestisce automaticamente qualsiasi pin di processo con unNULLDelegateBranch.

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 da causare 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 fotogramma. Il componente di divisione gestisce automaticamente qualsiasi pin di processo con unNULLCopySource.

Data

Puntatore a un buffer. Se il pin descritto da questa voce di processo è un pin di input, Data punta al byte successivo disponibile di dati da immettere. Se il pin descritto da questa voce di processo è un pin di output, Data punta a un buffer di output in cui vengono inseriti i dati elaborati.

BytesAvailable

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

BytesUsed

Questo membro specifica il numero di byte di questo frame di dati utilizzato dalla funzione di processo. 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 a valle al termine 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 utilizzati tutti i dati.

Osservazioni

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

Solo i client incentrati sui filtri usano pin di processo. Inoltre, i pin di processo che hanno unNULLDelegateBranch o unNULLCopySource in genere non sono preoccupanti per il client. Il separatore gestisce automaticamente i pin di processo con questi puntatori.

La maggior parte dei client riguarda i membri Pin, Data, BytesAvailable, Byteused, flag e Terminate. I dati possono essere letti dal flusso o scritti nel flusso tramite il membro data; byte Disponibili indica al client il numero di byte di dati disponibili nel frame di dati corrente (buffer) a cui dati punta. Quando il minidriver client legge o scrive nel flusso, byteusi deve essere aggiornato per riflettere il numero di byte di dati utilizzati. Il flag Termina può essere impostato se il minidriver viene eseguito con il fotogramma corrente, nonostante il fatto che ByteUsed non sia uguale a ByteAvailable. Dopo che il minidriver esce dall'invio di elaborazione, i puntatori sono avanzati e i fotogrammi vengono completati in base alle esigenze.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile in Microsoft Windows XP e nei sistemi operativi successivi e in Microsoft DirectX 8.0 e versioni successive.
intestazione ks.h (include Ks.h)

Vedere anche

KSPIN

KSPROCESSPIN_INDEXENTRY

KSSTREAM_HEADER

KSSTREAM_POINTER