Exemple de filtre de synthèse

[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

Le filtre Synth est un filtre source qui génère des formes d’onde audio.

Ce filtre illustre la création de graphiques dynamiques. Il peut basculer entre le format audio PCM non compressé et le format MS_ADPCM compressé (Modulation de code d’impulsion delta adaptative Microsoft).

Ce filtre apparaît dans GraphEdit sous la forme « Filtre de synthétiseur audio ».

Pour plus d’informations sur la création de graphiques dynamiques, consultez Génération de graphiques dynamiques.

Utilisation

Le filtre Synth permet à l’utilisateur de définir la forme d’onde, la fréquence, le nombre de canaux et d’autres propriétés via la page de propriétés. Pour définir le point de terminaison supérieur ou inférieur de la plage de fréquences balayées, maintenez la touche MAJ enfoncée tout en ajustant le curseur de fréquence. Le filtre prend également en charge une interface personnalisée, ISynth2, pour définir ces propriétés.

Pour illustrer la fonctionnalité de création de graphique dynamique, procédez comme suit :

  1. Générez le filtre et inscrivez-le auprès de l’utilitaire Regsvr32.
  2. Lancez GraphEdit.
  3. Insérez le filtre Synthétiseur audio. Il apparaît dans la catégorie Filtres DirectShow.
  4. Affiche la broche de sortie du filtre.
  5. Cliquez sur le bouton Lire .
  6. Ouvrez la page de propriétés du filtre.
  7. Dans la zone Format de sortie, sélectionnez PCM ou Microsoft ADPCM.

Notes de programmation

Cet exemple contient les fichiers suivants :

  • Dynsrc.h, Dynsrc.cpp : contient deux classes de base pour les filtres sources qui prennent en charge la création de graphiques dynamiques, CDynamicSource et CDynamicSourceStream.
  • ISynth.h : déclare l’interface ISynth2 personnalisée pour définir des propriétés sur le filtre.
  • Resource.h : contient des constantes de ressource.
  • Synth.def : exporte les fonctions DLL nécessaires à la bibliothèque COM.
  • Synth.h, Synth.cpp : contient la classe CAudioSynth, qui génère les données audio, et la classe CSynthFilter, qui implémente le filtre.
  • Synth.rc : contient les ressources utilisées par le filtre.
  • Synthprp.h, Synthprp.cpp : implémente la page de propriétés du filtre.

La classe CDynamicSource est adaptée à partir de la classe de base CSource . Il utilise une ou plusieurs broches de sortie dérivées de la classe CDynamicSourceStream. La classe CDynamicSourceStream est adaptée de la classe CSourceStream , mais dérive de la classe CDynamicOutputPin plutôt que de la classe CBaseOutputPin .

La classe CDynamicSource a les méthodes suivantes introuvables dans CSource :

  • Arrêter : signale l’événement d’arrêt (CDynamicOutputPin::m_hStopEvent) et arrête le thread de travail pour toutes les broches non connectées. Sur une broche connectée, la méthode Inactive de la broche arrête le thread worker.
  • Pause : réinitialise l’événement d’arrêt.
  • JoinFilterGraph : appelle la méthode CDynamicOutputPin::SetConfigInfo sur chaque broche.

La classe CDynamicSourceStream a les méthodes suivantes introuvables dans CSourceStream :

  • DestroySourceThread : arrête le thread de travail.
  • FatalError : signale une erreur au gestionnaire de graphe de filtre.
  • OutputPinNeedsToBeReconnected : indique que la broche de sortie doit être reconnectée. Lorsque cette méthode est appelée, le thread de travail appelle la méthode CDynamicOutputPin::D ynamicReconnect pour reconnecter la broche.

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\Synth.

Exemples DirectShow