Condividi tramite


Raccolta di informazioni Fine-Tuning

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEnginee Acquisizione audio/video in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente di usare un nuovo codice MediaPlayer, IMFMediaEngine e Acquisizione audio/video in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Sebbene le frequenze dei cavi siano generalmente esatte, le frequenze di trasmissione possono essere regolate verso l'alto o il basso di diversi kHz dalla stazione di trasmissione per ridurre le potenziali interferenze con i canali adiacenti.

Quando il filtro tv Tuner si adatta a un canale, cerca il segnale più preciso. Per salvare queste informazioni nel Registro di sistema per le operazioni di ottimizzazione successive, eseguire le operazioni seguenti:

  1. Chiamare IAMTuner::ChannelMinMax per determinare la gamma delle voci di frequenza nella tabella di frequenza corrente.
  2. Chiamare il metodo IAMTuner::put_Channel una volta per ogni indice di frequenza nell'intervallo.
  3. Chiama IAMTVTuner::StoreAutoTune per salvare le informazioni di ottimizzazione nel Registro di sistema. Le informazioni vengono archiviate nella chiave del Registro di sistema per lo spazio di ottimizzazione corrente.

Il codice seguente illustra questi passaggi:

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 le versioni precedenti del filtro Tuner TV, il metodo IAMTVTuner::AutoTune è stato consigliato per l'ottimizzazione. Tuttavia, questo metodo ignora tutte le sostituzioni di frequenza, pertanto l'uso non è più consigliato. Il codice seguente equivale al metodo AutoTune, ma funziona correttamente con le sovrascritture della frequenza.

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 ricezione della trasmissione, non è sempre possibile ottenere un blocco orizzontale, anche se l'immagine è visualizzabile. In questi casi, l'hardware del tuner avrà un blocco frequenza, ma il decodificatore non avrà un blocco orizzontale. Questa condizione può essere rilevata quando si usa put_Channel o AutoTune esaminando il codice restituito.

Valore Descrizione
S_OK L'operazione di ottimizzazione è riuscita e il tuner ha ottenuto un blocco di frequenza.
S_FALSE Non si sono verificati errori durante l'operazione di ottimizzazione, ma il tuner non è riuscito a ottenere un blocco di frequenza. È molto improbabile che sia presente un canale visualizzabile risultante da questa operazione.

 

Qualsiasi altro codice restituito indica che si è verificato un errore.

Un valore restituito di S_OK non garantisce che il decodificatore abbia un blocco orizzontale. Il metodo AutoTune aggiorna il parametro FoundSignal per indicare se è stato raggiunto o meno il blocco orizzontale. Il metodo IAMTuner::SignalPresent restituisce le stesse informazioni.

Quando il valore restituito è S_OK, tuttavia, l'applicazione ha la possibilità di ignorare il parametro FoundSignal, perché il tuner segnala un blocco di frequenza. C'è la possibilità di un blocco di frequenza sul rumore, ma questa possibilità dovrebbe essere ponderata contro la possibilità di ignorare i canali visualizzabili.

Conversione del Registro di sistema

Per supportare le sostituzioni di frequenza, è stato modificato il formato interno della chiave del Registro di sistema che contiene informazioni di ottimizzazione. Il formato originale è ancora supportato per la compatibilità con le versioni precedenti, ma non supporta le sostituzioni della frequenza.

Il formato precedente del Registro di sistema viene convertito nel nuovo formato ogni volta che viene chiamato il metodo IAMTVTuner::StoreAutoTune. Se l'applicazione aggiunge sostituzioni di frequenza, deve chiamare il metodo StoreAutoTune per eseguire la conversione nel nuovo formato del registro. Non è necessario raccogliere informazioni di ottimizzazione prima di chiamare StoreAutoTune.

Sintonizzazione TV analogica internazionale