Bagikan melalui


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

hierarki kelas cmediasample

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
Amfilter.h (termasuk Streams.h)
Pustaka
Strmbase.lib (build ritel);
Strmbasd.lib (build debug)