Sampel Filter Synth

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

Deskripsi

Filter Synth adalah filter sumber yang menghasilkan bentuk gelombang audio.

Filter ini mengilustrasikan pembuatan grafik dinamis. Ini dapat beralih antara audio PCM yang tidak dikompresi dan format MS_ADPCM terkompresi (Modulasi Kode Pulse Delta Adaptif Microsoft).

Filter ini muncul di GraphEdit sebagai "Filter Penyintesis Audio."

Untuk informasi selengkapnya tentang pembuatan grafik dinamis, lihat Dynamic Graph Building.

Penggunaan

Filter Synth memungkinkan pengguna untuk mengatur bentuk gelombang, frekuensi, jumlah saluran, dan properti lainnya melalui halaman properti. Untuk mengatur titik akhir atas atau bawah rentang frekuensi yang disapu, tahan SHIFT sambil menyesuaikan penggeser frekuensi. Filter ini juga mendukung antarmuka kustom, ISynth2, untuk mengatur properti ini.

Untuk menunjukkan fitur pembuatan grafik dinamis, lakukan hal berikut:

  1. Buat filter dan daftarkan dengan utilitas Regsvr32.
  2. Luncurkan GraphSedit.
  3. Sisipkan filter Penyintesis Audio. Ini muncul di kategori Filter DirectShow.
  4. Render pin output filter.
  5. Klik tombol Putar .
  6. Buka halaman properti filter.
  7. Di area Format Output, pilih PCM atau Microsoft ADPCM.

Catatan Pemrograman

Sampel ini berisi file berikut:

  • Dynsrc.h, Dynsrc.cpp: Berisi dua kelas dasar untuk filter sumber yang mendukung bangunan grafik dinamis, CDynamicSource dan CDynamicSourceStream.
  • ISynth.h: Mendeklarasikan antarmuka ISynth2 kustom untuk mengatur properti pada filter.
  • Resource.h: Berisi konstanta sumber daya.
  • Synth.def: Mengekspor fungsi DLL yang diperlukan oleh pustaka COM.
  • Synth.h, Synth.cpp: Berisi kelas CAudioSynth, yang menghasilkan data audio, dan kelas CSynthFilter, yang mengimplementasikan filter.
  • Synth.rc: Berisi sumber daya yang digunakan oleh filter.
  • Synthprp.h, Synthprp.cpp: Mengimplementasikan halaman properti filter.

Kelas CDynamicSource diadaptasi dari kelas dasar CSource . Ini menggunakan satu atau beberapa pin output yang berasal dari kelas CDynamicSourceStream. Kelas CDynamicSourceStream diadaptasi dari kelas CSourceStream , tetapi berasal dari kelas CDynamicOutputPin daripada kelas CBaseOutputPin .

Kelas CDynamicSource memiliki metode berikut yang tidak ditemukan di CSource:

  • Berhenti: Memberi sinyal peristiwa berhenti (CDynamicOutputPin::m_hStopEvent), dan mematikan utas pekerja untuk semua pin yang tidak terhubung. Pada pin yang terhubung, metode Tidak Aktif pin akan mematikan utas pekerja.
  • Jeda: Mengatur ulang peristiwa berhenti.
  • JoinFilterGraph: Memanggil metode CDynamicOutputPin::SetConfigInfo pada setiap pin.

Kelas CDynamicSourceStream memiliki metode berikut yang tidak ditemukan di CSourceStream:

  • DestroySourceThread: Mematikan utas pekerja.
  • FatalError: Memberi sinyal kesalahan ke manajer grafik filter.
  • OutputPinNeedsToBeReconnected: Menandakan bahwa pin output harus disambungkan kembali. Ketika metode ini dipanggil, utas pekerja memanggil metode CDynamicOutputPin::D ynamicReconnect untuk menyambungkan kembali pin.

Mengunduh Sampel

Untuk mengunduh sampel DirectShow SDK, instal versi terbaru Windows SDK.

Sampel ini diinstal di bawah jalur berikut: [SDK Root]\Samples\Multimedia\DirectShow\Filters\Synth.

Sampel DirectShow