RenderExclusiveEventDriven
Esta aplicación de ejemplo usa core Audio API para representar datos de audio en un dispositivo de salida especificado por el usuario. En este ejemplo se muestra el almacenamiento en búfer controlado por eventos para un cliente de representación en modo exclusivo. Para una secuencia en modo exclusivo, el cliente comparte el búfer del punto de conexión con el dispositivo de audio.
En este tema se incluyen las siguientes secciones.
- Descripción
- Requisitos
- Descarga del ejemplo
- Compilación del ejemplo
- Ejecutar el ejemplo
- Temas relacionados
Descripción
En este ejemplo se muestran las siguientes características.
- API MMDevice para la enumeración y selección de dispositivos multimedia.
- WASAPI para las operaciones de administración de flujos.
Requisitos
Producto | Versión |
---|---|
Windows SDK | Windows 7 |
Visual Studio | 2008 |
Descarga del ejemplo
Este ejemplo está disponible en las siguientes ubicaciones.
Location | Ruta de acceso y dirección URL |
---|---|
Windows SDK | \Archivos de programa\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\RenderExclusiveEventDriven\... |
Generar el ejemplo
Para compilar el ejemplo RenderExclusiveEventDriven, siga estos pasos:
- Abra el shell de CMD para Windows SDK y cambie al directorio de ejemplo RenderExclusiveEventDriven.
- Ejecute el comando
start WASAPIRenderExclusiveEventDriven.sln
en el directorio RenderExclusiveEventDriven para abrir el proyecto WASAPIRenderExclusiveEventDriven en la ventana de Visual Studio. - En la ventana, seleccione la configuración de la solución Depurar o Liberar , seleccione el menú Compilar en la barra de menús y seleccione la opción Compilar . Si no abre Visual Studio desde el shell de CMD para el SDK, Visual Studio no tendrá acceso al entorno de compilación del SDK. En ese caso, el ejemplo no se compilará a menos que establezca explícitamente la variable de entorno MSSdk, que se usa en el archivo del proyecto, WASAPIRenderExclusiveEventDriven.vcproj.
Ejecutar el ejemplo
Si compila correctamente la aplicación de demostración, se genera un archivo ejecutable, WASAPIRenderExclusiveEventDriven.exe. Para ejecutarlo, escriba WASAPIRenderExclusiveEventDriven
una ventana de comandos seguida de argumentos obligatorios o opcionales. En el ejemplo siguiente se muestra cómo ejecutar el ejemplo especificando la duración de reproducción en el dispositivo multimedia predeterminado.
WASAPIRenderExclusiveEventDriven.exe -d 20 -multimedia
En la tabla siguiente se muestran los argumentos.
Argumento | Descripción |
---|---|
-? | Muestra ayuda. |
-H | Muestra ayuda. |
-f | Frecuencia de onda de seno en Hz. |
-l | Latencia de representación de audio en milisegundos. |
-d | Duración de onda seno en segundos. |
-M | Deshabilita el uso de MMCSS. |
-Consola | Use el dispositivo de consola predeterminado. |
-Comunicaciones | Use el dispositivo de comunicación predeterminado. |
-Multimedia | Use el dispositivo multimedia predeterminado. |
-Extremo | Use el identificador de punto de conexión especificado en el valor del modificador. |
Si la aplicación se ejecuta sin argumentos, enumera los dispositivos disponibles y solicita al usuario que seleccione un dispositivo para la sesión de representación. Una vez que el usuario especifica un dispositivo, la aplicación representa una onda de seno a 440 Hz durante 10 segundos. Estos valores se pueden modificar especificando los valores de modificador -f y -d.
El ejemplo RenderExclusiveEventDriven muestra el almacenamiento en búfer controlado por eventos. En el ejemplo se muestra cómo:
- Cree una instancia de un cliente de audio, configúrelo para que se ejecute en modo exclusivo y habilite el almacenamiento en búfer controlado por eventos estableciendo la marca AUDCLNT_STREAMFLAGS_EVENTCALLBACK en la llamada a IAudioClient::Initialize.
- Asocie el cliente a los ejemplos que están listos para representarse proporcionando un identificador de eventos al sistema mediante una llamada al método IAudioClient::SetEventHandle .
- Cree un subproceso de representación para procesar ejemplos desde el motor de audio.
- Alinee los búferes correctamente en un límite de 128 bytes antes de enviarlos al dispositivo. Esto se hace ajustando la periodicidad del motor.
- Compruebe el formato de combinación del punto de conexión del dispositivo para determinar si se pueden representar los ejemplos. Si el dispositivo no admite el formato de combinación, los datos se convierten en PCM.
- Controlar el cambio de flujo.
Una vez que se inicia la sesión de representación y se inicia la secuencia, el motor de audio indica al controlador de eventos proporcionado que notifica al cliente cada vez que un búfer está listo para que el cliente procese. Los datos de audio también se pueden procesar en un bucle controlado por temporizador. Este modo se muestra en el ejemplo RenderExclusiveTimerDriven .
Para obtener más información sobre cómo representar una secuencia, consulte Representación de una secuencia.
Temas relacionados