Synth 筛选器示例

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

说明

Synth 筛选器是生成音频波形的源筛选器。

此筛选器演示动态图形生成。 它可以在未压缩的 PCM 音频和压缩MS_ADPCM (Microsoft 自适应增量脉冲代码调制) 格式之间切换。

此筛选器在 GraphEdit 中显示为“音频合成器筛选器”。

有关动态图形生成的详细信息,请参阅 动态图形生成

使用情况

使用 Synth 筛选器,用户可以通过属性页设置波形、频率、通道数和其他属性。 若要设置扫描频率范围的上限或下限,请在调整频率滑块时按住 SHIFT。 筛选器还支持用于设置这些属性的自定义接口 ISynth2。

若要演示动态图形生成功能,请执行以下操作:

  1. 生成筛选器并将其注册到 Regsvr32 实用工具。
  2. 启动 GraphEdit。
  3. 插入音频合成器筛选器。 它显示在 DirectShow 筛选器类别中。
  4. 呈现筛选器的输出引脚。
  5. 单击“ 播放 ”按钮。
  6. 打开筛选器的属性页。
  7. 在“输出格式”区域中,选择“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 中找不到的方法:

CDynamicSourceStream 类具有以下在 CSourceStream 中找不到的方法:

  • DestroySourceThread:关闭工作线程。
  • FatalError:向筛选器图管理器发出错误信号。
  • OutputPinNeedsToBeReconnected:应重新连接输出引脚的信号。 调用此方法时,工作线程将调用 CDynamicOutputPin::D ynamicReconnect 方法来重新连接引脚。

下载示例

若要下载 DirectShow SDK 示例,请安装最新版本的 Windows SDK

此示例安装在以下路径下: [SDK 根]\Samples\Multimedia\DirectShow\Filters\Synth。

DirectShow 示例