Conexión con el hardware e inicio
Se debe establecer una conexión con la unidad de aceleración de hardware mediante XDspConnect o XDspConnectWithMaximumStreamLimit. El llamador establece los requisitos de la conexión mediante los parámetros siguientes:-
baseBuffer: un puntero a la memoria asignada por el usuario suficiente para contener los búferes de entrada, salida, envolvente o multiplicadores de bloque que se pasarán al hardware. Esta memoria se debe asignar mediante XMemAlloc con estos atributos: XALLOC_MEMTYPE_PHYSICAL_CACHEABLE, XALLOC_PAGESIZE_64KB, XALLOC_ALIGNMENT_64K. Estos atributos se deben establecer mediante
MAKE_XALLOC_ATTRIBUTES(), como se muestra en el ejemplo siguiente. Esta memoria no se debe liberar hasta que la llamada a XDspDisconnect se realice correctamente. Este búfer debe tener un tamaño mínimo de 64 KB. - baseBufferLength: la longitud del baseBuffer en bytes. Este búfer debe tener al menos 64 KB y no más de 500 MB.
- aggregateImpulseResponseInSeconds: representa la duración total de todas las respuestas al impulso individuales que se activarán simultáneamente mediante XDspActivate con XDspProcessType::Convolution. Si este valor es 0, no se puede activar ninguna secuencia con XDspProcessType::Convolution.
- handle: un puntero al XDspClientHandle que contendrá el identificador devuelto por esta llamada.
Activación y desactivación de secuencias
Una vez establecida la conexión con el dispositivo, el llamador debe enviar un comando de activación de secuencia para iniciar una convolución, FFT o IFFT. El llamador debe especificar el XDspProcessType, el número de tramas por bloque, el número de canales, la longitud de la respuesta al impulso en floats y un puntero a los datos de la respuesta al impulso en el dominio de la frecuencia en XDspActivationParameters. Solo se permiten secuencias mono o estéreo. Para XDspProcessType::ForwardFourierTransform y XDspProcessType::inverseFourierTransform, XDspActivationParameters::impulseResponse debe ser nullptr y XDspActivationParameters::impulseResponseLengthInFloats = 0. XDspActivationOptions se debe establecer adecuadamente. A continuación se muestra el código para activar una secuencia para convolución.- Rellenar el búfer de entrada con exactamente blockFrameCount de datos.
- Rellenar el XDspCommand con los valores adecuados y con búferes de entrada y salida alineados a 16 bytes.
- Llamar a XDspSubmitCommand para enviar el comando al hardware. Esta función devuelve un número de secuencia de comando que se puede usar para hacer un seguimiento del número de comandos enviados al hardware.
