Synth 筛选器示例
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
说明
Synth 筛选器是生成音频波形的源筛选器。
此筛选器演示动态图形生成。 它可以在未压缩的 PCM 音频和压缩MS_ADPCM (Microsoft 自适应增量脉冲代码调制) 格式之间切换。
此筛选器在 GraphEdit 中显示为“音频合成器筛选器”。
有关动态图形生成的详细信息,请参阅 动态图形生成。
使用情况
使用 Synth 筛选器,用户可以通过属性页设置波形、频率、通道数和其他属性。 若要设置扫描频率范围的上限或下限,请在调整频率滑块时按住 SHIFT。 筛选器还支持用于设置这些属性的自定义接口 ISynth2。
若要演示动态图形生成功能,请执行以下操作:
- 生成筛选器并将其注册到 Regsvr32 实用工具。
- 启动 GraphEdit。
- 插入音频合成器筛选器。 它显示在 DirectShow 筛选器类别中。
- 呈现筛选器的输出引脚。
- 单击“ 播放 ”按钮。
- 打开筛选器的属性页。
- 在“输出格式”区域中,选择“PCM”或“Microsoft ADPCM”。
编程说明
此示例包含以下文件:
- Dynsrc.h、Dynsrc.cpp:包含支持动态图形生成的源筛选器的两个基类:CDynamicSource 和 CDynamicSourceStream。
- ISynth.h:声明用于设置筛选器属性的自定义 ISynth2 接口。
- Resource.h:包含资源常量。
- Synth.def:导出 COM 库所需的 DLL 函数。
- Synth.h、Synth.cpp:包含生成音频数据的 CAudioSynth 类和实现筛选器的 CSynthFilter 类。
- Synth.rc:包含筛选器使用的资源。
- Synthprp.h、Synthprp.cpp:实现筛选器的属性页。
CDynamicSource 类改编自 CSource 基类。 它使用派生自 CDynamicSourceStream 类的一个或多个输出引脚。 CDynamicSourceStream 类改编自 CSourceStream 类,但派生自 CDynamicOutputPin 类,而不是 CBaseOutputPin 类。
CDynamicSource 类具有以下在 CSource 中找不到的方法:
- 停止: (CDynamicOutputPin::m_hStopEvent) 发出停止事件信号,并关闭所有未连接的引脚的工作线程。 在连接的引脚上,引脚的 Inactive 方法将关闭工作线程。
- 暂停:重置停止事件。
- JoinFilterGraph:在每个引脚上调用 CDynamicOutputPin::SetConfigInfo 方法。
CDynamicSourceStream 类具有以下在 CSourceStream 中找不到的方法:
- DestroySourceThread:关闭工作线程。
- FatalError:向筛选器图管理器发出错误信号。
- OutputPinNeedsToBeReconnected:应重新连接输出引脚的信号。 调用此方法时,工作线程将调用 CDynamicOutputPin::D ynamicReconnect 方法来重新连接引脚。
下载示例
若要下载 DirectShow SDK 示例,请安装最新版本的 Windows SDK。
此示例安装在以下路径下: [SDK 根]\Samples\Multimedia\DirectShow\Filters\Synth。
相关主题