Kelas CMediaSample
[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Audio/Video Capture di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]
Kelas mendefinisikan CMediaSample
sampel media yang mendukung antarmuka IMediaSample2 . Sampel media berisi penunjuk ke buffer memori, dan berbagai properti yang disimpan sebagai variabel anggota yang dilindungi.
Sampel media dibuat oleh alokator, yang berasal dari kelas CBaseAllocator . Konstruktor CMediaSample
menerima pointer ke buffer yang dialokasikan, bersama dengan ukuran buffer. Properti lain biasanya diatur dan diambil melalui metode antarmuka IMediaSample .
Siklus hidup sampel media berbeda dari sebagian besar objek COM:
- Alokator menyimpan daftar sampel gratis. Saat filter membutuhkan sampel baru, filter memanggil metode IMemAllocator::GetBuffer alokator. Alokator mengambil sampel dari daftar gratisnya, menaikkan jumlah referensi sampel, dan mengembalikan pointer ke sampel.
- Setelah filter selesai dengan sampel, filter memanggil metode IUnknown::Release pada sampel. Tidak seperti kebanyakan objek, sampel tidak menghapus dirinya sendiri ketika jumlah referensinya mencapai nol. Sebaliknya, ia memanggil metode IMemAllocator::ReleaseBuffer pada alokator, dan alokator mengembalikan sampel ke daftar gratisnya.
- Alokator tidak menghancurkan sampel sampai metode IMemAllocator::D ecommit dipanggil.
Variabel Anggota yang Dilindungi | Deskripsi |
---|---|
m_dwFlags | Contoh bendera properti. |
m_dwTypeSpecificFlags | Bendera khusus jenis. |
m_pBuffer | Penunjuk ke buffer memori yang berisi data media. |
m_lActual | Panjang data yang valid dalam buffer, dalam byte. |
m_cbBuffer | Ukuran buffer, dalam byte. |
m_pAllocator | Arahkan ke alokator yang membuat sampel ini. |
m_pNext | Arahkan ke sampel berikutnya dalam daftar sampel alokator. |
m_Start | Contoh waktu mulai. |
m_End | Sampel waktu akhir. |
m_MediaStart | Waktu mulai media. |
m_MediaEnd | Waktu henti media. |
m_pMediaType | Penunjuk ke jenis media, jika jenis telah berubah dari sampel sebelumnya di aliran data. |
m_dwStreamId | Pengidentifikasi aliran. |
Variabel Anggota Publik | Deskripsi |
m_cRef | Jumlah referensi. |
Metode Publik | Deskripsi |
CMediaSample | Metode konstruktor. |
~ CMediaSample | Metode destruktor. Virtual. |
SetPointer | Mengatur penunjuk ke buffer memori. |
Metode IMediaSample | Deskripsi |
GetPointer | Mengambil penunjuk baca/tulis ke buffer. |
GetSize | Mengambil ukuran buffer. |
GetTime | Mengambil waktu streaming di mana sampel ini harus dimulai dan selesai. |
SetTime | Mengatur waktu streaming di mana sampel ini harus dimulai dan selesai. |
IsSyncPoint | Menentukan apakah awal sampel adalah titik sinkronisasi. |
SetSyncPoint | Menentukan apakah awal sampel ini adalah titik sinkronisasi. |
IsPreroll | Menentukan apakah sampel ini adalah sampel pra-pendaftaran. |
SetPreroll | Menentukan apakah sampel ini adalah sampel pra-pendaftaran. |
GetActualDataLength | Mengambil panjang data yang valid dalam buffer. |
SetActualDataLength | Mengatur panjang data yang valid dalam buffer. |
GetMediaType | Mengambil jenis media, jika jenis media berbeda dari sampel sebelumnya. |
SetMediaType | Mengatur jenis media untuk sampel. |
IsDiscontinuity | Menentukan apakah sampel ini mewakili jeda dalam aliran data. |
SetDiscontinuity | Menentukan apakah sampel ini mewakili jeda dalam aliran data. |
GetMediaTime | Mengambil waktu media untuk sampel ini. |
SetMediaTime | Menyetel waktu media untuk sampel ini. |
Metode IMediaSample2 | Deskripsi |
GetProperties | Mengambil properti sampel. |
SetProperties | Mengatur properti sampel. |
Persyaratan
Persyaratan | Nilai |
---|---|
Header |
|
Pustaka |
|