Поделиться через


RenderExclusiveTimerDriven

В этом примере приложения используются API Core Audio для отрисовки звуковых данных на выходном устройстве, указанном пользователем. В этом примере демонстрируется буферизация на основе таймера для клиента отрисовки в монопольном режиме. Для потока монопольного режима клиент использует буфер конечной точки с звуковым устройством.

Эта тема описана в следующих разделах.

Description

В этом примере показаны следующие функции.

  • API MMDevice для перечисления и выбора мультимедийных устройств.
  • WASAPI для операций управления потоками.

Требования

Продукт Версия
Windows SDK Windows 7
Visual Studio 2008

 

Скачивание примера

Этот пример доступен в следующих расположениях.

Расположение Путь или URL-адрес
Пакет Windows SDK \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\RenderExclusiveTimerDriven\...

 

Построение образца

Чтобы создать пример RenderExclusiveTimerDriven, выполните следующие действия:

  1. Откройте оболочку CMD для пакета SDK для Windows и перейдите в пример каталога RenderExclusiveTimerDriven.
  2. Выполните команду start WASAPIRenderExclusiveTimerDriven.sln в каталоге RenderExclusiveTimerDriven, чтобы открыть проект WASAPIRenderExclusiveTimerDriven в окне Visual Studio.
  3. В окне выберите конфигурацию решения отладки или выпуска, выберите меню "Сборка" в строке меню и выберите параметр "Сборка". Если вы не открываете Visual Studio из оболочки CMD для пакета SDK, Visual Studio не будет иметь доступа к среде сборки пакета SDK. В этом случае пример не будет создаваться, если вы явно не задаете переменную среды MSSdk, которая используется в файле проекта, WASAPIRenderExclusiveTimerDriven.vcproj.

Просмотр примеров файлов

При успешной сборке демонстрационного приложения создается исполняемый файл, WASAPIRenderExclusiveTimerDriven.exe. Чтобы запустить его, введите WASAPIRenderExclusiveTimerDriven в командном окне, за которым следует обязательные или необязательные аргументы. В следующем примере показано, как запустить пример, указав длительность воспроизведения на устройстве консоли по умолчанию.

WASAPIRenderExclusiveTimerDriven.exe -d 20 -console

В следующей таблице показаны аргументы.

Аргумент Description
-? Отображает справку.
-h Отображает справку.
f- Частота синусовой волны в Гц.
-l Задержка отрисовки звука в миллисекундах.
-d Длительность синусовой волны в секундах.
-m Отключает использование MMCSS.
-Консоли Используйте консольное устройство по умолчанию.
-Коммуникаций Используйте устройство связи по умолчанию.
-Мультимедиа Используйте мультимедийное устройство по умолчанию.
-Конечной точки Используйте идентификатор конечной точки, указанный в значении коммутатора.

 

Если приложение выполняется без аргументов, оно перечисляет доступные устройства и предложит пользователю выбрать устройство для сеанса отрисовки. После того как пользователь указывает устройство, приложение отрисовывает синусную волну на 440 Гц в течение 10 секунд. Эти значения можно изменить, указав значения коммутатора -f и -d.

RenderExclusiveTimerDriven демонстрирует буферизацию на основе таймера. В этом режиме клиент должен ждать некоторое время (половина задержки, указанная значением параметра -d в миллисекундах). Когда клиент проснется, на полпути до периода обработки он извлекает следующий набор примеров из подсистемы. Перед каждой передачей обработки в цикле буферизации клиент должен выяснить объем данных для отрисовки, чтобы данные не перезавернули буфер.

Звуковые данные, которые будут воспроизводиться на указанном устройстве, можно обрабатывать путем включения буферизации на основе событий. Этот режим показан в примере RenderExclusiveTimerDriven.

Дополнительные сведения о отрисовке потока см. в разделе "Отрисовка потока".

Примеры пакета SDK, использующие основные API аудио