Exemple de filtre Synth

Description

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

Ce filtre illustre la génération de graphiques dynamiques. Il peut basculer entre le format audio PCM non compressé et le _ format MS ADPCM compressé (Microsoft adaptative Delta Pulse Code Modulation).

Ce filtre apparaît dans GraphEdit comme « filtre de synthétiseur audio ».

pour plus d’informations sur la génération de graphiques dynamiques, consultez génération de Graph dynamique.

Usage

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 réglant le curseur fréquence. Le filtre prend également en charge une interface personnalisée, ISynth2, pour la définition de 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 avec l’utilitaire regsvr32.
  2. Lancez GraphEdit.
  3. Insérez le filtre de synthétiseur audio. il apparaît dans la catégorie filtres de DirectShow.
  4. Affichez la broche de sortie du filtre.
  5. Cliquez sur le bouton lecture .
  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 génération 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 requises par 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 . Elle utilise une ou plusieurs broches de sortie dérivées de la classe CDynamicSourceStream. La classe CDynamicSourceStream est adaptée à partir de la classe CSourceStream , mais dérive de la classe CDynamicOutputPin plutôt que de la classe CBaseOutputPin .

Les méthodes suivantes de la classe CDynamicSource sont introuvables dans CSource:

  • Stop : signale l’événement Stop (CDynamicOutputPin :: m _ hStopEvent) et arrête le thread de travail pour tous les codes confidentiels non connectés. Sur un code confidentiel connecté, la méthode inactive du pin arrête le thread de travail.
  • Pause : réinitialise l’événement d’arrêt.
  • JoinFilterGraph : appelle la méthode CDynamicOutputPin :: SetConfigInfo sur chaque pin.

Les méthodes suivantes de la classe CDynamicSourceStream sont introuvables dans CSourceStream:

  • DestroySourceThread : arrête le thread de travail.
  • FatalError : signale une erreur au gestionnaire de graphique de filtre.
  • OutputPinNeedsToBeReconnected : signale 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 le code confidentiel.

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 SDK Windows.

cet exemple est installé sous le chemin d’accès suivant : exemples [ racine ] du kit de développement logiciel (SDK) \ exemples de filtres de \ DirectShow multimédias \ \ \ .

DirectShow Extraits