Interfaccia IAMPushSource (strmif.h)

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

L'interfaccia IAMPushSource sincronizza un grafico di filtro che esegue il rendering di un'origine dinamica. Un'origine live è un'origine che trasmette i dati in tempo reale, ad esempio un dispositivo di acquisizione o una trasmissione di rete.

I filtri di origine che eseguono lo streaming di dati live devono esporre questa interfaccia sui relativi pin di output. In genere, le applicazioni non devono chiamare i metodi su questa interfaccia; Usare invece l'interfaccia IAMGraphStreams .

Ereditarietà

L'interfaccia IAMPushSource eredita da IAMLatency. IAMPushSource include anche questi tipi di membri:

Metodi

L'interfaccia IAMPushSource include questi metodi.

 
IAMPushSource::GetMaxStreamOffset

Il metodo GetMaxStreamOffset recupera l'offset massimo del flusso che il filtro può supportare.
IAMPushSource::GetPushSourceFlags

Il metodo GetPushSourceFlags recupera una combinazione di flag che descrivono il comportamento del filtro.
IAMPushSource::GetStreamOffset

Il metodo GetStreamOffset recupera l'offset utilizzato dal filtro durante la generazione di timestamp.
IAMPushSource::SetMaxStreamOffset

Il metodo SetMaxStreamOffset specifica l'offset del flusso che sarà consentito nel grafico del filtro.
IAMPushSource::SetPushSourceFlags

Il metodo SetPushSourceFlags imposta flag che specificano il comportamento del filtro. Attualmente, le applicazioni non devono chiamare questo metodo, perché i flag di richiesta non sono supportati e un'applicazione non deve eseguire l'override dei flag impostati dal filtro.
IAMPushSource::SetStreamOffset

Il metodo SetStreamOffset imposta l'offset per i timestamp generati da questo filtro.

Commenti

Filter Graph Manager usa i metodi in questa interfaccia per risolvere due problemi che si verificano comunemente durante il rendering delle origini live:

  • Latenza: quando un grafico di filtro include più origini attive, le origini hanno spesso latenze diverse, che possono causare la disconnessità dalla sincronizzazione. Ad esempio, se l'acquisizione audio ha un tempo di latenza maggiore rispetto all'acquisizione video, l'audio si ritarderà dietro il video, a meno che il grafico non compensi la differenza.
  • Corrispondenza frequenza: quando un filtro renderer è connesso a un'origine dinamica, deve modificare la frequenza di utilizzo dei dati in modo che corrisponda alla frequenza di produzione del filtro di origine. In caso contrario, potrebbero esserci lacune nei dati (se il renderer viene eseguito più velocemente dell'origine) o i dati potrebbero essere eliminati (se l'origine viene eseguita più velocemente).
Per correggere la latenza, il grafico del filtro chiama IAMLatency::GetLatency in ogni pin di output che espone l'interfaccia IAMPushSource e determina la latenza massima nel grafico. Chiama quindi IAMPushSource::SetStreamOffset su qualsiasi filtro con meno della latenza massima, in modo da regolare i timestamp generati dall'offset corretto.

Per eseguire la corrispondenza della frequenza, il grafico dei filtri deve determinare se il filtro del renderer può corrispondere alle frequenze di clock con il filtro di origine. Il metodo IAMPushSource::GetPushSourceFlags restituisce un set di flag che indicano se è sicuro che il renderer corrisponda alle frequenze con l'origine.

Questi problemi non influiscono sull'acquisizione in un file. Il filtro File Writer si basa sui timestamp degli esempi in ingresso per scrivere correttamente il file; i flussi vengono quindi sincronizzati durante la riproduzione. Per quanto riguarda la corrispondenza della frequenza, i dati vengono sempre scritti nel file il più velocemente possibile.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione strmif.h (include Dshow.h)

Vedi anche

IAMLatency