Partager via


Réglage de la télévision analogique

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Le réglage est contrôlé par le filtre TV Tuner, via l’interface IAMTVTuner . L’interface IAMTVTuner hérite d’IAMTuner. Pour obtenir un pointeur vers l’interface, appelez la méthode ICaptureGraphBuilder2::FindInterface comme suit :

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

Le premier paramètre indique de rechercher amont à partir du filtre de capture.

Tables de fréquences

En interne, le filtre Tuner TV conserve une liste de tables de fréquences. Chaque table de fréquences correspond aux fréquences de diffusion ou de câble pour un pays/région donné. Il existe également une table de fréquences générique « Unicable », qui est utilisée lorsqu’un pays/région n’a pas d’ensemble standard d’attributions de fréquences.

Chaque table de fréquences contient une liste de fréquences de réglage. Pour certains pays/régions, les index de la table correspondent directement aux numéros de canal. En d’autres termes, la fréquence du canal n est la nième entrée de la table. Toutefois, pour certains pays/régions, il n’existe pas de correspondance directe entre les numéros de canal et les fréquences. Dans ce cas, l’application doit conserver une liste qui mappe les numéros de canal (généralement choisis par l’utilisateur) aux entrées de table de fréquence. Par exemple, ce que l’utilisateur voit comme « canal 5 » peut être l’entrée numéro 12 dans la table de fréquences.

Pour plus d’informations, consultez Réglage international de la télévision analogique.

Opérations de paramétrage de base

Si le tuner prend en charge plusieurs modes de réception, tels que la télévision et la radio FM, appelez IAMTuner::p ut_Mode pour sélectionner le mode. La méthode IAMTuner::GetAvailableModes retourne tous les modes pris en charge par le tuner. Par exemple, le code suivant vérifie si le tuner prend en charge la radio FM et, si c’est le cas, passe à ce mode.

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

Pour définir le pays/la région, appelez la méthode IAMTuner::p ut_CountryCode . Le tuner utilise cette valeur pour sélectionner la table de fréquences appropriée. Pour plus d’informations , consultez Attributions de pays/régions .

Pour définir le canal, appelez la méthode IAMTuner::p ut_Channel . L’argument de cette méthode n’est en fait pas un numéro de canal, mais plutôt un index dans la table de fréquences actuelle. Comme décrit précédemment, le numéro d’index peut correspondre ou non à un numéro de canal. La méthode IAMTuner::ChannelMinMax retourne les valeurs d’index minimales et maximales pour la table de fréquences actuelle.

Substitution d’entrées de fréquence

Il est possible que certaines entrées des tables de fréquence soient incorrectes ou deviennent obsolètes. Par conséquent, un mécanisme est fourni pour remplacer des entrées individuelles à l’aide de clés de Registre.

Les spécificités sont expliquées dans la rubrique Réglage international de la télévision analogique. Chaque clé de Registre définit un « espace de paramétrage » qui contient une ou plusieurs sous-clés. Chaque sous-clé remplace une entrée de fréquence. Pour définir l’espace de paramétrage actuel, utilisez la méthode IAMTuner::p ut_TuningSpace . L’activation de l’espace de paramétrage remplace les entrées de fréquence dans la table de fréquences actuelle. Par conséquent, il incombe à l’application de maintenir une correspondance entre les espaces de paramétrage et les pays/régions. La meilleure approche consiste simplement à utiliser l’identificateur de pays/région comme nom de l’espace de paramétrage.

Réglage des entrées de fréquence

Les fréquences de diffusion peuvent être ajustées de plusieurs kHz par la station de diffusion afin de réduire les interférences potentielles avec les canaux voisins. Étant donné la fréquence nominale, le tuner carte peut rechercher la fréquence exacte. Le filtre TV Tuner dispose d’un mécanisme permettant d’enregistrer les fréquences ajustées dans le registre.

Pour chaque entrée de la table de fréquences, appelez la méthode put_Channel pour régler cette fréquence. Le tuner recherche la fréquence la plus précise. Vous pouvez case activée si le tuner a atteint un verrou horizontal en appelant IAMTuner::SignalPresent. Le filtre Tuner TV stocke également le résultat en interne.

Après avoir analysé toutes les fréquences, appelez la méthode IAMTVTuner::StoreAutoTune pour écrire les valeurs mises à jour dans le Registre. Les valeurs mises à jour sont stockées sous l’entrée de Registre pour l’espace de paramétrage actuel.

Télévision analogique