Audio Resampler DSP
Audio Resampler melakukan salah satu atau kedua tindakan berikut pada aliran audio.
- Ubah laju pengambilan sampel.
- Ubah jumlah saluran.
CLSID
CLSID_CResamplerMediaObject
Antarmuka
Format
TITIK mengambang PCM atau IEEE
Jenis media harus menentukan PCM yang tidak dikompresi atau format audio floating-point.
- Untuk antarmuka IMFTransform , inisialisasi jenis media seperti yang dijelaskan dalam Tipe Media Audio Tidak Terkompresi.
- Untuk antarmuka IMediaObject , jenis media harus berupa jenis FORMAT_WaveFormatEx . Untuk informasi selengkapnya, lihat DMO_MEDIA_TYPE.
Properti
Atribut yang Diperlukan
Resampler mengharuskan atribut berikut diatur di dalamnya:
Pemetaan Saluran Kustom
Resampler audio memetakan saluran audio input ke saluran audio output, berdasarkan informasi berikut:
- Jumlah saluran. Ini diberikan dalam atribut MF_MT_AUDIO_NUM_CHANNELS dari jenis media, atau anggota nChannels dari struktur WAVEFORMATEX .
- Masker saluran, yang menetapkan saluran ke posisi pembicara. Masker saluran diberikan dalam atribut MF_MT_AUDIO_CHANNEL_MASK jenis media, atau anggota dwChannelMask dari struktur WAVEFORMATEXTENSIBLE .
- Matriks bobot pemetaan.
Matriks berisi serangkaian bobot, sehingga setiap saluran output adalah rata-rata tertimbang saluran input.
Anda dapat menentukan matriks kustom untuk pemetaan saluran dengan memanggil IWMResamplerProps::SetUserChannelMtx atau dengan mengatur properti MFPKEY_WMRESAMP_CHANNELMTX . Jika matriks kustom tidak disediakan, Audio Resampler menggunakan sekumpulan matriks default.
Pemetaan Saluran Default
Jika Anda tidak menentukan matriks kustom, DSP Audio Resampler menggunakan nilai default untuk pemetaan saluran.
Dalam tabel berikut, saluran disingkat:
- L: Kiri
- R: Kanan
- C: Tengah
- LFE: Efek Frekuensi Rendah
- BL: Belakang Kiri
- BR: Kanan Belakang
- SL: Kelilingi Kiri
- SR: Kelilingi Kanan
Tabel berikut menunjukkan koefisien default untuk memetakan 6 saluran (mask 0x3F) ke 2 saluran.
L | R | C | LFE | BL | BR | |
---|---|---|---|---|---|---|
L | 0.314 | 0 | 0.222 | 0.031 | 0.268 | 0.164 |
R | 0 | 0.314 | 0.222 | 0.031 | 0.164 | 0.268 |
Tabel berikut menunjukkan koefisien default untuk memetakan 6 saluran (mask 0x60F) ke 2 saluran.
L | R | C | LFE | SL | SR | |
---|---|---|---|---|---|---|
L | 0.320 | 0 | 0.226 | 0.032 | 0.292 | 0.130 |
R | 0 | 0.320 | 0.226 | 0.032 | 0.130 | 0.292 |
Tabel berikut menunjukkan koefisien default untuk memetakan 6 saluran (mask 0x3F atau 0x60F) ke 1 saluran.
L | R | C | LFE | BL(SL) | BR(SR) | |
---|---|---|---|---|---|---|
C | 0.192 | 0.192 | 0.192 | 0.038 | 0.192 | 0.192 |
Tabel berikut menunjukkan koefisien default untuk memetakan 8 saluran (mask 0x63F) ke 2 saluran.
L | R | C | LFE | BL | BR | SL | SR | |
---|---|---|---|---|---|---|---|---|
L | 0.222 | 0 | 0.157 | 0.022 | 0,189 | 0.116 | 0.203 | 0.090 |
R | 0 | 0.222 | 0.157 | 0.022 | 0.116 | 0,189 | 0.090 | 0.203 |
Tabel berikut menunjukkan koefisien default untuk memetakan 8 saluran (mask 0x63F) ke 1 saluran.
L | R | C | LFE | BL | BR | SL | SR | |
---|---|---|---|---|---|---|---|---|
C | 0.139 | 0.139 | 0.139 | 0.028 | 0.139 | 0.139 | 0.139 | 0.139 |
Tabel berikut menunjukkan koefisien default untuk memetakan 8 saluran (mask 0x63F) ke 6 saluran (mask 0x3F).
L | R | C | LFE | BL | BR | SL | SR | |
---|---|---|---|---|---|---|---|---|
L | 0.518 | 0 | 0 | 0 | 0 | 0 | 0,189 | 0 |
R | 0 | 0.518 | 0 | 0 | 0 | 0 | 0 | 0,189 |
C | 0 | 0 | 0.518 | 0 | 0 | 0 | 0 | 0 |
LFE | 0 | 0 | 0 | 0.518 | 0 | 0 | 0 | 0 |
BL | 0 | 0 | 0 | 0 | 0.518 | 0 | 0.482 | 0 |
BR | 0 | 0 | 0 | 0 | 0 | 0.518 | 0 | 0.482 |
Tabel berikut menunjukkan koefisien default untuk memetakan 8 saluran (mask 0x63F) ke 6 saluran (mask 0x60F).
L | R | C | LFE | BL | BR | SL | SR | |
---|---|---|---|---|---|---|---|---|
L | 0.447 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
R | 0 | 0.447 | 0 | 0 | 0 | 0 | 0 | 0 |
C | 0 | 0 | 0.447 | 0 | 0 | 0 | 0 | 0 |
LFE | 0 | 0 | 0 | 0.447 | 0 | 0 | 0 | 0 |
SL | 0 | 0 | 0 | 0 | 0.429 | 0.124 | 0.447 | 0 |
SR | 0 | 0 | 0 | 0 | 0.124 | 0.429 | 0 | 0.447 |
Untuk memahami cara menginterpretasikan tabel koefisien, pertimbangkan tabel pertama, yang memetakan 6 saluran ke 2. Baris pertama tabel (0,314, 0, 0,222, 0,031, 0,268, 0,164) adalah vektor bobot yang menentukan seberapa besar setiap saluran input berkontribusi pada saluran kiri output. Baris kedua tabel (0, 0,314, 0,222, 0,031, 0,164, 0,268) adalah vektor bobot yang menentukan seberapa besar setiap saluran input berkontribusi pada saluran output yang tepat.
Rumus berikut menunjukkan bagaimana saluran output dihitung.
L_out = L*0.314 + C*0.222 + LFE*0.031 + BL*0.268 + BR*0.164
R_out = R*0.314 + C*0.222 + LFE*0.031 + BL*0.164 + BR*0.268
Catatan
Jika Anda menggunakan DSP Audio Resampler untuk menambah jumlah saluran, saluran yang ditambahkan akan diberi nilai 0.
Kualitas Output
Anda dapat menentukan kualitas output DSP Audio Resampler dengan memanggil IWMResamplerProps::SetHalfFilterLength atau dengan mengatur properti MFPKEY_WMRESAMP_FILTERQUALITY . Jika Anda tidak menentukan kualitas output, DSP Audio Resampler menggunakan nilai kualitas default 30.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung |
Windows Vista [hanya aplikasi desktop] |
Server minimum yang didukung |
Windows Server 2008 [hanya aplikasi desktop] |
Header |
|
DLL |
|