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


Сбор сведений о Fine-Tuning

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Хотя частоты кабелей, как правило, должны быть точными, частота вещания может быть скорректирована на несколько кГц станцией вещания, чтобы уменьшить потенциальные помехи с соседними каналами.

Когда тв-тюнер фильтр настраивается на канал, он проверяет наиболее точный сигнал. Чтобы сохранить эти сведения в реестре для последующих операций настройки, выполните следующие действия.

  1. Вызовите IAMTuner::ChannelMinMax , чтобы определить диапазон записей частоты в текущей таблице частот.
  2. Вызовите метод IAMTuner::p ut_Channel один раз для каждого индекса частоты в диапазоне.
  3. Вызовите IAMTVTuner::StoreAutoTune, чтобы сохранить сведения о тонкой настройке в реестре. Сведения хранятся в разделе реестра для текущего пространства настройки.

Следующий код показывает эти действия.

long lMin = 0, lMax = 0;
hr = pTuner->ChannelMinMax(&lMin, &lMax);
if (SUCCEEDED(hr))
{
    for (long i = lMin; i <= lMax; i++)
    {
        pTuner->put_Channel(i, AMTUNER_SUBCHAN_DEFAULT,
            AMTUNER_SUBCHAN_DEFAULT)
    }
    pTuner->StoreAutoTune();
}

В более ранних версиях фильтра ТВ-тюнера для точной настройки рекомендуется метод IAMTVTuner::AutoTune . Однако этот метод игнорирует любые переопределения частоты, поэтому его использование больше не рекомендуется. Следующий код эквивалентен методу AutoTune , но правильно работает с переопределениями частоты:

HRESULT MyAutoTune(IAMTVTuner *pTuner, long lIndex, long *plFoundSignal)
{
    long SignalStrength = AMTUNER_NOSIGNAL;
    HRESULT hr;
    hr = pTuner->put_Channel(lIndex, AMTUNER_SUBCHAN_DEFAULT, AMTUNER_SUBCHAN_DEFAULT);
    if (NOERROR == hr)
        pTuner->SignalPresent(&SignalStrength);
    *plFoundSignal = (SignalStrength != AMTUNER_NOSIGNAL);
        return hr;
}

При приеме трансляции не всегда удается получить горизонтальную блокировку, хотя изображение доступно для просмотра. В таких случаях оборудование тюнера будет иметь блокировку частоты, но декодер не будет иметь горизонтальной блокировки. Это условие можно обнаружить при использовании put_Channel или AutoTune , изучив код возврата.

Значение Описание:
S_OK Операция настройки выполнена успешно, и тюнер получил блокировку частоты.
S_FALSE Во время операции настройки ошибок не было, но тюнер не смог получить блокировку частоты. Маловероятно, что в результате этой операции есть доступный для просмотра канал.

 

Любой другой код возврата указывает на то, что произошла ошибка.

Возвращаемое значение S_OK не гарантирует, что декодер имеет горизонтальную блокировку. Метод AutoTune обновляет параметр FoundSignal , чтобы указать, была ли достигнута горизонтальная блокировка. Метод IAMTuner::SignalPresent возвращает те же сведения.

Однако если возвращаемое значение S_OK, приложение может игнорировать параметр FoundSignal , так как тюнер сообщает о блокировке частоты. Существует возможность блокировки частоты шума, но эта возможность должна быть взвешена по сравнению с возможностью пропуска просматриваемых каналов.

Преобразование реестра

Для поддержки переопределений частоты изменился внутренний формат раздела реестра, в котором содержатся сведения о тонкой настройке. Исходный формат по-прежнему поддерживается для обратной совместимости, но не поддерживает переопределения частоты.

Старый формат реестра преобразуется в новый формат при каждом вызове метода IAMTVTuner::StoreAutoTune . Если приложение добавляет переопределения частоты, оно должно вызвать метод StoreAutoTune для преобразования в новый формат реестра. Нет необходимости собирать сведения о тонкой настройке перед вызовом StoreAutoTune.

Международная аналоговая настройка телевизоров