Connexion au matériel et démarrage
Une connexion doit être établie avec l’unité d’accélération matérielle via XDspConnect ou XDspConnectWithMaximumStreamLimit. 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, d’enveloppe et/ou de multiplicateur de bloc qui seront passées au matériel. Cette mémoire doit être allouée via 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 illustré dans 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 et d’au plus 500 Mo.
- aggregateImpulseResponseInSeconds : représente la durée totale 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 destiné à contenir 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 dans XDspActivationParameters 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 réponse impulsionnelle dans le domaine fréquentiel. 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 manière appropriée. Voici le code permettant d’activer un flux pour la convolution.- Remplir la mémoire tampon d’entrée avec exactement blockFrameCount de données.
- Renseigner XDspCommand avec les valeurs appropriées et 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 être utilisé pour suivre le nombre de commandes envoyées au matériel.
