GetShapeDmaFramesAvailable
Obtient le nombre de trames disponibles en lecture.Syntaxe
Paramètres
context _In_Type : SHAPE_DMA_CONTEXT* Pointeur vers une structure SHAPE_DMA_CONTEXT.
Valeur de retour
Type : UINT32 Nombre de trames disponibles en lecture.Remarques
Vous pouvez éviter les commandes d’accès direct à la mémoire (DMA) bloquées en vous assurant que votre mémoire tampon audio est suffisamment grande et que les données sont diffusées à intervalles réguliers (liés à la taille de la mémoire tampon). Par exemple, si vous diffusez quatre trames matérielles à la fois, assurez-vous qu’un multiple de ces trames (au moins en double mémoire tampon, soit huit trames) se trouve dans la mémoire tampon afin que le matériel puisse écrire avant le pointeur de lecture du titre. Vous pouvez aussi imposer le vidage de la mémoire tampon avant de soumettre le graphe de flux suivant (consommer, mettre à jour le pointeur de lecture DMA, puis soumettre le graphe de flux). Pour plus de détails, consultez Commandes bloquées dans Vue d’ensemble de SHAPE. Le système DMA prend en charge les fonctionnalités de lecture et d’écriture avec conversion automatique de virgule flottante en entier et d’entier en virgule flottante. Le système DMA utilise des mémoires tampons circulaires contenant des échantillons désentrelacés en blocs de 128 échantillons. Le processeur DMA permet au Scalable Hardware Audio Processing Engine (SHAPE) d’envoyer des données des mémoires tampons de mixage vers la mémoire principale du système et de récupérer des données de la mémoire principale du système dans les mémoires tampons de mixage pour un traitement ultérieur. Le DMA s’effectue par bloc, en transférant une trame audio de données à la fois. Pour faciliter les données entrelacées par bloc, une valeur de saut spécifie le nombre de blocs de trames audio en mémoire système à sauter (à partir de l’adresse de base) lors de la lecture ou de l’écriture d’échantillons. Les flux multicanaux nécessitent donc un contexte DMA par canal. Les échantillons de données audio sont toujours lus et écrits sous forme de valeurs 32 bits, entières ou à virgule flottante, comme spécifié dans l’indicateurfloatConvert de la structure SHAPE_DMA_CONTEXT. Notez que la direction du DMA (lecture ou écriture) est spécifiée dans la commande DMA, et non dans le contexte DMA. Cela aide à réduire la quantité de bande passante de données. Le moteur DMA n’effectue aucun traitement du signal, mais il peut effectuer une conversion de virgule flottante en entier (ou d’entier en virgule flottante). Cela permet au processeur de l’application de traiter les échantillons de données en format à virgule flottante.
Pour calculer la taille d’une mémoire tampon DMA, utilisez la formule suivante :
