Поделиться через


Перечисление TVAudioMode (strmif.h)

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие 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_A, AMTVAUDIO_MODE_LANG_B или AMTVAUDIO_MODE_LANG_C) с одним флагом стерео- и моно (AMTVAUDIO_MODE_MONO или AMTVAUDIO_MODE_STEREO). Другие сочетания флагов режима недопустимы. Например, AMTVAUDIO_MODE_LANG_A | AMTVAUDIO_MODE_LANG_B является недопустимым.

Можно объединить несколько предустановленных флагов. Драйвер пытается выполнить их в следующем порядке:

  1. Язык C
  2. Язык B
  3. Язык A
  4. Stereo
Можно сочетать флаги режима и предустановленные флаги, но нельзя сочетать флаги режима и предустановленные флаги для одного языка. Например, AMTVAUDIO_MODE_LANG_A | AMTVAUDIO_PRESET_LANG_A является недопустимым. Флаги режима имеют приоритет над предустановленными флагами.

Если метод по какой-либо причине завершается сбоем, состояние тюнера , т. е. текущий режим и сохраненные предустановки, не изменяется.

За исключением языка C, тюнер всегда передает один и тот же язык по обоим аудиоканалам.

Пример. Вызывающий объект задает AMTVAUDIO_PRESET_STEREO | AMTVAUDIO_PRESET_LANG_B. Предположим, что текущая программа доступна на языке A со стерео или языком B с моно. Драйвер выбирает язык B (mono), так как этот флаг имеет приоритет. Позже программа переключится на коммерческую версию, доступную только на языке А. Драйвер переключается на язык 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