Analoge Fernsehoptimierung

[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.]

Die Optimierung wird durch den TV Tuner-Filter über die IAMTVTuner-Schnittstelle gesteuert. Die IAMTVTuner-Schnittstelle erbt IAMTuner. Um einen Zeiger auf die Schnittstelle zu erhalten, rufen Sie die ICaptureGraphBuilder2::FindInterface-Methode wie folgt auf:

IAMTVTuner *pTuner = NULL;
hr = pBuild->FindInterface(
    &LOOK_UPSTREAM_ONLY,  // Look upstream from pCap.
    NULL,                 // No particular media type.
    pCap,                 // Pointer to the capture filter.
    IID_IAMTVTuner, (void**)&pTuner);
if (SUCCEEDED(hr))
{
    // Use pTuner ...
    pTuner->Release();
}

Der erste Parameter gibt an, Upstream aus dem Erfassungsfilter zu suchen.

Häufigkeitstabellen

Intern führt der TV-Tuner-Filter eine Liste von Frequenztabellen. Jede Frequenztabelle entspricht den Übertragungs- oder Kabelfrequenzen für ein bestimmtes Land/eine bestimmte Region. Es gibt auch eine generische "Unicable"-Frequenztabelle, die verwendet wird, wenn ein Land/eine Region nicht über einen Standardsatz von Frequenzzuweisungen verfügt.

Jede Frequenztabelle enthält eine Liste der Optimierungshäufigkeiten. Für einige Länder/Regionen entsprechen die Indizes in der Tabelle direkt den Kanalnummern, d. h. die Häufigkeit für Kanal n ist der n-te Eintrag in der Tabelle. Für einige Länder/Regionen besteht jedoch keine direkte Übereinstimmung zwischen Kanalnummern und Frequenzen. In diesem Fall muss die Anwendung eine Liste führen, die Kanalnummern (in der Regel vom Benutzer ausgewählt) Den Einträgen von Häufigkeitstabellen zuordnet. Was der Benutzer z. B. als "Kanal 5" sieht, könnte eintrag 12 in der Häufigkeitstabelle sein.

Weitere Informationen finden Sie unter International Analog TV Tuning.

Grundlegende Optimierungsvorgänge

Wenn der Tuner mehrere Empfangsmodi wie Fernsehen und UKW-Radio unterstützt, rufen Sie IAMTuner::p ut_Mode auf, um den Modus auszuwählen. Die IAMTuner::GetAvailableModes-Methode gibt alle Vom Tuner unterstützten Modi zurück. Der folgende Code überprüft beispielsweise, ob der Tuner UKW-Radio unterstützt, und wechselt in diesen Modus.

// Check whether the mode is supported.
long lModes = 0;
hr = m_pTuner->GetAvailableModes(&lModes);
if (SUCCEEDED(hr) && (lModes & AMTUNER_MODE_FM_RADIO))
{
    // Set the mode.
    hr = pTuner->put_Mode(AMTUNER_MODE_FM_RADIO);
}

Um das Land/die Region festzulegen, rufen Sie die IAMTuner::p ut_CountryCode-Methode auf. Der Tuner verwendet diesen Wert, um die entsprechende Häufigkeitstabelle auszuwählen. Weitere Informationen finden Sie unter Länder-/Regionszuweisungen .

Rufen Sie zum Festlegen des Kanals die IAMTuner::p ut_Channel-Methode auf. Das Argument für diese Methode ist eigentlich keine Kanalnummer, sondern ein Index in der aktuellen Häufigkeitstabelle. Wie bereits beschrieben, kann die Indexnummer einer Kanalnummer entsprechen. Die IAMTuner::ChannelMinMax-Methode gibt die minimalen und maximalen Indexwerte für die aktuelle Häufigkeitstabelle zurück.

Überschreiben von Häufigkeitseinträgen

Es ist möglich, dass einige Einträge in den Häufigkeitstabellen falsch sind oder veraltet sind. Daher wird ein Mechanismus zum Überschreiben einzelner Einträge mithilfe von Registrierungsschlüsseln bereitgestellt.

Die Einzelheiten werden im Thema International Analog TV Tuning erläutert. Jeder Registrierungsschlüssel definiert einen "Optimierungsbereich", der mindestens einen Unterschlüssel enthält. Jeder Unterschlüssel überschreibt einen Häufigkeitseintrag. Verwenden Sie zum Festlegen des aktuellen Optimierungsbereichs die IAMTuner::p ut_TuningSpace-Methode . Durch Aktivieren des Optimierungsbereichs werden die Häufigkeitseinträge in der aktuellen Frequenztabelle überschrieben. Daher ist es an der Anwendung, eine Übereinstimmung zwischen Optimierungsräumen und Ländern/Regionen aufrechtzuerhalten. Der beste Ansatz besteht darin, einfach den Landes-/Regionsbezeichner als Namen des Optimierungsbereichs zu verwenden.

Optimieren der Häufigkeitseinträge

Die Übertragungsfrequenzen können von der Rundfunkstation um mehrere kHz nach oben oder unten angepasst werden, um potenzielle Störungen mit benachbarten Kanälen zu verringern. Aufgrund der Nennfrequenz kann der Tuner Karte nach der genauen Frequenz suchen. Der TV-Tuner-Filter verfügt über einen Mechanismus zum Speichern der angepassten Frequenzen in der Registrierung.

Rufen Sie für jeden Eintrag in der Häufigkeitstabelle die put_Channel-Methode auf, um diese Häufigkeit zu optimieren. Der Tuner sucht nach der genauesten Frequenz. Sie können überprüfen, ob der Tuner eine horizontale Sperre erreicht hat, indem Sie IAMTuner::SignalPresent aufrufen. Der TV Tuner-Filter speichert das Ergebnis auch intern.

Nachdem Sie alle Frequenzen überprüft haben, rufen Sie die IAMTVTuner::StoreAutoTune-Methode auf, um die aktualisierten Werte in die Registrierung zu schreiben. Die aktualisierten Werte werden unter dem Registrierungseintrag für den aktuellen Optimierungsbereich gespeichert.

Analoges Fernsehen