Kelas CPosPassThru
[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 CPosPassThru
menangani perintah pencarian untuk mengubah filter, dengan meneruskannya ke hulu ke filter berikutnya.
Saat aplikasi mencari grafik filter, Filter Graph Manager memberikan perintah pencarian ke filter perender. Perintah diteruskan ke hulu, melalui pin output setiap filter, hingga mencapai filter yang dapat menjalankan perintah (jika ada). Untuk detailnya, lihat Mencari. Kelas CPosPassThru
meneruskan semua perintah pencarian ke pin output pada filter upstream, seperti yang ditunjukkan pada diagram berikut.
Meskipun kelas ini disediakan di pustaka kelas dasar, DirectShow juga menyediakan kelas yang sama di Quartz.dll. Menggunakan versi Quartz.dll dapat mengurangi ukuran kode di filter Anda agak, karena kelas dimuat pada run-time dari DLL. Untuk menggunakan versi tersebut, panggil fungsi CreatePosPassThru .
Dalam metode NonDelegatingQueryInterface pin output Anda, delegasikan ke objek CPosPassThru setiap kali antarmuka yang diminta adalah IMediaSeeking atau IMediaPosition, seperti yang ditunjukkan dalam kode berikut:
// The following member variables are assumed:
IPin *m_pInput; // Pointer to the input pin on your filter.
IUnknown *m_pPos; // Pointer to the CPosPassThru object.
STDMETHODIMP CMyPin::NonDelegatingQueryInterface(REFIID riid, void **ppv)
{
HRESULT hr
if (riid == IID_IMediaPosition || riid == IID_IMediaSeeking)
{
if (m_pPos == NULL)
{
// We have not created the CPosPassThru object yet. Do so now.
hr = CreatePosPassThru(GetOwner(), FALSE, m_pInput, &m_pPos);
if (FAILED(hr)) return hr;
}
return m_pPos->QueryInterface(riid, ppv);
}
else
{
// Other interfaces (not shown).
}
}
~CMyPin::CMyPin()
{
// Release the CPosPassThruObject.
if (m_pPos != NULL) m_pPos->Release();
}
Kecuali jika disebutkan, semua metode IMediaPosition dan IMediaSeeking di kelas ini memanggil metode yang sesuai pada pin yang terhubung dan mengembalikan hasilnya.
Metode Publik | Deskripsi |
---|---|
CPosPassThru | Metode konstruktor. |
ForceRefresh | Kedaluwarsa. |
GetMediaTime | Mengambil stempel waktu pada sampel saat ini. Virtual. |
Metode IMediaPosition | Deskripsi |
get_Duration | Mengambil durasi aliran. |
put_CurrentPosition | Mengatur posisi saat ini, relatif terhadap total durasi aliran. |
get_StopTime | Mengambil waktu di mana pemutaran akan berhenti, relatif terhadap durasi aliran. |
put_StopTime | Mengatur waktu pemutaran akan berhenti, relatif terhadap durasi streaming. |
get_PrerollTime | Mengambil jumlah data yang akan diantrekan sebelum posisi mulai. |
put_PrerollTime | Mengatur jumlah data yang akan diantrekan sebelum posisi mulai. |
get_Rate | Mengambil laju pemutaran. |
put_Rate | Mengatur laju pemutaran. |
get_CurrentPosition | Mengambil posisi saat ini, relatif terhadap total durasi aliran. |
CanSeekForward | Menentukan apakah aliran dapat dicari mundur. |
CanSeekBackward | Menentukan apakah aliran dapat dicari ke depan. |
Metode IMediaSeeking | Deskripsi |
CheckCapabilities | Mengkueri apakah aliran telah menentukan kemampuan pencarian. |
ConvertTimeFormat | Mengonversi dari satu kali format ke format lainnya. |
GetAvailable | Mengambil rentang waktu di mana pencarian efisien. |
GetCapabilities | Mengambil semua kemampuan pencarian aliran. |
GetCurrentPosition | Mengambil posisi saat ini, relatif terhadap total durasi aliran. |
GetDuration | Mengambil durasi aliran. |
GetPositions | Mengambil posisi saat ini dan posisi berhenti, relatif terhadap total durasi aliran. |
GetPreroll | Mengambil jumlah data yang akan diantrekan sebelum posisi mulai. |
GetRate | Mengambil laju pemutaran. |
GetStopPosition | Mengambil waktu di mana pemutaran akan berhenti, relatif terhadap durasi aliran. |
GetTimeFormat | Mengambil format waktu saat ini. |
IsFormatSupported | Menentukan apakah format waktu yang ditentukan didukung. |
IsUsingTimeFormat | Menentukan apakah format waktu yang ditentukan adalah format yang saat ini digunakan. |
QueryPreferredFormat | Mengambil format waktu yang disukai untuk aliran. |
SetPositions | Mengatur posisi saat ini dan posisi berhenti. |
SetRate | Mengatur laju pemutaran. |
SetTimeFormat | Mengatur format waktu. |
Fungsi Pembantu | Deskripsi |
CreatePosPassThru |
CPosPassThru Membuat objek atau CRendererPosPassThru. |
Persyaratan
Persyaratan | Nilai |
---|---|
Header |
|
Pustaka |
|