> ## 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.

# GetShapeDmaReadPointer

> GetShapeDmaReadPointer

# GetShapeDmaReadPointer

Obtient le pointeur de lecture de l'accès direct à la mémoire (DMA).

## Syntaxe

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

### Paramètres

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

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

### Valeur de retour

Type : UINT32

Le pointeur de lecture, en trames (blocs de 128 échantillons).

## Remarques

Pour calculer la taille d'une mémoire 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 la mémoire tampon audio sont calculées comme suit :

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

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

Vous pouvez éviter les commandes 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 (en fonction de 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 une double mise en mémoire tampon de huit trames) se trouve dans la mémoire tampon afin que le matériel puisse écrire en avance sur le pointeur de lecture du titre. Vous pourriez aussi forcer 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](/fr-CA/build/console-features/audio/overviews/shape-overview#ID4EBGAC) dans [Vue d'ensemble de SHAPE](/fr-CA/build/console-features/audio/overviews/shape-overview).

Vous pouvez soumettre des graphes de flux à traiter comme persistants ou non persistants. Les graphes de flux persistants effectuent leur traitement, puis restent résidents pour répéter leur traitement à la trame suivante, une fois que les pointeurs de lecture et d'écriture ont avancé et que les autres informations de contexte ont été mises à jour.

## 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-CA/reference/audio/shapedmacontext/shapedmacontext_members)


## Related topics

- [GetShapeDmaReadPointer](/es/reference/audio/shapedmacontext/functions/getshapedmareadpointer.md)
- [ShapeDmaContext](/reference/audio/shapedmacontext/shapedmacontext_members.md)
