Bagikan melalui


Mengirimkan Akhir Aliran

[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.]

Saat pin input menerima pemberitahuan end-of-stream, pin input akan menyebarkan panggilan ke hilir. Setiap filter hilir yang menerima data dari pin input ini juga harus mendapatkan pemberitahuan end-of-stream. Sekali lagi, ambil kunci streaming dan bukan kunci filter. Jika filter memiliki data tertunda yang belum dikirimkan, filter harus mengirimkannya sekarang, sebelum mengirimkan pemberitahuan akhir aliran. Ini tidak boleh mengirim data apa pun setelah akhir aliran.

HRESULT CMyInputPin::EndOfStream()
{
    CAutoLock lock_it(&m_csReceive);

    /* If the pin has not delivered all of the data in the stream 
       (based on what it received previously), do so now.  */

    // Propagate EndOfStream call downstream, via your output pin(s).
    for (each output pin)
    {    
        hr = pOutputPin->DeliverEndOfStream();
    }
    return S_OK;
}

Metode CBaseOutputPin::D eliverEndOfStream memanggil IPin::EndOfStream pada pin input hilir.

Utas dan Bagian Penting