Connexion au matériel et démarrage
Une connexion doit être établie avec l’unité d’accélération matérielle au moyen de XDspConnect. L’appelant définit les exigences de la connexion à l’aide des paramètres suivants :-
baseBuffer : pointeur vers la mémoire allouée par l’utilisateur, suffisante pour contenir les mémoires tampons d’entrée, de sortie et/ou de multiplicateur de bloc qui seront transmises au matériel. Cette mémoire doit être allouée au moyen de XMemAlloc avec les attributs suivants : XALLOC_MEMTYPE_PHYSICAL_CACHEABLE, XALLOC_PAGESIZE_64KB, XALLOC_ALIGNMENT_64K. Ces attributs doivent être définis à l’aide de
MAKE_XALLOC_ATTRIBUTES(), comme le montre l’exemple ci-dessous. Cette mémoire ne doit pas être libérée tant que l’appel à XDspDisconnect n’a pas réussi. Cette mémoire tampon doit avoir une taille d’au moins 64 Ko. - baseBufferLength : longueur de baseBuffer, en octets. Cette mémoire tampon doit avoir une taille d’au moins 64 Ko.
- aggregateImpulseResponseInSeconds : représente la durée globale de toutes les réponses impulsionnelles individuelles qui seront activées simultanément à l’aide de XDspActivate avec XDspProcessType::Convolution. Si cette valeur est 0, aucun flux avec XDspProcessType::Convolution ne peut être activé.
- handle : pointeur vers le XDspClientHandle qui contiendra le handle retourné par cet appel.
Activation et désactivation des flux
Une fois la connexion établie avec l’appareil, l’appelant doit envoyer une commande d’activation de flux pour lancer une convolution, une FFT ou une IFFT. L’appelant doit spécifier le XDspProcessType, le nombre de trames par bloc, le nombre de canaux, la longueur de la réponse impulsionnelle en valeurs float et un pointeur vers les données de la réponse impulsionnelle dans le domaine fréquentiel dans XDspActivationParameters. Seuls les flux mono ou stéréo sont autorisés. Pour XDspProcessType::ForwardFourierTransform et XDspProcessType::inverseFourierTransform, XDspActivationParameters::impulseResponse doit être nullptr et XDspActivationParameters::impulseResponseLengthInFloats = 0. XDspActivationOptions doit être défini de façon appropriée. Voici le code permettant d’activer un flux pour la transformée de Fourier directe; le code est semblable pour la transformée de Fourier inverse.- Remplir la mémoire tampon d’entrée avec exactement blockFrameCount données.
- Remplir XDspCommand avec les valeurs appropriées ainsi que des mémoires tampons d’entrée et de sortie alignées sur 16 octets.
- Appeler XDspSubmitCommand pour soumettre la commande au matériel. Cette fonction retourne un numéro de séquence de commande qui peut servir à suivre le nombre de commandes envoyées au matériel.
