Share via


(mmreg.h)

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 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

另請參閱

波波音訊

波形結構