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.
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 |
|
Libreria |
|