다음을 통해 공유


Fine-Tuning 정보 수집

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

케이블 주파수는 일반적으로 정확할 것으로 예상되지만 브로드캐스트 주파수는 인접 채널과의 잠재적 간섭을 줄이기 위해 브로드캐스트 스테이션에 의해 여러 kHz 위로 또는 아래로 조정될 수 있습니다.

TV 튜너 필터가 채널로 조정되면 가장 정확한 신호를 검색합니다. 후속 튜닝 작업을 위해 레지스트리에 이 정보를 저장하려면 다음을 수행합니다.

  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();
}

이전 버전의 TV 튜너 필터에서는 미세 조정을 위해 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을 호출하기 전에 미세 조정 정보를 수집할 필요가 없습니다.

국제 아날로그 TV 튜닝