(mmreg.h)
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
在包含兩個通道以上的格式或比一個允許的 SAMPLEATEX所允許的樣本解析度時,其格式會定義電壓音訊資料的格式。 它也可以用來定義任何可由其定義的格式,由顯示于此格式。
語法
typedef struct {
WAVEFORMATEX Format;
union {
WORD wValidBitsPerSample;
WORD wSamplesPerBlock;
WORD wReserved;
} Samples;
DWORD dwChannelMask;
GUID SubFormat;
} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
成員
Format
指定基本格式的顯示方式。 wFormatTag成員必須WAVE_FORMAT_EXTENSIBLE。 cbSize成員必須至少為 22。
Samples
描述範例格式的聯集。
Samples.wValidBitsPerSample
訊號中的有效位數。 通常等於 顯示于「顯示」X.wBitsPerSample。 不過, wBitsPerSample 是容器大小,而且必須是 8 的倍數, 而 wValidBitsPerSample 可以是未超過容器大小的任何值。 例如,如果格式使用 20 位樣本, wBitsPerSample 必須至少為 24,但 wValidBitsPerSample 為 20。
Samples.wSamplesPerBlock
包含在一個音訊資料壓縮區塊中的樣本數目。 此值用於緩衝區估計。 此值會與壓縮格式搭配使用,這些格式在每個區塊內都有固定數目的樣本。 如果壓縮音訊資料的每個區塊中包含可變數目的樣本,這個值可以設定為 0。 在此情況下,需要以其他方式取得緩衝區估計和位置資訊。
Samples.wReserved
保留供作業系統內部使用。 設定為 0。
dwChannelMask
指定資料流程中通道指派給說話者位置的位元遮罩。
SubFormat
資料的子格式,例如KSDATAFORMAT_SUBTYPE_PCM。 子格式資訊類似于 在其WFormatTag 成員中由 TAG 提供的子格式資訊。
備註
其可 描述 任何可透過其顯示的格式,但為兩個以上的通道提供額外的支援、針對每個樣本的位數和新的壓縮配置,提供更高的精確度。
其只會設定由其所指定的額外位元組,因此可以安全地轉換成允許使用其來轉換至其單位。CBATEX.cbSize。
dwChannelMask成員會指定多重通道資料流程中存在的通道。 最小有效位會與左方喇叭相對應,下一個最小有效位對應至右方喇叭等等。 以重要性的順序定義位,如下所示。
喇叭位置 | 旗標位 |
---|---|
SPEAKER_FRONT_LEFT | 0x1 |
SPEAKER_FRONT_RIGHT | 0x2 |
SPEAKER_FRONT_CENTER | 0x4 |
SPEAKER_LOW_FREQUENCY | 0x8 |
SPEAKER_BACK_LEFT | 0x10 |
SPEAKER_BACK_RIGHT | 0x20 |
SPEAKER_FRONT_LEFT_OF_CENTER | 0x40 |
SPEAKER_FRONT_RIGHT_OF_CENTER | 0x80 |
SPEAKER_BACK_CENTER | 0x100 |
SPEAKER_SIDE_LEFT | 0x200 |
SPEAKER_SIDE_RIGHT | 0x400 |
SPEAKER_TOP_CENTER | 0x800 |
SPEAKER_TOP_FRONT_LEFT | 0x1000 |
SPEAKER_TOP_FRONT_CENTER | 0x2000 |
SPEAKER_TOP_FRONT_RIGHT | 0x4000 |
SPEAKER_TOP_BACK_LEFT | 0x8000 |
SPEAKER_TOP_BACK_CENTER | 0x10000 |
SPEAKER_TOP_BACK_RIGHT | 0x20000 |
dwChannelMask中指定的通道必須以指定的順序存在, (從最小有效位起) 。 例如,如果只指定SPEAKER_FRONT_LEFT和SPEAKER_FRONT_RIGHT,則前端喇叭的範例必須先出現在交錯的資料流程中。 dwChannelMask中設定的位數目應該與在其中指定之通道數目相同。nChannels。
為了回溯相容性,獨立 的 WAVEATEX 結構可以指定的任何波浪格式,也可以由 WAVEATEXTENSIBLE 結構定義。 因此,mmreg.h 中的每個波浪格式標記都有對應的 SubFormat GUID。 下表顯示一些典型的波浪格式標記及其對應的 SubFormat GUID。 這些 GUID 定義于 Ksmedia.h 中。
Wave-Format標籤 | SubFormat GUID |
---|---|
WAVE_FORMAT_PCM | KSDATAFORMAT_SUBTYPE_PCM |
WAVE_FORMAT_IEEE_FLOAT | KSDATAFORMAT_SUBTYPE_IEEE_FLOAT |
WAVE_FORMAT_DRM | KSDATAFORMAT_SUBTYPE_DRM |
WAVE_FORMAT_ALAW | KSDATAFORMAT_SUBTYPE_ALAW |
WAVE_FORMAT_MULAW | KSDATAFORMAT_SUBTYPE_MULAW |
WAVE_FORMAT_ADPCM | KSDATAFORMAT_SUBTYPE_ADPCM |
由於其為一個擴充版的一種顯示格式,因此可以描述無法單獨由其描述的其他格式。 廠商可以定義自己的 SubFormat GUID,以識別沒有波浪格式標記的專屬格式。
針對特定擴充格式,下列結構會定義為 「SQLATEXTENSIBLE」。
定義 | SubFormat 的值 |
---|---|
WAVEFORMATIEEEFLOATEX | KSDATAFORMAT_SUBTYPE_IEEE_FLOAT |
PACATPCMEX | KSDATAFORMAT_SUBTYPE_PCM |
規格需求
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
標頭 | mmreg.h |