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

# XDspConnectWithMaximumStreamLimit

> XDspConnectWithMaximumStreamLimit

# XDspConnectWithMaximumStreamLimit

Établit une connexion avec le serveur matériel, crée une instance de client XDSP et alloue les ressources nécessaires au traitement. Cette API est semblable à l'API XDspConnect, à ceci près qu'elle accepte deux paramètres supplémentaires, maximumStreamCount et maximumChannelCount, afin de réduire la mémoire globale utilisée par l'API. Une limite globale de 8 clients XDSP actifs simultanément s'applique.

## Syntaxe

```cpp theme={null}
HRESULT XDspConnectWithMaximumStreamLimit(  
         float* baseBuffer,  
         uint32_t baseBufferLength,  
         uint32_t aggregateImpulseResponseInSeconds,
         uint32_t maximumStreamCount,
         uint32_t maximumChannelCount,  
         XDspClientHandle* handle  
)  
```

### Paramètres

*baseBuffer*   \_In\_\
Type : float\*

Mémoire tampon contiguë allouée par un appelant XDSP et utilisée pour transmettre les données d'entrée et récupérer les données de sortie. Pour plus de détails, consultez la section **Remarques** ci-dessous.

*baseBufferLength*   \_In\_\
Type : uint32\_t

Longueur de *baseBuffer*, en octets. Cette longueur doit être d'au moins 64 Ko et d'au plus 500 Mo.

*aggregateImpulseResponseInSeconds*   \_In\_\
Type : uint32\_t

Représente la durée totale de l'ensemble des réponses impulsionnelles individuelles qui seront activées simultanément sur ce client. *aggregateImpulseResponseInSeconds* doit être défini sur une valeur supérieure à zéro pour [XDspProcessType::Convolution](/fr/reference/audio/xdspaudio/enums/xdspprocesstype) ; sinon, il doit être égal à zéro. Une limite globale de 128 secondes de réponse impulsionnelle agrégée s'applique à l'ensemble des clients XDSP.

*maximumStreamCount*   \_In\_\
Type : uint32\_t

Nombre maximal de flux pouvant être actifs à un moment donné pour ce XDspClientHandle. Ce nombre ne peut pas dépasser 256. XDspActivate renvoie XDSP\_E\_NO\_DEVICE\_RESOURCES si ce nombre est dépassé.

*maximumChannelCount*   \_In\_\
Type : uint32\_t

Cette valeur peut être 1 (pour les flux mono) ou 2 (pour les flux stéréo). Cette API renvoie E\_INVALIDARG si une autre valeur est utilisée.

*handle*   \_Outptr\_\
Type : [XDspClientHandle\*](/fr/reference/audio/xdspaudio/handles/xdspclienthandle)

Handle vers un client XDSP qui doit être utilisé pour activer des flux via [XDspActivate](/fr/reference/audio/xdspaudio/functions/xdspactivate) et pour déconnecter le client du serveur matériel via [XDspDisconnect](/fr/reference/audio/xdspaudio/functions/xdspdisconnect).

### Valeur renvoyée

Type : HRESULT

Si la méthode réussit, elle renvoie S\_OK. Si la méthode échoue, elle renvoie l'un des codes suivants (liste partielle) :

| Code de retour | Description |
| - | - |
| E\_INVALIDARG | Un ou plusieurs des arguments ne sont pas valides. |
| E\_OUTOFMEMORY | L'allocation de mémoire a échoué. |
| XDSP\_E\_MAX\_CLIENTS\_EXCEEDED | Le nombre maximal de XDspClients a déjà été créé. |
| XDSP\_E\_MAX\_AGGREGATE\_IMPULSE\_RESPONSE\_EXCEEDED | L'appel actuel à [XDspConnect](/fr/reference/audio/xdspaudio/functions/xdspconnect) entraînerait le dépassement par XDSP de la longueur maximale prise en charge de la réponse impulsionnelle agrégée ; il n'est donc pas valide. |

## Remarques

Si l'appel réussit, l'appelant peut utiliser *baseBuffer* pour transmettre les données d'entrée et récupérer les données de sortie du flux via les paramètres de [XDspCommand](/fr/reference/audio/xdspaudio/structs/xdspcommand). Si l'enveloppe est utilisée, cette mémoire tampon doit également tenir compte des mémoires tampons de stockage des paramètres d'enveloppe. Pour plus d'informations sur l'enveloppe, consultez [Vue d'ensemble de l'enveloppe à l'aide de l'API XDSP](/fr/build/console-features/audio/overviews/xdsp-overview-enveloping).

