Skip to main content

IAcpHal::SubmitCommand

Envía un comando al ACP.

Sintaxis

Parámetros

command   
Tipo: ACP_COMMAND_TYPE
El comando. Consulte la enumeración ACP_COMMAND_TYPE. commandId   
Tipo: UINT64
Identificador opcional y arbitrario del comando. Este identificador se devolverá con mensajes específicos. Es un UINT64 para admitir el paso de un puntero como identificador del comando. audioFrame   
Tipo: UINT32
Si se especifica un número de fotograma de audio, el comando se procesará al principio de ese fotograma de audio, a menos que ya haya pasado, en cuyo caso el procesamiento comenzará en el siguiente fotograma de audio. También hay dos valores especiales para este parámetro:
  • ACP_SUBMIT_PROCESS_COMMAND_ASAP indica al ACP que procese el comando lo antes posible, en el fotograma de audio actual, si es posible.
  • ACP_SUBMIT_PROCESS_COMMAND_NEXT_FRAME indica al ACP que procese el comando al principio del siguiente fotograma de audio. Si el comando es para actualizar un contexto, este contexto se actualizará antes de que comience el procesamiento del grafo de flujo. Esto retrasa el inicio del procesamiento del grafo de flujo, lo que podría hacer que los grafos con un número elevado de voces descarten voces.
data   _In_opt_
Tipo: void*
Datos opcionales asociados al comando. La mayoría de los comandos requieren una estructura de datos. notification   _In_opt_
Tipo: APU_ADDRESS
Dirección física opcional de un elemento UINT32 que se establecerá en un valor distinto de cero cuando se complete el comando. El puntero correspondiente a la dirección virtual debe declararse como volatile. Esto es similar a un mensaje de comando completado, salvo que no se requiere un mensaje para señalar la finalización de un comando. Cuando XAudio2 envía un comando al ACP, usa este puntero de notificación al comprobar si el comando se completó.

Valor devuelto

Tipo: HRESULT Si el método se ejecuta correctamente, devuelve S_OK. Si el método falla, devuelve uno de los códigos siguientes (lista parcial):

Comentarios

Esta es la única API que permite a un título comunicarse con el procesador de control de audio (ACP), el motor de procesamiento de audio por hardware escalable (SHAPE) y XMA. La duración de los datos enviados mediante este método SubmitCommand es variable. Solo se hace referencia al puntero a la estructura que se pasa como entrada durante la llamada a la API; esto significa que un desarrollador puede usar variables locales de forma segura. Si el comando contiene un puntero a otro bloque de datos, esos datos no se copian y deben permanecer presentes hasta que el ACP haya procesado el comando. Esto se hace para minimizar la cantidad de datos que se deben copiar internamente. Si la administración de la duración de los datos adicionales del comando es una preocupación, una aplicación puede registrarse para los mensajes de comando completado, a fin de recibir un mensaje exactamente cuando ya no se haga referencia a los datos adicionales del comando. Si un título envía uno o varios comandos con la marca ACP_SUBMIT_PROCESS_COMMAND_NEXT_FRAME establecida o con un número de fotograma de audio específico, todos estos comandos se procesan al principio del fotograma de audio especificado y antes de que se realice cualquier otro procesamiento. Tenga en cuenta que, dado que todos los comandos del ACP son asincrónicos en la CPU principal, una llamada a IAcpHal::SubmitCommand no bloqueará el procesamiento. El siguiente es el método más eficaz para que un título use notificaciones:
  1. Mediante ApuCreateHeap, cree un montón de APU en el que el tamaño no almacenado en caché sea lo suficientemente grande como para contener todos los contextos que necesita el título y todas las notificaciones que usará. Si no se llama a este método antes de cualquier otro método o del ACP, se asignará un montón predeterminado.
  2. Asigne una matriz no almacenada en caché de UINT32 con un tamaño igual al número de notificaciones necesarias: es decir, el número total de actualizaciones de contexto que se emitirán por fotograma de audio. Tenga en cuenta que es muy ineficaz asignar una notificación a la vez.

Requisitos

Encabezado: acphal.h Plataformas compatibles: consolas de la familia XBOX One y consolas XBOX Series

Consulte también

ACP_COMMAND_TYPE AcpHal
Última modificación el 28 de agosto de 2026