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 |
---|---|
|
Berhasil. |
|
Tingkat yang ditentukan adalah nol atau nilai negatif. (Lihat Keterangan.) |
|
Tidak diterapkan. |
|
Argumen penunjuk NULL. |
|
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:
- Memanggil metode IMediaSeeking::GetCurrentPosition . Panggilan ini mengembalikan posisi saat ini sebagaimana dihitung oleh Filter Graph Manager.
- Menghentikan grafik filter (jika grafik dijeda atau berjalan).
- Memanggil metode IMediaSeeking::SetPositions pada filter, dengan posisi saat ini sebagai waktu mulai. Ini memiliki efek mengatur ulang waktu streaming ke nol.
SetRate
Memanggil metode pada filter, dengan tarif baru.- Melanjutkan grafik filter, jika dijeda atau dijalankan.
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk