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


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

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

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

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

  1. Вызовите IAMTuner::ChannelMinMax, чтобы определить диапазон записей частот в текущей таблице частот.
  2. Вызовите метод IAMTuner::put_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не требуется собирать подробные сведения о настройке.

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