Cette fonction doit être appelée avant l'activation des flux XDSP afin d'inscrire un grand bloc de mémoire suffisant pour contenir plusieurs flux audio complets utilisés en entrée, plusieurs mémoires tampons de sortie pour tous les flux XDSP qui seront activés via [XDspActivate](/fr/reference/audio/xdspaudio/functions/xdspactivate), ainsi que plusieurs mémoires tampons de multiplicateurs de blocs susceptibles d'être utilisées dans le cadre de [XDspCommand](/fr/reference/audio/xdspaudio/structs/xdspcommand) pour le type de traitement [XDspProcessType::ForwardFourierTransform](/fr/reference/audio/xdspaudio/enums/xdspprocesstype). Tenez compte des exigences de taille minimale et maximale de cette mémoire tampon, indiquées ci-dessus. Si cet appel réussit, tous les flux XDSP peuvent accéder à n'importe quelle partie de ce bloc de mémoire.

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()**.

En voici un exemple :

```cpp theme={null}
static const ULONGLONG XMemAllocAttributes = MAKE_XALLOC_ATTRIBUTES(allocatorId,
   0,
   XALLOC_MEMTYPE_PHYSICAL_CACHEABLE,
   XALLOC_PAGESIZE_64KB,
   XALLOC_ALIGNMENT_64K,
   FALSE);
```

Dans l'exemple ci-dessus, *allocatorId* doit être remplacé par l'ID d'allocateur correct utilisé par le titre.

Il appartient à l'appelant de partitionner et de recycler *baseBuffer* pour contenir les différents flux d'entrée et mémoires tampons de sortie de plusieurs flux. *impulseResponse* ne doit pas nécessairement provenir de ce *baseBuffer* ; elle peut provenir de n'importe quelle mémoire allouée par l'appelant.

La mémoire pointée par *baseBuffer* ne doit pas être libérée avant l'appel de [XDspConnect](/fr/reference/audio/xdspaudio/functions/xdspconnect).

Tous les pointeurs de mémoire transmis à l'[API XDSP](/fr/reference/audio/xdspaudio/xdspaudio_members) doivent être alignés sur 16 octets.

Si l'appel réussit, un [XDspClientHandle](/fr/reference/audio/xdspaudio/handles/xdspclienthandle) valide est renvoyé pour être utilisé avec les appels [XDspActivate](/fr/reference/audio/xdspaudio/functions/xdspactivate) et [XDspDisconnect](/fr/reference/audio/xdspaudio/functions/xdspdisconnect).

## Configuration requise

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

**Bibliothèque :** Chad.lib

**Plateformes prises en charge :** XBOX Series X|S

## Documentation conceptuelle

* [Vue d'ensemble de l'enveloppe XDSP](/fr/build/console-features/audio/overviews/xdsp-overview-enveloping)
* [Vue d'ensemble d'une convolution avec enveloppe sur un seul flux à l'aide de l'API XDSP](/fr/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution-with-envelope)
* [Vue d'ensemble d'une convolution sur un seul flux à l'aide de l'API XDSP](/fr/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution)
* [Vue d'ensemble de XDSP](/fr/build/console-features/audio/overviews/xdsp-overview)

## Voir aussi

[XDSP](/fr/reference/audio/xdspaudio/xdspaudio_members)\
[XDSPConnect](/fr/reference/audio/xdspaudio/functions/xdspconnect)\
[XDspDisconnect](/fr/reference/audio/xdspaudio/functions/xdspdisconnect)\
[Erreurs XDSP](/fr/reference/audio/xdspaudio/enums/xdsperrors)\
[Vue d'ensemble d'une convolution sur un seul flux à l'aide de l'API XDSP](/fr/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution)\
[Vue d'ensemble d'une FFT/IFFT sur un seul flux à l'aide de l'API XDSP](/fr/build/console-features/audio/overviews/xdsp-overview-single-stream-fft-ifft)\
[Vue d'ensemble d'une convolution avec enveloppe sur un seul flux à l'aide de l'API XDSP](/fr/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution-with-envelope)


## Related topics

- [XDspConnectWithMaximumStreamLimit](/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit.md)
- [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect.md)
- [XDSP overview](/build/console-features/audio/overviews/xdsp-overview.md)
