Metode IMediaSeeking::SetRate (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 SetRate ini menetapkan laju pemutaran.

Sintaks

HRESULT SetRate(
  [in] double dRate
);

Parameter

[in] dRate

Laju pemutaran. Tidak boleh nol.

Mengembalikan nilai

Mengembalikan nilai HRESULT . Nilai yang mungkin termasuk yang berikut ini.

Menampilkan kode Deskripsi
S_OK
Berhasil.
E_INVALIDARG
Tingkat yang ditentukan adalah nol atau nilai negatif. (Lihat Keterangan.)
E_NOTIMPL
Tidak diterapkan.
E_POINTER
Argumen penunjuk NULL.
VFW_E_UNSUPPORTED_AUDIO
Perangkat atau filter audio tidak mendukung laju ini.

Keterangan

Tingkat pemutaran dinyatakan sebagai rasio kecepatan normal. Dengan demikian, 1,0 adalah kecepatan pemutaran normal, 0,5 adalah kecepatan setengah, dan 2,0 adalah dua kali kecepatan. Untuk aliran audio, mengubah laju juga mengubah nada.

Nilai negatif menunjukkan pemutaran terbalik. Sebagian besar filter tidak mendukung pemutaran negatif, tetapi sebaliknya mengembalikan kode kesalahan jika parameter dRate negatif.

Saat aplikasi memanggil metode ini pada Filter Graph Manager, Filter Graph Manager melakukan hal berikut:

  1. Memanggil metode IMediaSeeking::GetCurrentPosition . Panggilan ini mengembalikan posisi saat ini sebagaimana dihitung oleh Filter Graph Manager.
  2. Menghentikan grafik filter (jika grafik dijeda atau berjalan).
  3. Memanggil metode IMediaSeeking::SetPositions pada filter, dengan posisi saat ini sebagai waktu mulai. Ini memiliki efek mengatur ulang waktu streaming ke nol.
  4. SetRate Memanggil metode pada filter, dengan tarif baru.
  5. Melanjutkan grafik filter, jika dijeda atau dijalankan.
Jika terjadi kesalahan di langkah 4, Filter Graph Manager mencoba memulihkan laju sebelumnya.

Filter harus merespons perubahan tarif sebagai berikut:

Parser dan filter sumber: Filter yang berasal dari tanda waktu merespons SetRate panggilan. Ini biasanya filter pengurai, seperti Filter Pemisah AVI, tetapi mungkin filter sumber. Setelah pencarian atau perubahan tarif, filter harus memanggil metode IPin::NewSegment dengan pengaturan baru. Setelah perubahan tarif, ia harus menyesuaikan tanda waktu yang sesuai. Karena perubahan laju didahului oleh pencarian, tanda waktu dimulai ulang dari nol, sehingga filter cukup membagi dengan laju untuk menghitung tanda waktu baru.

Filter dekoder: Dekoder tidak boleh bertindak atas SetRate panggilan selain melewatinya di hulu. Sebaliknya, mereka harus menanggapi panggilan NewSegment yang menjadi masalah pengurai upstram. Saat filter dekoder menerima informasi segmen baru, filter tersebut harus menyimpan nilai dan meneruskan panggilan NewSegment ke hilir. Beberapa dekode perlu menghasilkan tanda waktu tambahan dengan menginterpolasi input mereka; mereka harus mempertimbangkan perubahan tarif saat melakukannya.

Renderers: Perender video biasanya dapat mengabaikan perubahan laju, karena bingkai masuk sudah memiliki stempel waktu yang benar. Perender audio harus memodifikasi laju pemutarannya, karena dekode audio biasanya tidak melakukan konversi perubahan tarif.

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 IMediaSeeking