Compartir a través de


Recopilación de información de Fine-Tuning

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Aunque se espera que las frecuencias de los cables sean exactas, las frecuencias de difusión pueden ajustarse hacia arriba o hacia abajo varios kHz por la estación de difusión para reducir la posible interferencia con los canales vecinos.

Cuando el filtro de tuertro de TV se ajusta a un canal, busca la señal más precisa. Para guardar esta información en el Registro para las operaciones de optimización posteriores, haga lo siguiente:

  1. Llame a IAMTuner::ChannelMinMax para determinar el intervalo de entradas de frecuencia en la tabla de frecuencia actual.
  2. Llame al método IAMTuner::p ut_Channel una vez para cada índice de frecuencia del intervalo.
  3. Llame a IAMTVTuner::StoreAutoTune para guardar la información de ajuste en el registro. La información se almacena en la clave del Registro para el espacio de optimización actual.

El siguiente código muestra estos pasos:

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

Con versiones anteriores del filtro tuner de TV, se recomienda el método IAMTVTuner::AutoTune para ajustarla. Sin embargo, este método omite las invalidaciones de frecuencia, por lo que ya no se recomienda su uso. El código siguiente es equivalente al método AutoTune , pero funciona correctamente con invalidaciones de frecuencia:

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

Con la recepción de difusión, no siempre es posible obtener un bloqueo horizontal, aunque la imagen es visible. En estos casos, el hardware de tuner tendrá un bloqueo de frecuencia, pero el descodificador no tendrá bloqueo horizontal. Esta condición se puede detectar al usar put_Channel o AutoTune examinando el código de retorno.

Valor Descripción
S_OK La operación de optimización se realizó correctamente y el tuner obtuvo un bloqueo de frecuencia.
S_FALSE No hubo errores durante la operación de optimización, pero el tuner no pudo obtener un bloqueo de frecuencia. Es muy improbable que haya un canal visible resultante de esta operación.

 

Cualquier otro código de retorno indica que se produjo algún error.

Un valor devuelto de S_OK no garantiza que el descodificador tenga un bloqueo horizontal. El método AutoTune actualiza el parámetro FoundSignal para indicar si se alcanzó o no el bloqueo horizontal. El método IAMTuner::SignalPresent devuelve la misma información.

Sin embargo, cuando el valor devuelto es S_OK, la aplicación tiene la opción de omitir el parámetro FoundSignal , ya que el tuner informa de un bloqueo de frecuencia. Existe la posibilidad de un bloqueo de frecuencia en el ruido, pero esta posibilidad debe pesarse contra la posibilidad de omitir canales visibles.

Conversión del Registro

Para admitir invalidaciones de frecuencia, ha cambiado el formato interno de la clave del Registro que contiene información de ajuste preciso. El formato original sigue siendo compatible con versiones anteriores, pero no admite invalidaciones de frecuencia.

El formato del Registro anterior se convierte en el nuevo formato cada vez que se llama al método IAMTVTuner::StoreAutoTune . Si la aplicación agrega invalidaciones de frecuencia, debe llamar al método StoreAutoTune para convertir al nuevo formato del registro. No es necesario recopilar ninguna información de ajuste antes de llamar a StoreAutoTune.

Ajuste internacional de TV analógica