Metode IMediaSeeking::SetPositions (strmif.h)
[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.]
Metode SetPositions
ini mengatur posisi saat ini dan posisi berhenti.
Sintaks
HRESULT SetPositions(
[in, out] LONGLONG *pCurrent,
[in] DWORD dwCurrentFlags,
[in, out] LONGLONG *pStop,
[in] DWORD dwStopFlags
);
Parameter
[in, out] pCurrent
[in,out] Penunjuk ke variabel yang menentukan posisi saat ini, dalam satuan format waktu saat ini.
[in] dwCurrentFlags
Kombinasi bendera bitwise. Lihat Keterangan.
[in, out] pStop
[in,out] Penunjuk ke variabel yang menentukan waktu berhenti, dalam satuan format waktu saat ini.
[in] dwStopFlags
Kombinasi bendera bitwise. Lihat Keterangan.
Nilai kembali
Mengembalikan nilai HRESULT . Nilai yang mungkin termasuk yang berikut ini.
Menampilkan kode | Deskripsi |
---|---|
|
Tidak ada perubahan posisi. (Kedua bendera menentukan tidak ada pencarian.) |
|
Berhasil. |
|
Argumen tidak valid. |
|
Metode tidak didukung. |
|
Argumen pointer NULL. |
Keterangan
Parameter dwCurrentFlags dan dwStopFlags menentukan jenis pencarian. Bendera berikut ditentukan.
Bendera Penempatan | Deskripsi |
---|---|
AM_SEEKING_NoPositioning | Tidak ada perubahan posisi. (Parameter waktu bisa NULL.) |
AM_SEEKING_AbsolutePositioning | Posisi yang ditentukan adalah absolut. |
AM_SEEKING_RelativePositioning | Posisi yang ditentukan relatif terhadap nilai sebelumnya. |
AM_SEEKING_IncrementalPositioning | Posisi berhenti (pStop) relatif terhadap posisi saat ini (pCurrent). |
Bendera Pengubah | Deskripsi |
---|---|
AM_SEEKING_SeekToKeyFrame | Cari ke bingkai kunci terdekat. Ini mungkin lebih cepat, tetapi kurang akurat. Tidak ada filter yang dikirim dengan DirectShow mendukung bendera ini. Dekode adalah jenis filter yang paling mungkin untuk mendukungnya. |
AM_SEEKING_ReturnTime | Mengembalikan waktu referensi yang setara. |
AM_SEEKING_Segment | Gunakan pencarian segmen. |
AM_SEEKING_NoFlush | Jangan memerah. |
Untuk setiap parameter, gunakan satu bendera pemosisian. Secara opsional, sertakan satu atau beberapa bendera pengubah.
Jika bendera AM_SEEKING_ReturnTime ditentukan, metode mengonversi nilai posisi menjadi waktu referensi dan mengembalikannya dalam variabel pCurrent atau pStop . Bendera ini berguna jika Anda menggunakan format waktu lain, seperti bingkai.
Bendera AM_SEEKING_Segment dan AM_SEEKING_NoFlush mendukung perulangan yang mulus:
- Jika bendera AM_SEEKING_Segment ada, filter sumber mengirimkan peristiwa EC_END_OF_SEGMENT saat mencapai posisi berhenti, alih-alih memanggil IPin::EndOfStream. Aplikasi dapat menunggu peristiwa ini dan kemudian mengeluarkan perintah pencarian lain.
- Jika bendera AM_SEEKING_NoFlush ada, grafik tidak menghapus data selama pencarian. Gunakan bendera ini dengan AM_SEEKING_Segment.
Nilai masuk pCurrent dan pStop dinyatakan dalam format waktu saat ini. Format waktu default adalah REFERENCE_TIME unit (100 nanodetik). Untuk mengubah format waktu, gunakan metode IMediaSeeking::SetTimeFormat . Jika bendera AM_SEEKING_ReturnTime ada, metode mengonversi nilai keluar menjadi unit REFERENCE_TIME .
Memfilter Pengembang
Jika Anda menerapkan metode ini, Anda dapat memeriksa apakah pemanggil meminta perubahan pada posisi saat ini atau berhenti, dengan menggunakan nilai AM_SEEKING_PositioningBitsMask untuk menutupi bendera pengubah. Contohnya:
DWORD dwCurrentPos = dwCurrentFlags & AM_SEEKING_PositioningBitsMask if (dwCurrentPos == AM_SEEKING_AbsolutePositioning) { // Set new position to pCurrent. m_rtStart = *pCurrent; } else if (dwCurrentPos == AM_SEEKING_RelativePositioning) { // Increment current position by pCurrent. m_rtStart += *pCurrent; } |
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 |