Skip to main content

GetShapeDmaFramesFree

Obtiene el número de fotogramas disponibles para escribir.

Sintaxis

Parámetros

context   _In_
Tipo: SHAPE_DMA_CONTEXT*
Puntero a una estructura SHAPE_DMA_CONTEXT.

Valor devuelto

Tipo: UINT32 Número de fotogramas disponibles para escribir.

Comentarios

Puede evitar los comandos de acceso directo a memoria (DMA) bloqueados asegurándose de que el búfer de audio sea lo suficientemente grande y de que los datos se transmitan a intervalos regulares (en relación con el tamaño del búfer). Por ejemplo, si transmite cuatro fotogramas de hardware a la vez, asegúrese de que en el búfer haya algún múltiplo de esos fotogramas (al menos con doble búfer, es decir, ocho fotogramas) para que el hardware pueda escribir por delante del puntero de lectura del título. Como alternativa, podría exigir el vaciado del búfer antes de enviar el siguiente grafo de flujo (consumir, actualizar el puntero de lectura de DMA y, a continuación, enviar el grafo de flujo). Para obtener más detalles, consulte Comandos bloqueados en Información general sobre SHAPE. El sistema DMA admite funcionalidad de lectura y escritura con conversión automática de punto flotante a entero y de entero a punto flotante. El sistema DMA usa búferes circulares que contienen muestras desentrelazadas en bloques de 128 muestras. El procesador de DMA permite que el motor de procesamiento de audio por hardware escalable (SHAPE) envíe datos de los búferes de mezcla a la memoria principal del sistema y recupere datos del sistema principal en los búferes de mezcla para su procesamiento posterior. El DMA se realiza por bloques, transfiriendo un fotograma de audio de datos a la vez. Para facilitar los datos entrelazados por bloques, un valor de salto especifica el número de bloques de fotogramas de audio de la memoria del sistema que se deben omitir (desde la dirección base) al leer o escribir muestras. Por lo tanto, las secuencias multicanal requieren un contexto de DMA por canal. Las muestras de datos de audio siempre se leen y escriben como valores de 32 bits, ya sean enteros o de punto flotante, según se especifique en la marca floatConvert de la estructura SHAPE_DMA_CONTEXT. Tenga en cuenta que la dirección del DMA (lectura o escritura) se especifica en el comando DMA, no en el contexto de DMA. Esto ayuda a reducir la cantidad de ancho de banda de datos. El motor de DMA no realiza procesamiento de señal, pero puede realizar la conversión de punto flotante a entero (o de entero a punto flotante). Esto permite que la CPU de la aplicación procese las muestras de datos en formato de punto flotante. Para calcular el tamaño de un búfer DMA, use la fórmula siguiente:
Los punteros de lectura y escritura se incrementan de la siguiente manera:
Las direcciones dentro del búfer de audio se calculan de la siguiente manera:

Requisitos

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

Consulte también

ShapeDmaContext
Última modificación el 28 de agosto de 2026