Bagikan melalui


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
E_INVALIDARG
Argumen tidak valid. (Misalnya, pInputPin dan pOutputPin adalah NULL.)
E_NOINTERFACE
Pin input tidak mendukung IPinConnection.
VFW_E_CANNOT_CONNECT
Tidak dapat menyambungkan filter.
VFW_E_STATE_CHANGED
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:

  1. 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.
  2. 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.)
  3. Metode ini mendorong data yang tertunda melalui grafik filter (melalui panggilan internal ke IGraphConfig::P ushThroughData).
  4. 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 .)
  5. 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.
Jika filter memanggil metode ini pada salah satu utas pemrosesan datanya sendiri, filter akan menciptakan potensi kebuntuan. Metode ini mendapatkan kunci pada grafik filter, yang dapat memblokir filter agar tidak berhenti menerima panggilan ke IMediaFilter::Stop. Untuk mencegah situasi ini, metode ini mengambil handel ke objek peristiwa yang disediakan oleh filter. Filter harus memberi sinyal peristiwa jika menerima panggilan ke metode Stop-nya .

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

Lihat juga

Kode Kesalahan dan Keberhasilan

Antarmuka IGraphConfig