Ejemplo de filtro de synth
[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.
Descripción
El filtro Synth es un filtro de origen que genera formas de onda de audio.
Este filtro muestra la creación de grafos dinámicos. Puede cambiar entre el audio PCM sin comprimir y el formato de MS_ADPCM comprimido (Modulación de código de pulso delta adaptable de Microsoft).
Este filtro aparece en GraphEdit como "Filtro de sintetizador de audio".
Para obtener más información sobre la creación de grafos dinámicos, consulte Dynamic Graph Building.
Uso
El filtro Synth permite al usuario establecer la forma de onda, la frecuencia, el número de canales y otras propiedades a través de la página de propiedades. Para establecer el extremo superior o inferior del intervalo de frecuencia barrido, mantenga presionada la tecla MAYÚS mientras ajusta el control deslizante de frecuencia. El filtro también admite una interfaz personalizada, ISynth2, para establecer estas propiedades.
Para demostrar la característica de creación de grafos dinámicos, haga lo siguiente:
- Compile el filtro y regístrelo con la utilidad Regsvr32.
- Inicie GraphEdit.
- Inserte el filtro sintetizador de audio. Aparece en la categoría Filtros de directShow.
- Represente el pin de salida del filtro.
- Haga clic en el botón Reproducir .
- Abra la página de propiedades del filtro.
- En el área Formato de salida, seleccione PCM o Microsoft ADPCM.
Notas de programación
Este ejemplo contiene los siguientes archivos:
- Dynsrc.h, Dynsrc.cpp: contiene dos clases base para filtros de origen que admiten la creación dinámica de grafos, CDynamicSource y CDynamicSourceStream.
- ISynth.h: declara la interfaz ISynth2 personalizada para establecer propiedades en el filtro.
- Resource.h: contiene constantes de recursos.
- Synth.def: exporta las funciones DLL necesarias para la biblioteca COM.
- Synth.h, Synth.cpp: contiene la clase CAudioSynth, que genera los datos de audio y la clase CSynthFilter, que implementa el filtro.
- Synth.rc: contiene los recursos utilizados por el filtro.
- Synthprp.h, Synthprp.cpp: implementa la página de propiedades del filtro.
La clase CDynamicSource se adapta de la clase base CSource . Usa uno o varios pines de salida derivados de la clase CDynamicSourceStream. La clase CDynamicSourceStream se adapta de la clase CSourceStream , pero se deriva de la clase CDynamicOutputPin en lugar de la clase CBaseOutputPin .
La clase CDynamicSource tiene los métodos siguientes no encontrados en CSource:
- Stop: indica el evento stop (CDynamicOutputPin::m_hStopEvent) y apaga el subproceso de trabajo para todas las patillas no conectadas. En un pin conectado, el método Inactivo del pin apagará el subproceso de trabajo.
- Pausa: restablece el evento stop.
- JoinFilterGraph: llama al método CDynamicOutputPin::SetConfigInfo en cada patilla.
La clase CDynamicSourceStream tiene los métodos siguientes no encontrados en CSourceStream:
- DestroySourceThread: apaga el subproceso de trabajo.
- FatalError: indica un error al administrador de grafos de filtro.
- OutputPinNeedsToBeReconnected: indica que se debe volver a conectar el pin de salida. Cuando se llama a este método, el subproceso de trabajo llama al método CDynamicOutputPin::D ynamicReconnect para volver a conectar el pin.
Descarga del ejemplo
Para descargar los ejemplos del SDK de DirectShow, instale la versión más reciente de Windows SDK.
Este ejemplo se instala en la siguiente ruta de acceso: [SDK Root]\Samples\Multimedia\DirectShow\Filters\Synth.
Temas relacionados