RenderExclusiveTimerDriven

此示例应用程序使用核心音频 API 将音频数据呈现到用户指定的输出设备。 此示例演示以独占模式呈现客户端的计时器驱动缓冲。 对于独占模式流,客户端与音频设备共享终结点缓冲区。

本主题包含以下各节:

说明

此示例演示了以下功能。

  • 用于多媒体设备枚举和选择的 MMDevice API
  • 用于流管理操作的 WASAPI。

要求

产品 版本
Windows SDK Windows 7
Visual Studio 2008

 

下载示例

此样本在以下位置提供。

位置 路径/URL
Windows SDK \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\RenderExclusiveTimerDriven\...

 

生成示例

若要生成 RenderExclusiveTimerDriven 示例,请执行以下步骤:

  1. 打开 Windows SDK 的 CMD shell,并更改为 RenderExclusiveTimerDriven 示例目录。
  2. 在 RenderExclusiveTimerDriven 目录中运行 start WASAPIRenderExclusiveTimerDriven.sln 命令,在 Visual Studio 窗口中打开 WASAPIRenderExclusiveTimerDriven 项目。
  3. 在窗口中选择“调试”或“发布”解决方案配置,从菜单栏中选择“生成”菜单,然后选择“生成”选项。 如果未从 SDK 的 CMD shell 打开 Visual Studio,则 Visual Studio 将无法访问 SDK 的生成环境。 在这种情况下,除非显式设置了项目文件 WASAPIRenderExclusiveTimerDriven.vcproj 中使用的环境变量 MSSdk,否则将无法生成此示例。

查看示例文件

如果成功生成演示应用程序,则会生成一个可执行文件 WASAPIRenderExclusiveTimerDriven.exe。 要运行它,请在命令窗口中键入 WASAPIRenderExclusiveTimerDriven,然后输入必要或可选的参数。 以下示例展示了如何在默认控制台设备上通过指定播放持续时间来运行采样。

WASAPIRenderExclusiveTimerDriven.exe -d 20 -console

下表列出了参数。

参数 说明
-? 显示帮助。
-h 显示帮助。
-f 正弦波频率(以 Hz 为单位)。
-l 音频呈现延迟(以毫秒为单位)。
-d 正弦波持续时间(以秒为单位)。
-m 禁用 MMCSS。
-console 使用默认控制台设备。
-communications 使用默认通信设备。
-multimedia 使用默认多媒体设备。
-endpoint 使用开关值中指定的终结点标识符。

 

如果应用程序在没有参数的情况下运行,它会枚举可用的设备,并提示用户为呈现会话选择设备。 用户指定设备后,应用程序将在 440 Hz 处呈现正弦波 10 秒。 可以通过指定 -f 和 -d 开关值来修改这些值。

RenderExclusiveTimerDriven 演示计时器驱动的缓冲。 在这种模式下,客户端必须等待一段时间(延迟时间的一半,由 -d 开关值指定,单位为毫秒)。 当客户端唤醒时,处理时间已过半,它会从引擎中提取下一组样本。 在缓冲循环的每个处理环节之前,客户端必须弄清要呈现的数据量,以免数据超出缓冲区。

可以通过启用事件驱动的缓冲来处理指定设备上播放的音频数据。 RenderExclusiveTimerDriven 示例中演示了这种模式。

有关呈现流的详细信息,请参阅呈现流

使用核心音频 API 的SDK 示例