ICaptureGraphBuilder2::Metode ControlStream (strmif.h)
[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan 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 Pengambilan Audio/Video 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.]
Metode ini ControlStream
mengatur waktu mulai dan berhenti untuk satu atau beberapa aliran data yang diambil.
Sintaks
HRESULT ControlStream(
[in] const GUID *pCategory,
[in] const GUID *pType,
[in] IBaseFilter *pFilter,
[in] REFERENCE_TIME *pstart,
[in] REFERENCE_TIME *pstop,
[in] WORD wStartCookie,
[in] WORD wStopCookie
);
Parameter
[in] pCategory
Penunjuk ke GUID yang menentukan salah satu kategori pin yang tercantum dalam Sematkan Kumpulan Properti. Nilai parameter ini tidak boleh NULL.
[in] pType
Penunjuk ke GUID tipe utama yang menentukan jenis media, atau NULL. Jika parameter ini NULL, atur parameter pFilter ke NULL juga. Jika tidak, Anda mungkin mengontrol pin yang salah dan mendapatkan hasil yang tidak dapat diprediksi.
[in] pFilter
Penunjuk ke antarmuka IBaseFilter yang menentukan filter mana yang akan dikontrol. Untuk mengontrol semua filter pengambilan dalam grafik, atur parameter ini ke NULL.
[in] pstart
Penunjuk ke variabel yang berisi waktu mulai. Jika nilainya adalah MAXLONGLONG (0x7FFFFFFFFFFFFFFF), metode membatalkan permintaan mulai sebelumnya. Jika nilainya NULL, pin akan segera dimulai saat grafik berjalan.
[in] pstop
Penunjuk ke variabel yang berisi waktu berhenti. Jika nilainya adalah MAXLONGLONG, metode membatalkan permintaan berhenti sebelumnya. Jika nilainya NULL, pin akan segera berhenti.
[in] wStartCookie
Nilai yang dikirim sebagai parameter kedua dari pemberitahuan peristiwa EC_STREAM_CONTROL_STARTED . Lihat Keterangan untuk informasi selengkapnya.
[in] wStopCookie
Nilai yang dikirim sebagai parameter kedua dari pemberitahuan peristiwa EC_STREAM_CONTROL_STOPPED . Lihat Keterangan untuk informasi selengkapnya.
Nilai kembali
Mengembalikan nilai HRESULT . Nilai yang mungkin termasuk yang berikut ini.
Menampilkan kode | Deskripsi |
---|---|
|
Setidaknya satu perender hilir tidak akan mengirim pemberitahuan berhenti. |
|
Berhasil. |
|
Tidak dapat menemukan pin yang cocok, atau pin tidak mendukung kontrol aliran. |
|
Argumen pointer NULL. |
Keterangan
Metode ini menemukan pin output pada filter tangkapan, menggunakan kriteria pencarian yang Anda berikan dalam panggilan metode. Kemudian memanggil metode IAMStreamControl pada pin tersebut. Metode ini memungkinkan aplikasi untuk mengontrol aliran tanpa aplikasi perlu menghitung filter dan pin dalam grafik.
Gunakan metode ini untuk pengambilan yang akurat bingkai, atau untuk kontrol individu atas penangkapan dan pratinjau. Misalnya, Anda dapat berhenti mengambil ke disk tetapi membiarkan pratinjau video berjalan.
Tiga parameter pertama menentukan pin mana yang akan dikontrol. Grafik pengambilan dapat memiliki lebih dari satu filter pengambilan. Misalnya, mungkin memiliki filter untuk data video, audio, dan teks tertutup. Selain itu, filter pengambilan dapat memiliki lebih dari satu pin output. Beberapa filter pengambilan memiliki pin terpisah untuk pratinjau dan pengambilan, atau pin terpisah untuk data khusus video dan data yang diselingi video. Untuk mengontrol pratinjau video, misalnya, tentukan PIN_CATEGORY_PREVIEW untuk pCategory dan MEDIATYPE_Video untuk pType.
Jika kategori pin PIN_CATEGORY_PREVIEW, Anda tidak dapat mengatur waktu mulai dan berhenti tertentu, karena sampel yang dikirimkan oleh pin pratinjau tidak memiliki stempel waktu (lihat Stempel Waktu). Sebagai gantinya, gunakan nilai NULL dan MAXLONGLONG untuk memulai dan menghentikan pin pada waktu yang diinginkan.
Selain itu, metode ini tidak didukung untuk pratinjau jika perangkat menggunakan pin port video, karena dalam hal ini perangkat mengirimkan sampel pratinjau langsung melalui perangkat keras.
Ketika metode ini menemukan pin yang cocok, metode ini mencari hilir untuk filter lain yang mendukung IAMStreamControl (biasanya multiplexer). Jika menemukannya, itu juga mengatur waktu mulai dan berhenti pada filter tersebut. Ini menghasilkan dua pasang pemberitahuan berhenti: satu untuk filter pengambilan, dan satu untuk filter hilir. Hanya pemberitahuan berhenti dari filter hilir yang menggunakan parameter wStopCookie . Menunggu peristiwa ini menjamin bahwa filter hilir menerima sampel terakhir.
Jika tidak ada filter hilir yang mendukung IAMStreamControl, metode akan mengembalikan S_FALSE. Dalam hal ini, Anda mungkin menerima pemberitahuan berhenti sebelum sampel terakhir dirender.
MAXLONGLONG adalah nilai REFERENCE_TIME terbesar yang mungkin. Di pustaka kelas dasar DirectShow, pustaka ini juga didefinisikan sebagai MAX_TIME konstanta.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | strmif.h (termasuk Dshow.h) |
Pustaka | Strmiids.lib |