Настройка аналогового телевидения
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Настройка управляется фильтром ТВ-тюнера через интерфейс IAMTVTuner . Интерфейс IAMTVTuner наследует IAMTuner. Чтобы получить указатель на интерфейс, вызовите метод ICaptureGraphBuilder2::FindInterface следующим образом:
IAMTVTuner *pTuner = NULL;
hr = pBuild->FindInterface(
&LOOK_UPSTREAM_ONLY, // Look upstream from pCap.
NULL, // No particular media type.
pCap, // Pointer to the capture filter.
IID_IAMTVTuner, (void**)&pTuner);
if (SUCCEEDED(hr))
{
// Use pTuner ...
pTuner->Release();
}
Первый параметр указывает на поиск вышестоящий из фильтра отслеживания.
Таблицы частоты
Внутри фильтра ТВ-тюнера хранится список таблиц частоты. Каждая таблица частот соответствует частоте вещания или кабельного кабеля для данной страны или региона. Существует также общая таблица частоты Unicable, которая используется, когда страна или регион не имеет стандартного набора назначений частоты.
Каждая таблица частоты содержит список частот настройки. Для некоторых стран или регионов индексы в таблице напрямую соответствуют номерам каналов. Другими словами, частота канала n является n-й записью в таблице. Однако в некоторых странах и регионах нет прямой связи между номерами каналов и частотами. В этом случае приложение должно хранить список, сопоставляющий номера каналов (обычно выбираемые пользователем) с записями таблицы частоты. Например, то, что пользователь видит как "канал 5", может быть номером 12 в таблице частот.
Дополнительные сведения см. в разделе Настройка международного аналогового тв.
Основные операции настройки
Если тюнер поддерживает несколько режимов приема, таких как телевизор и FM-радио, вызовите IAMTuner::p ut_Mode , чтобы выбрать этот режим. Метод IAMTuner::GetAvailableModes возвращает все режимы, поддерживаемые тюнером. Например, следующий код проверяет, поддерживает ли тюнер FM-радио, и, если да, переключается в этот режим.
// Check whether the mode is supported.
long lModes = 0;
hr = m_pTuner->GetAvailableModes(&lModes);
if (SUCCEEDED(hr) && (lModes & AMTUNER_MODE_FM_RADIO))
{
// Set the mode.
hr = pTuner->put_Mode(AMTUNER_MODE_FM_RADIO);
}
Чтобы задать страну или регион, вызовите метод IAMTuner::p ut_CountryCode . Тюнер использует это значение для выбора соответствующей таблицы частоты. Дополнительные сведения см. в разделе Назначения стран и регионов .
Чтобы задать канал, вызовите метод IAMTuner::p ut_Channel . Аргумент этого метода на самом деле является не номером канала, а индексом в текущей таблице частоты. Как описано ранее, номер индекса может соответствовать номеру канала. Метод IAMTuner::ChannelMinMax возвращает минимальное и максимальное значения индекса для текущей таблицы частоты.
Переопределение записей частоты
Возможно, некоторые записи в таблицах частот могут быть неправильными или устаревшими. Таким образом, предусмотрен механизм переопределения отдельных записей с помощью разделов реестра.
Особенности описаны в разделе Международный аналоговый тв тюнинг. Каждый раздел реестра определяет пространство настройки, содержащее один или несколько подразделов. Каждый подраздел переопределяет одну запись частоты. Чтобы задать текущее пространство настройки, используйте метод IAMTuner::p ut_TuningSpace . Активация пространства настройки переопределяет записи частоты в текущей таблице частот. Таким образом, приложение должно поддерживать соответствие между пространствами настройки и странами или регионами. Лучший подход — просто использовать идентификатор страны или региона в качестве имени пространства настройки.
Точная настройка записей частоты
Частота вещания может быть скорректирована на несколько кГц станцией вещания, чтобы уменьшить потенциальное вмешательство в соседние каналы. Учитывая номинальную частоту, тюнер карта может проверять точную частоту. Фильтр ТВ-тюнера имеет механизм сохранения скорректированных частот в реестре.
Для каждой записи в таблице частоты вызовите метод put_Channel для настройки этой частоты. Тюнер будет проверять наиболее точную частоту. Вы можете проверка, достиг ли тюнер горизонтальной блокировки, вызвав IAMTuner::SignalPresent. Фильтр ТВ-тюнера также сохраняет результат внутри.
После сканирования всех частот вызовите метод IAMTVTuner::StoreAutoTune, чтобы записать обновленные значения в реестр. Обновленные значения хранятся в записи реестра для текущего пространства настройки.
Связанные темы