Sammeln von Fine-Tuning Informationen
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]
Obwohl die Kabelfrequenzen im Allgemeinen als genau erwartet werden, können die Übertragungsfrequenzen von der Sendestation um mehrere kHz nach oben oder unten angepasst werden, um potenzielle Störungen mit benachbarten Kanälen zu verringern.
Wenn der TV-Tuner-Filter auf einen Kanal zustimmt, sucht er nach dem präzisesten Signal. Gehen Sie wie folgt vor, um diese Informationen in der Registrierung für nachfolgende Optimierungsvorgänge zu speichern:
- Rufen Sie IAMTuner::ChannelMinMax auf, um den Bereich der Häufigkeitseinträge in der aktuellen Häufigkeitstabelle zu bestimmen.
- Rufen Sie die IAMTuner::p ut_Channel-Methode einmal für jeden Frequenzindex im Bereich auf.
- Rufen Sie IAMTVTuner::StoreAutoTune auf, um die Optimierungsinformationen in der Registrierung zu speichern. Die Informationen werden unter dem Registrierungsschlüssel für den aktuellen Optimierungsbereich gespeichert.
Diese Schritte sind im folgenden Code dargestellt:
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();
}
Bei früheren Versionen des TV Tuner-Filters wurde die IAMTVTuner::AutoTune-Methode für die Optimierung empfohlen. Diese Methode ignoriert jedoch alle Häufigkeitsüberschreibungen, sodass die Verwendung nicht mehr empfohlen wird. Der folgende Code entspricht der AutoTune-Methode , funktioniert aber ordnungsgemäß mit Häufigkeitsüberschreibungen:
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;
}
Beim Broadcastempfang ist es nicht immer möglich, eine horizontale Sperre zu erhalten, obwohl das Bild sichtbar ist. In diesen Fällen verfügt die Tunerhardware über eine Frequenzsperre, der Decoder jedoch nicht über eine horizontale Sperre. Diese Bedingung kann erkannt werden, wenn Sie put_Channel oder AutoTune verwenden, indem Sie den Rückgabecode untersuchen.
Wert | BESCHREIBUNG |
---|---|
S_OK | Der Tunevorgang war erfolgreich, und der Tuner erhielt eine Frequenzsperre. |
S_FALSE | Während des Optimierungsvorgangs sind keine Fehler aufgetreten, aber der Tuner konnte keine Frequenzsperre erhalten. Es ist sehr unwahrscheinlich, dass ein sichtbarer Kanal aus diesem Vorgang resultiert. |
Jeder andere Rückgabecode gibt an, dass ein Fehler aufgetreten ist.
Der Rückgabewert S_OK garantiert nicht, dass der Decoder über eine horizontale Sperre verfügt. Die AutoTune-Methode aktualisiert den FoundSignal-Parameter , um anzugeben, ob eine horizontale Sperre erreicht wurde. Die IAMTuner::SignalPresent-Methode gibt die gleichen Informationen zurück.
Wenn der Rückgabewert S_OK ist, hat die Anwendung jedoch die Möglichkeit, den FoundSignal-Parameter zu ignorieren, da der Tuner eine Frequenzsperre meldet. Es besteht die Möglichkeit einer Frequenzsperre für Rauschen, aber diese Möglichkeit sollte gegen die Möglichkeit des Überspringens sichtbarer Kanäle abgewogen werden.
Registrierungskonvertierung
Um Häufigkeitsüberschreibungen zu unterstützen, wurde das interne Format des Registrierungsschlüssels geändert, der Feinabstimmungsinformationen enthält. Das ursprüngliche Format wird aus Gründen der Abwärtskompatibilität weiterhin unterstützt, aber es unterstützt keine Häufigkeitsüberschreibungen.
Das alte Registrierungsformat wird immer dann in das neue Format konvertiert, wenn die IAMTVTuner::StoreAutoTune-Methode aufgerufen wird. Wenn Ihre Anwendung Häufigkeitsüberschreibungen hinzufügt, sollte sie die StoreAutoTune-Methode aufrufen, um in das neue Registrierungsformat zu konvertieren. Vor dem Aufruf von StoreAutoTune müssen keine Feinabstimmungsinformationen gesammelt werden.
Zugehörige Themen