Share via


Exemple de filtre Metronome

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

Description

Cet exemple de filtre montre comment implémenter une horloge de référence. Le filtre utilise votre entrée de microphone par défaut pour écouter les pics audio (tels que les clics, les claquements de main ou les toux), qu’il utilise pour déterminer une fréquence d’horloge.

Utilisation

Générez l’exemple de projet et copiez la DLL de filtre (Metronom.ax) dans votre répertoire système Windows. Exécutez le fichier Metronom.reg pour inscrire la DLL.

Pour utiliser le filtre :

  1. Créez un graphique de filtre dans GraphEdit qui affiche un flux vidéo.
  2. Supprimez tous les flux audio rendus.
  3. Ajoutez le filtre Metronome au graphique. Il apparaît dans la catégorie Filtres DirectShow.
  4. Exécutez le graphique. La lecture de la vidéo commence à une vitesse normale.
  5. Tapez vos mains ou utilisez un métronome pour définir une nouvelle vitesse.

Notes de programmation

Ce filtre fonctionne uniquement pour la vidéo. Le convertisseur audio n’est pas capable de se synchroniser avec des fréquences d’horloge radicalement différentes.

Si vous frappez 92 fois par minute (une fois toutes les ~652 ms), la vidéo sera lue au rythme normal. Vous pouvez modifier cette valeur par défaut en modifiant la valeur de la constante BPM dans Metronom.cpp.

Si vous arrêtez d’applaudir pendant un certain temps, puis recommencez à taper, vous devez redémarrer à peu près à la même vitesse, sinon le filtre l’ignorera. En outre, le taux de lecture vidéo est limité par la vitesse du processeur. Si vous dépassez la limite pendant une durée quelconque, le filtre cesse de répondre aux modifications de débit. Si cela se produit, arrêtez le graphique et redémarrez.

Si vous implémentez votre propre horloge, les règles les plus importantes sont que les horloges de référence ne doivent pas reculer. Autrement dit, ils ne doivent jamais signaler une valeur de temps inférieure à la valeur d’heure précédente.

Téléchargement de l’exemple

Pour télécharger les exemples du Kit de développement logiciel (SDK) DirectShow, installez la dernière version du Kit de développement logiciel (SDK) Windows.

Cet exemple est installé sous le chemin d’accès suivant : [Racine du SDK]\Samples\Multimedia\DirectShow\Filters\Metronome.

CBaseReferenceClock, classe

Exemples DirectShow