音訊訊號處理模式

驅動程式會宣告每個裝置支援的音訊訊號處理模式。

可用的訊號處理模式

應用程式) 所選取的音訊類別 (會對應至驅動程式) 所定義的音訊模式 (。 Windows 定義七種音訊訊號處理模式。 OEM 和 IHV 可以判斷他們想要實作的模式。 建議 IHD/OEM 利用新的模式來新增音訊效果,以優化音訊訊號以提供最佳的使用者體驗。 下表摘要說明這些模式。

模式 轉譯/擷取 Description
Raw 兩者 原始模式指定不應該套用至資料流程的任何訊號處理。 應用程式可以要求完全未變更的原始資料流程,並執行自己的訊號處理。
Default 兩者 此模式會定義預設音訊處理。
電影* 轉譯 電影音訊播放
媒體* 兩者 大部分媒體串流的音樂音訊播放 (預設值)
演講* 擷取 人類語音擷取 (例如 Cortana 的輸入)
通信* 兩者 VOIP 轉譯和擷取 (例如 Skype、Lync)
通知* 轉譯 鈴鐺、警示、警示等。

* Windows 10的新功能。

訊號處理模式驅動程式需求

音訊裝置磁碟機至少需要支援 原始預設 模式。 支援其他模式是選擇性的。

並非所有模式都可能適用于特定系統。 驅動程式會定義它們支援哪些訊號處理模式 (,亦即驅動程式) 安裝哪些類型的 ADO,並據以通知 OS。 如果驅動程式不支援特定模式,則 Windows 會使用下一個最佳的比對模式。

下圖顯示支援多個模式的系統:

此圖顯示支援多個音訊模式的系統,其中包含多個 SFX 和 MFX 效果。

Windows 音訊串流類別

為了通知系統音訊資料流程的使用方式,應用程式可以選擇使用特定音訊串流類別標記資料流程。 應用程式可以在建立音訊串流之後,使用任何音訊 API 來設定音訊類別。 Windows 10有九個音訊串流類別。

類別 描述
電影 影片、影片與對話方塊 (取代 ForegroundOnlyMedia)
媒體 媒體播放的預設類別 (取代 BackgroundCapableMedia)
遊戲聊天 使用者之間的遊戲內通訊 (Windows 10) 中的新類別
語音 語音輸入 (例如個人助理) 和輸出 (,例如導覽應用程式) (Windows 10) 中的 [新增] 類別
通訊 VOIP,即時聊天
警示 警示、環形音調、通知
音效 嗶聲、dings 等等
遊戲媒體 在遊戲音樂中
遊戲效果 球彈、汽車引擎音效、專案符號等。
其他 未分類的資料流程

如先前所述,應用程式 (選取的音訊類別) 會對應至驅動程式) 定義的音訊模式 (。 應用程式可以使用 10 個音訊類別的其中一個來標記其每個資料流程。

應用程式沒有選項可變更音訊類別與訊號處理模式之間的對應。 應用程式不知道「音訊處理模式」的概念。 他們無法找出每個資料流程所使用的模式。

WASAPI 程式碼範例

WASAPIAudio 範例中的下列 WASAPI 程式碼示範如何設定不同的音訊類別。

// The ActivateAudioInterfaceAsync is a replacment for IMMDevice::Activate
IActivateAudioInterfaceAsyncOperation *asyncOp = nullptr;
HRESULT hr = S_OK;

String ^defaultRender = Windows::Media::Devices::MediaDevice::GetDefaultAudioRenderId( Windows::Media::Devices::AudioDeviceRole::Default );

hr = ActivateAudioInterfaceAsync( defaultRender->Data(), __uuidof( IAudioClient3 ), nullptr, this, &asyncOp );
if ( FAILED( hr ) ) { … }
…

// the app’s implementation of IActivateAudioInterfaceCompetionHandler is invoked asynchronously
HRESULT ActivateAudioInterfaceCompletionHandler::ActivateCompleted( IActivateAudioInterfaceAsyncOperation *activateOperation ) {
    HRESULT hr = S_OK;
    HRESULT hrActivateResult = S_OK;
    IUnknown *pUnknown = nullptr;
    IAudioClient3 *pAudioClient3 = nullptr;

    hr = activateOperation->GetActivateResult( &hrActivateResult, &pUnknown );
    if ( FAILED( hr ) )  { … }
    if ( FAILED( hrActivateResult ) ) { … }

    hr = pUnknown->QueryInterface( IID_PPV_ARGS( &pAudioClient3 ) );
    if ( FAILED( hr ) ) { … }

    // The IAudioClient3::SetClientProperties call needs to happen after activation completes,
    // but before the call to IAudioClient3::Initialize or IAudioClient3::InitializeSharedAudioStream.
    AudioClientProperties props = {};
    props.cbSize = sizeof(props);
    props.eCategory = AudioCategory_GameEffects;
    pAudioClient3->SetClientProperties( &props );
    if ( FAILED( hr ) ) { … }

    hr = pAudioClient3->InitializeSharedAudioStream( … );
    if ( FAILED( hr ) ) { … }

    …

訊號處理模式和效果

OEM 會定義將用於每個模式的效果。 Windows 會定義十七種類型的音訊效果清單。

如需如何將 ADO 與模式產生關聯的資訊,請參閱 實作音訊處理物件

應用程式可能會詢問哪些效果會套用至特定資料流程,以進行 RAW 或非 RAW 處理。 應用程式也可以要求在效果或原始處理狀態變更時收到通知。 應用程式可以使用這項資訊來判斷通訊等特定串流類別是否可用,或者是否只有 RAW 模式正在使用中。 如果只有 RAW 模式可用,應用程式可以判斷要新增多少音訊處理。

如果 System.Devices.AudioDevice.RawProcessingSupported 為 true,應用程式也可以選擇在特定資料流程上設定「使用 RAW」旗標。 如果 System.Devices.AudioDevice.RawProcessingSupported 為 false,應用程式就無法設定 「使用 RAW」旗標。

應用程式無法看見有多少模式存在,但 RAW/非 RAW 除外。

無論音訊硬體設定為何,應用程式都應該要求最佳的音訊效果處理。 例如,將資料流程標記為 Communications,會讓 Windows 知道暫停背景音樂。

如需靜態音訊資料流程類別的詳細資訊,請參閱 AudioCategory 列舉MediaElement.AudioCategory 屬性

系統效果的 CLSID

FX_DISCOVER_EFFECTS_APO_CLSID

這是 MsApoFxProxy.dll「Proxy 效果」的 CLSID,它會查詢驅動程式以取得作用中效果的清單;

FX_DISCOVER_EFFECTS_APO_CLSID  = "{889C03C8-ABAD-4004-BF0A-BC7BB825E166}"

KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE

KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE是核心資料流程的識別碼,可識別所參考的特定屬性,是訊號處理模式屬性。

這裡顯示的 #define 語句可在 KSMedia.h 標頭檔中取得。

#define STATIC_KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE 0xe1f89eb5, 0x5f46, 0x419b, 0x96, 0x7b, 0xff, 0x67, 0x70, 0xb9, 0x84, 0x1
DEFINE_GUIDSTRUCT("E1F89EB5-5F46-419B-967B-FF6770B98401", KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE);
#define KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE DEFINE_GUIDNAMED(KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE)

KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE用於具有 KSDATARANGE 結構的模式感知驅動程式,其中包含 KSATTRIBUTE_LIST。 此清單中有單一元素,其為 KSATTRIBUTEKSATTRIBUTE結構的 Attribute 成員會設定為 KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE。

音訊效果

下列音訊效果可用於Windows 10。

音訊效果 Description
聲場 Echo 取消 (AEC) 聲場回音取消 (AEC) 在音訊串流中存在之後移除回音來改善音訊品質。
雜訊抑制 (NS) 雜訊抑制 (NS) 會在音訊串流中出現雜訊時抑制雜訊,例如靜音和噪音。
自動增益控制 (AGC) 自動增益控制 (AGC) - 的設計目的是要在其輸出中提供受控制的訊號幅度,儘管輸入訊號中的幅度變化。 平均或尖峰輸出訊號層級是用來動態調整輸入對輸出的增益至適當的值,啟用穩定的輸出層級,即使輸入訊號等級也一般。
柱形 (BF) 聲道成形 (BF) 是用於方向訊號傳輸或接收的訊號處理技術。 這可藉由將階段陣列中的元素結合在一起,如此一來,特定角度的訊號就會經歷破壞性干擾,而其他人則遇到破壞性干擾。 相較于全向接收/傳輸的改善,稱為接收/傳輸 (或遺失) 。
固定音調移除 固定音調移除可用來衰減常數背景雜訊,例如磁帶他、電風扇或聲道。
等化器 Equalizer 效果是用來使用線性篩選來改變音訊系統的頻率回應。 這可讓訊號的不同部分提升,類似于 Treble 或 bass 設定。
音調等位器 音量等位器效果可藉由將音訊輸出撫平,以減少感知的音量差異,讓音量變高且更靜音的音效更接近平均音量的音量。
Bass Boost 在具有有限音功能的膝上型電腦這類系統中,有時可以藉由提升喇叭所支援頻率範圍中的 Bass 回應來提升音訊的認知品質。 Bass boost 可藉由增加中音範圍增加,來改善具有非常小型喇叭的行動裝置音效。
虛擬周圍 虛擬括住會使用簡單的數位方法,將多通道訊號結合成兩個通道。 這是透過允許轉換的訊號還原至原始多通道訊號的方式完成,方法是使用大多數新式音訊接收器中可用的 Pro Logic 解碼器。 虛擬環繞適用于具有雙聲道音效硬體的系統,以及具有環繞音效增強機制的接收者。
虛擬耳機 虛擬化的環繞音效可讓戴著耳機的使用者從前到後和側邊區分音效。 這是透過傳輸空間提示來協助大腦當地語系化音效,並將其整合到音效欄位中來完成。 這可讓音效感覺超出耳機,建立「外部」接聽體驗。 使用稱為「前端相關傳輸函式」的進階技術, (HRTF) 來達成此效果。 HRTF 會產生以人類頭部形狀為基礎的聲場提示。 這些提示不僅可協助接聽程式找出音效的方向和來源,也會增強接聽程式周圍的聲場環境類型。
演講者填滿 大部分音樂只會使用兩個頻道來產生,因此,不會針對一般音訊或視訊愛好者的多通道音訊裝置進行優化。 因此,只讓音樂從左至右和右前喇叭是較不理想的音訊體驗。 喇叭填滿會模擬多通道喇叭設定。 它允許只聽兩個喇叭的音樂,以在會議室中的所有喇叭上播放,以增強空間感覺。
會議室更正 會議室校正會藉由自動計算延遲、頻率回應和取得調整的最佳組合,將會議室中特定位置的接聽體驗優化,例如您的同事中心。 會議室校正功能更能比對視訊畫面上的影像,而且在桌面喇叭放置在非標準位置時也很有用。 室內校正處理對於高階接收者中的類似功能有所改善,因為它更能考慮人類聽聲的方式。 校正是透過麥克風的協助執行,而且程式可以搭配立體和多通道系統使用。 使用者將麥克風放在使用者想要放置的位置,然後啟動測量會議室回應的精靈。 精靈會依序播放一組特別設計的音調,並測量麥克風位置中每個喇叭的距離、頻率回應和整體增益。
Bass Management 有兩種 Bass 管理模式:正向 Bass 管理和反向 Bass 管理。 轉送 Bass 管理 會篩選出音訊資料流程的低頻率內容。 正向 Bass 管理演算法會根據可處理深度 Bas 頻率的通道,將篩選的輸出重新導向至子聲道或向左和右喇叭通道。 此決策是以 LRBig 旗標的設定為基礎。 若要設定 LRBig 旗標,使用者會使用 主控台 中的音效小程式來存取 [Bass 管理設定] 對話方塊。 使用者選取一個核取方塊,以指出前端和左方喇叭是完整範圍,而此動作會設定 LRBig 旗標。 若要清除此旗標,請選取核取方塊。 反向 Bass 管理 會將訊號從子聲道散發至其他輸出通道。 視 LRBig 旗標的設定而定,訊號會導向至所有通道或向左和右方通道。 此程式會在將子聲道訊號混合至其他通道時,使用大幅降低的收益。 使用的 Bass 管理模式取決於主喇叭的子聲道和音音處理功能的可用性。 在 Windows 中,使用者透過 主控台 中的音效小程式提供這項資訊。
環境效果 環境效果可藉由更精確地模擬真實世界的音訊環境,來增加音訊播放的實境。 您可以選取許多不同的環境,例如「運動場」模擬運動場的聲場。
說話者保護 說話者保護的目的是要抑制會導致說話者對任何電腦系統元件造成實體損害的共音訊率。 例如,某些實體硬碟可能會以正確的頻率播放音效來損毀。 其次,說話者保護可藉由在超過特定值時衰減訊號,將喇叭的損害降到最低。
說話者補償 某些喇叭比其他說話者更能重現音效。 例如,特定喇叭可能會衰減低於 100 Hz 的音效。 有時候音訊驅動程式和韌體 DSP 解決方案對於他們播放的說話者的特定效能特性有了解,而且可以新增設計來補償說話者限制的處理。 例如,可以建立 EFX) (端點效果,以套用至低於 100 Hz 的頻率。 當與實體喇叭中的衰減結合時,這個效果會產生增強的音訊逼真度。
動態範圍壓縮 動態範圍壓縮會縮小或「壓縮」音訊訊號的動態範圍,以放大靜音音效。 音訊壓縮會放大低於特定閾值的無聲音效,而音效仍不會受到影響。

這裡顯示的 #define 語句可在 KSMedia.h 標頭檔中取得。

DEFAULT

#define STATIC_AUDIO_SIGNALPROCESSINGMODE_DEFAULT 0xc18e2f7e, 0x933d, 0x4965, 0xb7, 0xd1, 0x1e, 0xef, 0x22, 0x8d, 0x2a, 0xf3
DEFINE_GUIDSTRUCT("C18E2F7E-933D-4965-B7D1-1EEF228D2AF3", AUDIO_SIGNALPROCESSINGMODE_DEFAULT);
#define AUDIO_SIGNALPROCESSINGMODE_DEFAULT DEFINE_GUIDNAMED(AUDIO_SIGNALPROCESSINGMODE_DEFAULT)

RAW

#define STATIC_AUDIO_SIGNALPROCESSINGMODE_RAW 0x9e90ea20, 0xb493, 0x4fd1, 0xa1, 0xa8, 0x7e, 0x13, 0x61, 0xa9, 0x56, 0xcf
DEFINE_GUIDSTRUCT("9E90EA20-B493-4FD1-A1A8-7E1361A956CF", AUDIO_SIGNALPROCESSINGMODE_RAW);
#define AUDIO_SIGNALPROCESSINGMODE_RAW DEFINE_GUIDNAMED(AUDIO_SIGNALPROCESSINGMODE_RAW)

聲場回應取消

#define STATIC_AUDIO_EFFECT_TYPE_ACOUSTIC_ECHO_CANCELLATION 0x6f64adbe, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adbe-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_ACOUSTIC_ECHO_CANCELLATION);
#define AUDIO_EFFECT_TYPE_ACOUSTIC_ECHO_CANCELLATION DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_ACOUSTIC_ECHO_CANCELLATION)

雜訊抑制

#define STATIC_AUDIO_EFFECT_TYPE_NOISE_SUPPRESSION          0x6f64adbf, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adbf-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_NOISE_SUPPRESSION);
#define AUDIO_EFFECT_TYPE_NOISE_SUPPRESSION DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_NOISE_SUPPRESSION)

自動增益控制

#define STATIC_AUDIO_EFFECT_TYPE_AUTOMATIC_GAIN_CONTROL     0x6f64adc0, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc0-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_AUTOMATIC_GAIN_CONTROL);
#define AUDIO_EFFECT_TYPE_AUTOMATIC_GAIN_CONTROL DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_AUTOMATIC_GAIN_CONTROL)

波束 形成

#define STATIC_AUDIO_EFFECT_TYPE_BEAMFORMING                0x6f64adc1, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc1-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_BEAMFORMING);
#define AUDIO_EFFECT_TYPE_BEAMFORMING DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_BEAMFORMING)

固定音調移除

#define STATIC_AUDIO_EFFECT_TYPE_CONSTANT_TONE_REMOVAL      0x6f64adc2, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc2-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_CONSTANT_TONE_REMOVAL);
#define AUDIO_EFFECT_TYPE_CONSTANT_TONE_REMOVAL DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_CONSTANT_TONE_REMOVAL)

均衡

#define STATIC_AUDIO_EFFECT_TYPE_EQUALIZER                  0x6f64adc3, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc3-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_EQUALIZER);
#define AUDIO_EFFECT_TYPE_EQUALIZER DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_EQUALIZER)

大聲等等化程式

#define STATIC_AUDIO_EFFECT_TYPE_LOUDNESS_EQUALIZER         0x6f64adc4, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc4-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_LOUDNESS_EQUALIZER);
#define AUDIO_EFFECT_TYPE_LOUDNESS_EQUALIZER DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_LOUDNESS_EQUALIZER)

BASS BOOST

#define STATIC_AUDIO_EFFECT_TYPE_BASS_BOOST                 0x6f64adc5, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc5-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_BASS_BOOST);
#define AUDIO_EFFECT_TYPE_BASS_BOOST DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_BASS_BOOST)

虛擬括住

#define STATIC_AUDIO_EFFECT_TYPE_VIRTUAL_SURROUND           0x6f64adc6, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc6-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_VIRTUAL_SURROUND);
#define AUDIO_EFFECT_TYPE_VIRTUAL_SURROUND DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_VIRTUAL_SURROUND)

虛擬耳機

#define STATIC_AUDIO_EFFECT_TYPE_VIRTUAL_HEADPHONES         0x6f64adc7, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc7-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_VIRTUAL_HEADPHONES);
#define AUDIO_EFFECT_TYPE_VIRTUAL_HEADPHONES DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_VIRTUAL_HEADPHONES)

會議室更正

#define STATIC_AUDIO_EFFECT_TYPE_ROOM_CORRECTION            0x6f64adc9, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc9-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_ROOM_CORRECTION);
#define AUDIO_EFFECT_TYPE_ROOM_CORRECTION DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_ROOM_CORRECTION)

BASS 管理

#define STATIC_AUDIO_EFFECT_TYPE_BASS_MANAGEMENT            0x6f64adca, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adca-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_BASS_MANAGEMENT);
#define AUDIO_EFFECT_TYPE_BASS_MANAGEMENT DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_BASS_MANAGEMENT)

環境效果

#define STATIC_AUDIO_EFFECT_TYPE_ENVIRONMENTAL_EFFECTS      0x6f64adcb, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adcb-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_ENVIRONMENTAL_EFFECTS);
#define AUDIO_EFFECT_TYPE_ENVIRONMENTAL_EFFECTS DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_ENVIRONMENTAL_EFFECTS)

說話者保護

#define STATIC_AUDIO_EFFECT_TYPE_SPEAKER_PROTECTION         0x6f64adcc, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adcc-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_SPEAKER_PROTECTION);
#define AUDIO_EFFECT_TYPE_SPEAKER_PROTECTION DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_SPEAKER_PROTECTION)

說話者補償

#define STATIC_AUDIO_EFFECT_TYPE_SPEAKER_COMPENSATION       0x6f64adcd, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adcd-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_SPEAKER_COMPENSATION);
#define AUDIO_EFFECT_TYPE_SPEAKER_COMPENSATION DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_SPEAKER_COMPENSATION)

動態範圍壓縮

#define STATIC_AUDIO_EFFECT_TYPE_DYNAMIC_RANGE_COMPRESSION  0x6f64adce, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adce-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_DYNAMIC_RANGE_COMPRESSION);
#define AUDIO_EFFECT_TYPE_DYNAMIC_RANGE_COMPRESSION DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_DYNAMIC_RANGE_COMPRESSION)