IGraphConfig::Metode koneksi ulang (strmif.h)
[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.]
Metode ini Reconnect
melakukan koneksi ulang dinamis antara dua pin.
Sintaks
HRESULT Reconnect(
[in] IPin *pOutputPin,
[in] IPin *pInputPin,
[in] const AM_MEDIA_TYPE *pmtFirstConnection,
[in] IBaseFilter *pUsingFilter,
[in] HANDLE hAbortEvent,
[in] DWORD dwFlags
);
Parameter
[in] pOutputPin
Penunjuk ke antarmuka IPin dari pin output. Bisa NULL, dalam hal ini pInputPin tidak boleh NULL.
[in] pInputPin
Arahkan antarmuka IPin ke pin input. Dapat berupa NULL, dalam hal ini pOutputPin tidak boleh NULL.
[in] pmtFirstConnection
Penunjuk ke struktur AM_MEDIA_TYPE yang menentukan jenis media untuk koneksi pin pertama yang dibuat selama koneksi ulang. Jika parameter ini NULL, koneksi pertama dapat memiliki jenis media apa pun.
[in] pUsingFilter
Arahkan ke filter opsional untuk digunakan dalam koneksi ulang. Filter harus sudah ada di grafik. Bisa NULL.
[in] hAbortEvent
Menangani ke peristiwa. Jika penelepon adalah panggilan filter pada salah satu utas pemrosesan datanya, parameter ini harus menjadi handel ke peristiwa yang akan diberi sinyal ketika filter dimasukkan ke dalam status berhenti. Jika tidak, parameter ini bisa NULL. Untuk informasi selengkapnya, lihat Keterangan.
[in] dwFlags
Kombinasi bendera dari enumerasi AM_GRAPH_CONFIG_RECONNECT_FLAGS , menentukan cara melakukan koneksi ulang.
Mengembalikan nilai
Mengembalikan S_OK jika berhasil. Jika tidak, mengembalikan kode kesalahan yang mungkin merupakan salah satu nilai berikut, atau yang lain tidak tercantum.
Menampilkan kode | Deskripsi |
---|---|
|
Argumen tidak valid. (Misalnya, pInputPin dan pOutputPin adalah NULL.) |
|
Pin input tidak mendukung IPinConnection. |
|
Tidak dapat menyambungkan filter. |
|
Status filter berubah. Tidak dapat menyelesaikan operasi. |
Keterangan
Jika Anda hanya menentukan satu pin, metode akan mencari pin lainnya. Namun, secara default, pencarian gagal jika mencapai filter yang ditambahkan ke grafik dengan metode IFilterGraph::AddFilter . Untuk mengambil alih perilaku ini, panggil IGraphConfig::SetFilterFlags dan atur bendera AM_FILTER_FLAGS_REMOVABLE pada filter.
Proses koneksi ulang melibatkan beberapa langkah, sebagian besar ditangani di dalam metode ini:
- Pertama, sebelum memanggil metode , pastikan untuk memblokir aliran data di sepanjang jalur yang sedang dikonfigurasi ulang. Aplikasi harus memanggil metode IPinFlowControl::Block untuk melakukan ini. Jika penelepon adalah filter, bukan aplikasi, mungkin filter dapat mengontrol aliran data secara internal.
- Output dan pin input yang ditentukan menentukan titik awal dan akhir untuk koneksi ulang. Pin input harus mendukung antarmuka IPinConnection . Jika Anda membiarkan salah satu pin ini tidak ditentukan (dengan meneruskan parameter NULL ), metode mencari grafik filter untuk menemukan pin kandidat untuk koneksi ulang. (Untuk menemukan pin input, ia mencari hilir dari pin output; untuk menemukan pin output, ia mencari upstream dari pin input.)
- Metode ini mendorong data yang tertunda melalui grafik filter (melalui panggilan internal ke IGraphConfig::P ushThroughData).
- Jika Anda telah menentukan filter untuk disisipkan ke dalam grafik, metode menyambungkan pin output awal ke pin input filter, dan menyambungkan pin output filter ke pin input akhir. Jika Anda tidak menentukan filter, metode ini hanya menyambungkan pin output ke pin input. Dalam kedua kasus, metode menyisipkan filter transformasi apa pun yang diperlukan untuk menyelesaikan koneksi. (Namun, Anda dapat mengambil alih perilaku ini dengan mengatur bendera yang sesuai; untuk informasi selengkapnya lihat deskripsi parameter dwFlags .)
- Akhirnya, metode menempatkan filter baru ke dalam status berjalan. Terserah pemanggil untuk memulai ulang aliran data. Aplikasi dapat melakukan ini dengan memanggil IPinFlowControl::Block tanpa bendera.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | strmif.h (termasuk Dshow.h) |
Pustaka | Strmiids.lib |