Condividi tramite


Esempio di filtro Synth

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Descrizione

Il filtro Synth è un filtro di origine che genera forme d'onda audio.

Questo filtro illustra la compilazione dinamica del grafico. Può passare dal formato audio PCM non compresso al formato compresso MS_ADPCM (Microsoft Adaptive Delta Pulse Code Modulation).

Questo filtro viene visualizzato in GraphEdit come "Filtro sintetizzatore audio".

Per altre informazioni sulla compilazione dinamica del grafo, vedere Compilazione dinamica del grafo.

Utilizzo

Il filtro Synth consente all'utente di impostare la forma d'onda, la frequenza, il numero di canali e altre proprietà tramite la pagina delle proprietà. Per impostare l'endpoint superiore o inferiore dell'intervallo di frequenza spazzato, tenere premuto MAIUSC durante la regolazione del dispositivo di scorrimento della frequenza. Il filtro supporta anche un'interfaccia personalizzata, ISynth2, per l'impostazione di queste proprietà.

Per illustrare la funzionalità di compilazione dinamica del grafo, eseguire le operazioni seguenti:

  1. Compilare il filtro e registrarlo con l'utilità Regsvr32.
  2. Avviare GraphEdit.
  3. Inserire il filtro Sintetizzatore audio. Viene visualizzata nella categoria Filtri DirectShow.
  4. Eseguire il rendering del pin di output del filtro.
  5. Fare clic sul pulsante Riproduci .
  6. Aprire la pagina delle proprietà del filtro.
  7. Nell'area Formato output selezionare PCM o Microsoft ADPCM.

Note sulla programmazione

Questo esempio contiene i file seguenti:

  • Dynsrc.h, Dynsrc.cpp: contiene due classi di base per i filtri di origine che supportano la compilazione dinamica del grafo, CDynamicSource e CDynamicSourceStream.
  • ISynth.h: dichiara l'interfaccia ISynth2 personalizzata per l'impostazione delle proprietà nel filtro.
  • Resource.h: contiene costanti delle risorse.
  • Synth.def: esporta le funzioni DLL necessarie per la libreria COM.
  • Synth.h, Synth.cpp: contiene la classe CAudioSynth, che genera i dati audio e la classe CSynthFilter, che implementa il filtro.
  • Synth.rc: contiene le risorse usate dal filtro.
  • Synthprp.h, Synthprp.cpp: implementa la pagina delle proprietà del filtro.

La classe CDynamicSource viene adattata dalla classe di base CSource . Usa uno o più pin di output derivati dalla classe CDynamicSourceStream. La classe CDynamicSourceStream viene adattata dalla classe CSourceStream , ma deriva dalla classe CDynamicOutputPin anziché dalla classe CBaseOutputPin .

La classe CDynamicSource include i metodi seguenti non trovati in CSource:

  • Stop: segnala l'evento di arresto (CDynamicOutputPin::m_hStopEvent) e arresta il thread di lavoro per tutti i pin non connessi. Su un pin connesso, il metodo Inactive del pin arresterà il thread di lavoro.
  • Pausa: reimposta l'evento di arresto.
  • JoinFilterGraph: chiama il metodo CDynamicOutputPin::SetConfigInfo in ogni pin.

La classe CDynamicSourceStream include i metodi seguenti non trovati in CSourceStream:

  • DestroySourceThread: arresta il thread di lavoro.
  • FatalError: segnala un errore al gestore del grafo del filtro.
  • OutputPinNeedsToBeReconnected: segnala che il pin di output deve essere riconnesso. Quando questo metodo viene chiamato, il thread di lavoro chiama il metodo CDynamicOutputPin::D ynamicReconnect per riconnettere il pin.

Download dell'esempio

Per scaricare gli esempi di DirectShow SDK, installare la versione più recente di Windows SDK.

Questo esempio viene installato nel percorso seguente: [SDK Root]\Samples\Multimedia\DirectShow\Filters\Synth.

Esempi di DirectShow