> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GetShapeDmaFramesFree

> GetShapeDmaFramesFree

# GetShapeDmaFramesFree

Obtient le nombre de trames disponibles pour l'écriture.

## Syntaxe

```cpp theme={null}
UINT32 GetShapeDmaFramesFree(  
         const SHAPE_DMA_CONTEXT* context  
)  
```

### Paramètres

*context*   \_In\_\
Type : [SHAPE\_DMA\_CONTEXT\*](/fr/reference/audio/shapedmacontext/structs/shape_dma_context)

Pointeur vers une structure [SHAPE\_DMA\_CONTEXT](/fr/reference/audio/shapedmacontext/structs/shape_dma_context).

### Valeur renvoyée

Type : UINT32

Nombre de trames disponibles pour l'écriture.

## Remarques

Vous pouvez éviter le blocage des commandes d'accès direct à la mémoire (DMA) en veillant à ce que votre tampon audio soit suffisamment grand et à ce que les données soient diffusées à intervalles réguliers (en fonction de la taille du tampon). Par exemple, si vous diffusez quatre trames matérielles à la fois, assurez-vous qu'un multiple de ces trames (au moins un double tampon de huit trames) se trouve dans le tampon afin que le matériel puisse écrire en avance sur le pointeur de lecture du titre. Vous pouvez également imposer le vidage du tampon avant de soumettre le flowgraph suivant (consommer, mettre à jour le pointeur de lecture DMA, puis soumettre le flowgraph). Pour plus de détails, consultez [Commandes bloquées](/fr/build/console-features/audio/overviews/shape-overview#ID4EBGAC) dans [Vue d'ensemble de SHAPE](/fr/build/console-features/audio/overviews/shape-overview).

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 tampons circulaires contenant des échantillons désentrelacés par blocs de 128 échantillons.

Le processeur DMA permet au moteur SHAPE (Scalable Hardware Audio Processing Engine) d'envoyer des données des tampons de mixage vers la mémoire système principale et de récupérer des données de la mémoire système principale vers les tampons de mixage pour un traitement ultérieur. Le DMA s'effectue par blocs, en transférant une trame audio de données à la fois. Pour faciliter les données entrelacées par blocs, une valeur de saut spécifie le nombre de blocs de trames audio à ignorer dans la mémoire système (à 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é par l'indicateur `floatConvert` de la structure [SHAPE\_DMA\_CONTEXT](/fr/reference/audio/shapedmacontext/structs/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 permet de réduire la bande passante des 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 au format à virgule flottante.

Pour calculer la taille d'un tampon DMA, utilisez la formule suivante :

```cpp theme={null}
fullBufferSizeInBytes = 128 * 4 * numChannels * numFrames  
```

Les pointeurs de lecture et d'écriture sont incrémentés comme suit :

```cpp theme={null}
readPointer = (readPointer + 1) % numFrames 

writePointer = (writePointer + 1) % numFrames  
```

Les adresses dans le tampon audio sont calculées comme suit :

```cpp theme={null}
readAddress = audioBuffer + (128 * 4 * ((readPointer * numChannels) + channel))   

writeAddress = audioBuffer + (128 * 4 * ((writePointer * numChannels) + channel))  
```

## Configuration requise

**En-tête :** shapedmacontext.h

**Plateformes prises en charge :** consoles de la famille XBOX One et consoles XBOX Series

## Voir aussi

[ShapeDmaContext](/fr/reference/audio/shapedmacontext/shapedmacontext_members)


## Related topics

- [ShapeDmaContext](/fr/reference/audio/shapedmacontext/shapedmacontext_members.md)
- [GetShapeDmaFramesAvailable](/fr/reference/audio/shapedmacontext/functions/getshapedmaframesavailable.md)
- [GetShapeDmaNumFrames](/fr/reference/audio/shapedmacontext/functions/getshapedmanumframes.md)
- [GetShapeDmaBytesPerFrame](/fr/reference/audio/shapedmacontext/functions/getshapedmabytesperframe.md)
- [SetShapeDmaNumFrames](/fr/reference/audio/shapedmacontext/functions/setshapedmanumframes.md)
