Bagikan melalui


Metode IMFSourceReaderEx::AddTransformForStream (mfreadwrite.h)

Menambahkan transformasi, seperti efek audio atau video, ke streaming.

Sintaks

HRESULT AddTransformForStream(
  [in] DWORD    dwStreamIndex,
  [in] IUnknown *pTransformOrActivate
);

Parameter

[in] dwStreamIndex

Aliran yang akan dikonfigurasi. Nilainya bisa salah satu dari yang berikut ini.

Nilai Makna
0–0xFFFFFFFB
Indeks aliran berbasis nol.
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
Streaming video pertama.
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
Aliran audio pertama.

[in] pTransformOrActivate

Penunjuk ke salah satu hal berikut ini:

  • Transformasi Media Foundation (MFT) yang mengekspos antarmuka IMFTransform .
  • Objek aktivasi MFT yang mengekspos antarmuka IMFActivate .

Nilai kembali

Metode ini dapat mengembalikan salah satu nilai ini.

Menampilkan kode Deskripsi
S_OK
Berhasil.
MF_E_INVALIDMEDIATYPE
Transformasi tidak mendukung format aliran saat ini, dan tidak ada konversi yang dimungkinkan. Lihat Keterangan untuk informasi selengkapnya.
MF_E_INVALIDREQUEST
Permintaan tidak valid.
MF_E_INVALIDSTREAMNUMBER
Parameter dwStreamIndex tidak valid.

Keterangan

Metode ini mencoba menambahkan transformasi di akhir rantai pemrosesan saat ini.

Untuk menggunakan metode ini, lakukan urutan panggilan berikut:

  1. Panggil IMFSourceReader::SetCurrentMediaType untuk mengatur jenis output yang Anda inginkan untuk aliran. Dalam langkah ini, Anda dapat menentukan jenis media yang hanya berisi jenis utama dan GUID subjenis. Misalnya, untuk mendapatkan output RGB 32-bit, atur jenis utama MFMediaType_Video dan subjenis MFVideoFormat_RGB32. (Untuk informasi selengkapnya, lihat GUID Jenis Media.)
  2. Panggil AddTransformForStream. Jika Pembaca Sumber berhasil menyambungkan transformasi, itu mengatur jenis output pada transformasi.
  3. Panggil IMFSourceReader::GetCurrentMediaType untuk mendapatkan jenis output dari transformasi. Metode ini mengembalikan jenis media dengan deskripsi format lengkap.
  4. Secara opsional, jika Anda ingin mengubah jenis output, panggil IMFSourceReader::SetCurrentMediaType lagi untuk mengatur jenis media lengkap pada transformasi.
Metode AddTransformForStream tidak akan memasukkan dekoder ke dalam rantai pemrosesan. Jika format aliran asli dikodekan, dan transformasi memerlukan format yang tidak dikompresi, panggil SetCurrentMediaType untuk mengatur format yang tidak dikompresi (langkah 1 di daftar sebelumnya). Namun, metode ini akan menyisipkan prosesor video untuk mengonversi antara format RGB dan YUV, jika diperlukan.

Metode gagal jika pembaca sumber dikonfigurasi dengan atribut MF_READWRITE_DISABLE_CONVERTERS atau MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING .

Dalam mode asinkron, metode juga gagal jika permintaan sampel tertunda. Dalam hal ini, tunggu panggilan balik OnReadSample dipanggil sebelum memanggil metode . Untuk informasi selengkapnya tentang menggunakan Pembaca Sumber dalam mode asinkron, lihat IMFSourceReader::ReadSample.

Anda dapat menambahkan transformasi kapan saja selama streaming. Namun, metode ini tidak membersihkan atau menguras alur sebelum memasukkan transformasi. Oleh karena itu, jika data sudah ada di alur, sampel berikutnya tidak dijamin akan menerapkan transformasi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8 [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2012 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header mfreadwrite.h

Lihat juga

IMFSourceReaderEx

Pembaca Sumber