Bagikan melalui


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
S_FALSE
Setidaknya satu perender hilir tidak akan mengirim pemberitahuan berhenti.
S_OK
Berhasil.
E_FAIL
Tidak dapat menemukan pin yang cocok, atau pin tidak mendukung kontrol aliran.
E_POINTER
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.

Catatan  

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.

 
Untuk mengontrol pin, metode ini memanggil metode IAMStreamControl::StartAt dan IAMStreamControl::StopAt . Setiap pin mengirimkan pemberitahuan peristiwa EC_STREAM_CONTROL_STARTED saat dimulai. Parameter kedua dari pemberitahuan peristiwa adalah nilai yang diberikan dalam wStartCookie. Saat pin berhenti, pin akan mengirimkan pemberitahuan peristiwa EC_STREAM_CONTROL_STOPPED . Parameter kedua dari pemberitahuan peristiwa tersebut adalah nilai yang diberikan dalam wStopCookie.

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

Lihat juga

Kode Kesalahan dan Keberhasilan

Antarmuka ICaptureGraphBuilder2