Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
Descrição
O filtro Synth é um filtro de origem que gera formas de onda de áudio.
Este filtro ilustra a construção de gráficos dinâmicos. Pode alternar entre áudio PCM não comprimido e formato MS_ADPCM comprimido (Microsoft Adaptive Delta Pulse Code Modulation).
Este filtro aparece no GraphEdit como "Filtro de sintetizador de áudio".
Para obter mais informações sobre a criação de gráficos dinâmicos, consulte Dynamic Graph Building.
Utilização
O filtro Synth permite que o usuário defina a forma de onda, frequência, número de canais e outras propriedades através da página de propriedades. Para definir o ponto final superior ou inferior da faixa de frequência varrida, mantenha pressionada a tecla SHIFT enquanto ajusta o controle deslizante de frequência. O filtro também suporta uma interface personalizada, ISynth2, para definir essas propriedades.
Para demonstrar o recurso de construção de gráficos dinâmicos, faça o seguinte:
- Crie o filtro e registre-o com o utilitário Regsvr32.
- Inicie o GraphEdit.
- Insira o filtro Sintetizador de Áudio. Ele aparece na categoria Filtros DirectShow.
- Renderize o pino de saída do filtro.
- Clique no botão Reproduzir.
- Abra a página de propriedades do filtro.
- Na área Formato de saída, selecione PCM ou Microsoft ADPCM.
Notas de programação
Este exemplo contém os seguintes ficheiros:
- Dynsrc.h, Dynsrc.cpp: Contém duas classes base para filtros de origem que suportam a criação de gráficos dinâmicos, CDynamicSource e CDynamicSourceStream.
- ISynth.h: Declara a interface ISynth2 personalizada para definir propriedades no filtro.
- Resource.h: Contém constantes de recursos.
- Synth.def: Exporta as funções DLL necessárias para a biblioteca COM.
- Synth.h, Synth.cpp: Contém a classe CAudioSynth, que gera os dados de áudio, e a classe CSynthFilter, que implementa o filtro.
- Synth.rc: Contém recursos usados pelo filtro.
- Synthprp.h, Synthprp.cpp: Implementa a página de propriedades do filtro.
A classe CDynamicSource é adaptada da classe base CSource. Ele usa um ou mais pinos de saída derivados da classe CDynamicSourceStream. A classe CDynamicSourceStream é adaptada da classe CSourceStream, mas deriva da classe CDynamicOutputPin em vez da classe CBaseOutputPin.
A classe CDynamicSource tem os seguintes métodos não encontrados no CSource:
- Parar: sinaliza o evento stop (CDynamicOutputPin::m_hStopEvent) e desliga o thread de trabalho para todos os pinos não conectados. Em um pino conectado, o método 'Inactive' do pino desativará o thread de trabalho.
- Pausar: redefine o evento stop.
- JoinFilterGraph: chama o métodoCDynamicOutputPin::SetConfigInfo em cada pino.
A classe CDynamicSourceStream tem os seguintes métodos não encontrados em CSourceStream:
- DestroySourceThread: desliga o thread de trabalho.
- FatalError: Sinaliza um erro para o gerenciador de gráficos de filtro.
- OutputPinNeedsToBeReconnected: Sinaliza que o pino de saída deve ser reconectado. Quando este método é chamado, a thread de trabalho chama o método CDynamicOutputPin::DynamicReconnect para reconectar o pino.
Download do exemplo
Para baixar os exemplos do SDK do DirectShow, instale a versão mais recente do SDK do Windows.
Este exemplo é instalado no seguinte caminho: [SDK Root]\Samples\Multimedia\DirectShow\Filters\Synth.
Tópicos relacionados