tvAudioMode 枚举 (strmif.h)

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

指定电视音频控件的模式。

语法

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:第三语言或main音频程序加上 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。 假设当前程序在具有立体声的语言 A 或带单声道的语言 B 中可用。 驱动程序选择语言 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; }

要求

要求
Header strmif.h (包括 Dshow.h)

另请参阅

DirectShow 枚举类型

IAMTVAudio 接口