Raccolta di informazioni Fine-Tuning
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture 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 del cavo siano generalmente esatte, le frequenze di trasmissione possono essere modificate verso l'alto o verso il basso diverse kHz dalla stazione di trasmissione per ridurre potenziali interferenze con i canali adiacenti.
Quando il filtro del tuner TV si adatta a un canale, analizza il segnale più preciso. Per salvare queste informazioni nel Registro di sistema per le operazioni di ottimizzazione successive, eseguire le operazioni seguenti:
- Chiamare IAMTuner::ChannelMinMax per determinare l'intervallo di voci di frequenza nella tabella di frequenza corrente.
- Chiamare il metodo IAMTuner::p ut_Channel una volta per ogni indice di frequenza nell'intervallo.
- Chiamare IAMTVTuner::StoreAutoTune per salvare le informazioni di ottimizzazione fine 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 TV Tuner, il metodo IAMTVTuner::AutoTune è stato consigliato per l'ottimizzazione fine. Tuttavia, questo metodo ignora eventuali overridi di frequenza, pertanto l'uso non è più consigliato. Il codice seguente equivale al metodo AutoTune , ma funziona correttamente con gli overridi di 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 di 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 ha avuto esito positivo e il tuner ha ottenuto un blocco di frequenza. |
S_FALSE | Non sono stati rilevati errori durante l'operazione di ottimizzazione, ma il tuner non è stato in grado di ottenere un blocco di frequenza. È molto improbabile che vi sia 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 l'opzione 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 sulla possibilità di ignorare i canali visualizzabili.
Conversione del Registro di sistema
Per supportare le sostituzioni di frequenza, il formato interno della chiave del Registro di sistema che contiene informazioni di ottimizzazione completa è stato modificato. Il formato originale è ancora supportato per la compatibilità con le versioni precedenti, ma non supporta gli overridi di 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 overridi di frequenza, deve chiamare il metodo StoreAutoTune per convertire nel nuovo formato del Registro di sistema. Non è necessario raccogliere informazioni di ottimizzazione fine prima di chiamare StoreAutoTune.
Argomenti correlati