TVAudioMode 列舉 (strmif.h)

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

指定電視音訊控制件的模式。

Syntax

typedef enum tagTVAudioMode {
  AMTVAUDIO_MODE_MONO = 0x1,
  AMTVAUDIO_MODE_STEREO = 0x2,
  AMTVAUDIO_MODE_LANG_A = 0x10,
  AMTVAUDIO_MODE_LANG_B = 0x20,
  AMTVAUDIO_MODE_LANG_C = 0x40,
  AMTVAUDIO_PRESET_STEREO = 0x200,
  AMTVAUDIO_PRESET_LANG_A = 0x1000,
  AMTVAUDIO_PRESET_LANG_B = 0x2000,
  AMTVAUDIO_PRESET_LANG_C = 0x4000
} TVAudioMode;

常數

 
AMTVAUDIO_MODE_MONO
值: 0x1
單。
AMTVAUDIO_MODE_STEREO
值: 0x2
立體。
AMTVAUDIO_MODE_LANG_A
值: 0x10
語言 A:主要音頻頻道。
AMTVAUDIO_MODE_LANG_B
值: 0x20
Languag B:次要音訊程式 (SAP) 。
AMTVAUDIO_MODE_LANG_C
值: 0x40
語言 C:第三種語言或主要音訊程式加上 SAP (,例如,來自一位說話者的英文,另一位說話者) 的日文。
AMTVAUDIO_PRESET_STEREO
值: 0x200
立體預設。
AMTVAUDIO_PRESET_LANG_A
值: 0x1000
Languag 預設。
AMTVAUDIO_PRESET_LANG_B
值: 0x2000
語言 B 預設。
AMTVAUDIO_PRESET_LANG_C
值: 0x4000
語言 C 預設。

備註

TVAudioMode 旗標分為兩個群組。

  • 位 0 - 7:模式旗標。 這些旗標包括單聲道/立體和語言 (A、B 或 C) 。
  • 位8和更新版本:預設旗標。
注意 默認旗標需要 Windows Vista 或更新版本。
 
模式旗標代表微調程式的目前音訊模式。 如果音訊號變更,預設旗標代表未來可能會生效的設定。 通常無法使用次要音訊程式,或只能在單聲道中使用。 應用程式可以使用預設旗標來儲存使用者慣用的語言,同時在無法使用該語言時提供合理的體驗。

下列備註說明 IAMTVAudio 方法如何解譯這些旗標。

IAMTVAudio::p ut_TVAudioMode

  • 如果您設定模式旗標,微調器會立即切換至該模式。 如果模式無法立即使用,方法就會失敗。
  • 如果您設定預設旗標,驅動程式會盡可能立即切換至該模式;否則,驅動程式會儲存要求。 如果稍後要求模式可供使用,驅動程式會切換至該模式。 驅動程式會跨程序變更或通道變更維護預設旗標。 只有在微調器無法支援該模式時,預設模式才會失敗。 它永遠不會因為音訊號的內容而失敗。
您可以將一個語言模式旗標結合 (AMTVAUDIO_MODE_LANG_AAMTVAUDIO_MODE_LANG_BAMTVAUDIO_MODE_LANG_C) 與一個立體/單聲道旗標 (AMTVAUDIO_MODE_MONOAMTVAUDIO_MODE_STEREO) 。 模式旗標的其他組合無效。 例如, AMTVAUDIO_MODE_LANG_A | AMTVAUDIO_MODE_LANG_B 無效。

您可以結合多個預設旗標。 驅動程式會依下列順序嘗試它們:

  1. 語言 C
  2. 語言 B
  3. 語言 A
  4. 立體聲
您可以合併模式旗標和預設旗標,但無法合併相同語言的模式旗標和預設旗標。 例如, AMTVAUDIO_MODE_LANG_A | AMTVAUDIO_PRESET_LANG_A 無效。 模式旗標的優先順序高於預設旗標。

如果方法因任何原因而失敗,微調程式的狀態即目前的模式加上預存的預設值不會變更。

除了語言 C 之外,微調器一律會在兩個音訊通道上串流相同的語言。

範例:呼叫端會設定 AMTVAUDIO_PRESET_STEREO | AMTVAUDIO_PRESET_LANG_B。 假設目前的程式以具有立體或單聲道的語言 B 的語言 A 提供。 驅動程式會選取語言 B (mono) ,因為該旗標優先。 稍後,程式會切換至僅以語言 A 提供的商業。驅動程式會切換為語言 A,因為無法使用語言 B。 當程序繼續時,驅動程式會切換回語言 B。

IAMTVAudio::GetAvailableTVAudioModes:此方法會傳回訊號中目前可用的模式。 這個方法永遠不會傳回預設旗標。

IAMTVAudio::GetHardwareSupportedTVAudioModes:此方法會傳回硬體支援的所有模式,包括預設模式。

IAMTVAudio::get_TVAudioMode:此方法會傳回目前的模式。 這個方法永遠不會傳回預設旗標。

遮罩常數

下列常數定義於 Strmif.h:
#define TVAUDIO_MODE_MASK 0x000000ff
#define TVAUDIO_PRESET_MASK 0x0000ff00

您可以使用 TVAUDIO_MODE_MASK 來選取模式旗標, 並TVAUDIO_PRESET_MASK 選取預設旗標:

C++
DWORD ModeFlags (DWORD AudioMode) { return AudioMode & TVAUDIO_MODE_MASK; }

DWORD PresetFlags(DWORD AudioMode) { return AudioMode & TVAUDIO_PRESET_MASK; }

規格需求

需求
標頭 strmif.h (包含 Dshow.h)

另請參閱

DirectShow 列舉型別

IAMTVAudio 介面