Condividi tramite


Classe CMediaSample

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine 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, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

gerarchia di classi cmediasample

La CMediaSample classe definisce un esempio multimediale che supporta l'interfaccia IMediaSample2 . L'esempio multimediale contiene un puntatore a un buffer di memoria e varie proprietà archiviate come variabili membro protette.

Gli esempi multimediali vengono creati dagli allocatori, derivati dalla classe CBaseAllocator . Il CMediaSample costruttore riceve un puntatore a un buffer allocato, insieme alle dimensioni del buffer. Altre proprietà sono in genere impostate e recuperate tramite metodi di interfaccia IMediaSample .

Il ciclo di vita di un esempio multimediale differisce da quello della maggior parte degli oggetti COM:

  • L'allocatore contiene un elenco di campioni gratuiti. Quando un filtro richiede un nuovo esempio, chiama il metodo IMemAllocator dell'allocatore::GetBuffer . L'allocatore recupera un campione dall'elenco gratuito, incrementa il conteggio dei riferimenti dell'esempio e restituisce un puntatore all'esempio.
  • Dopo aver completato il filtro con l'esempio, chiama il metodo IUnknown::Release nell'esempio. A differenza della maggior parte degli oggetti, l'esempio non viene eliminato quando il numero di riferimenti raggiunge zero. Chiama invece il metodo IMemAllocator::ReleaseBuffer nell'allocatore e l'allocatore restituisce l'esempio all'elenco gratuito.
  • L'allocatore non elimina gli esempi finché non viene chiamato il metodo IMemAllocator::D ecommit .
Variabili membro protette Descrizione
m_dwFlags Flag di proprietà di esempio.
m_dwTypeSpecificFlags Flag specifici del tipo.
m_pBuffer Puntatore al buffer di memoria contenente i dati multimediali.
m_lActual Lunghezza dei dati validi nel buffer, in byte.
m_cbBuffer Dimensioni del buffer, in byte.
m_pAllocator Puntatore all'allocatore che ha creato questo esempio.
m_pNext Puntatore all'esempio successivo nell'elenco di campioni dell'allocatore.
m_Start Ora di inizio di esempio.
m_End Ora di fine esempio.
m_MediaStart Ora di inizio multimediale.
m_MediaEnd Tempo di arresto multimediale.
m_pMediaType Puntatore al tipo di supporto, se il tipo è cambiato dall'esempio precedente nel flusso di dati.
m_dwStreamId Identificatore di flusso.
Variabili membro pubbliche Descrizione
m_cRef Numero di riferimenti.
Metodi pubblici Descrizione
CMediaSample Metodo costruttore.
~ CMediaSample Metodo distruttore. Virtuale.
SetPointer Imposta il puntatore sul buffer di memoria.
Metodi IMediaSample Descrizione
GetPointer Recupera un puntatore di lettura/scrittura nel buffer.
GetSize Recupera le dimensioni del buffer.
GetTime Recupera i tempi di flusso in cui questo esempio deve iniziare e terminare.
Settime Imposta i tempi di flusso in cui questo esempio deve iniziare e terminare.
IsSyncPoint Determina se l'inizio dell'esempio è un punto di sincronizzazione.
SetSyncPoint Specifica se l'inizio di questo esempio è un punto di sincronizzazione.
IsPreroll Determina se questo esempio è un esempio di preroll.
SetPreroll Specifica se questo esempio è un esempio di preroll.
GetActualDataLength Recupera la lunghezza dei dati validi nel buffer.
SetActualDataLength Imposta la lunghezza dei dati validi nel buffer.
GetMediaType Recupera il tipo di supporto, se il tipo di supporto è diverso dall'esempio precedente.
SetMediaType Imposta il tipo di supporto per l'esempio.
IsDiscontinuity Determina se questo esempio rappresenta un'interruzione nel flusso di dati.
SetDiscontinuity Specifica se questo esempio rappresenta un'interruzione nel flusso di dati.
GetMediaTime Recupera i tempi multimediali per questo esempio.
SetMediaTime Imposta i tempi multimediali per questo esempio.
Metodi IMediaSample2 Descrizione
GetProperties Recupera le proprietà dell'esempio.
SetProperties Imposta le proprietà dell'esempio.

Requisiti

Requisito Valore
Intestazione
Amfilter.h (include Streams.h)
Libreria
Strmbase.lib (build retail);
Strmbasd.lib (build di debug)