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

# XGameStreamingSetResolution

> XGameStreamingSetResolution

# XGameStreamingSetResolution

Définit la résolution du stream.

## Syntaxe

```cpp theme={null}
HRESULT XGameStreamingSetResolution(
        uint32_t width,
        uint32_t height
)
```

### Paramètres

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

Largeur à appliquer à la résolution du stream.

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

Hauteur à appliquer à la résolution du stream.

### Valeur de retour

Type : HRESULT

Retourne **S\_OK** en cas de réussite ; sinon, retourne un code d'erreur.

#### Erreurs potentielles

| Code d'erreur | Valeur d'erreur | Cause de l'erreur |
| - | - | - |
| E\_GAMESTREAMING\_NOT\_INITIALIZED | 0x89245400 | Le runtime XGameStreaming n'a pas été initialisé. Appelez XGameStreamingInitialize avant d'appeler d'autres API. |
| E\_INVALIDARG | 0x80070057 | Le paramètre *width* et/ou le paramètre *height*, ou le matériel, ne satisfont pas aux exigences. |

Pour obtenir la liste des codes d'erreur, consultez [Codes d'erreur](/fr/reference/errorcodes).

## Remarques

Avec des résolutions non standard, cette API ne réussit que sur les serveurs XBOX Game Streaming, le XBOX Series X Dev Kit et le XBOX Series S Test Kit. Les résolutions standard telles que 720p et 1080p réussissent quel que soit le matériel. En effet, une XBOX commerciale ne peut diffuser en streaming que via Remote Play et peut encore envoyer la vidéo vers le téléviseur ; l'utilisation d'une résolution non standard produirait alors une image déformée.

La largeur et la hauteur doivent être d'au moins 640x360, et le maximum figure dans les champs `maxWidth` et `maxHeight` de [XGameStreamingDisplayDetails](/fr/reference/system/xgamestreaming/structs/xgamestreamingdisplaydetails), qui peut être obtenu à partir de [XGameStreamingGetDisplayDetails](/fr/reference/system/xgamestreaming/functions/xgamestreaminggetdisplaydetails).

Le nombre maximal de pixels, calculé à partir de `width` \* `height`, doit être inférieur ou égal au maximum de l'encodeur. Ce maximum peut être obtenu à l'aide de l'API [XGameStreamingGetDisplayDetails](/fr/reference/system/xgamestreaming/functions/xgamestreaminggetdisplaydetails). Cette valeur pourra être augmentée à l'avenir.

`width` et `height` doivent être divisibles par 8.

L'API peut être appelée aussi souvent que souhaité, mais la résolution du stream ne peut changer qu'une fois toutes les 200 ms. La dernière résolution parmi les appels effectués dans cette fenêtre de 200 ms sera appliquée une fois la fenêtre écoulée.

Sachez que cette API définit la résolution du stream pour tous les clients connectés. Il convient donc de bien réfléchir à la meilleure option pour le jeu lorsque plusieurs clients sont connectés. Cela peut impliquer d'utiliser une résolution standard 16:9 ou d'essayer de trouver la résolution la mieux adaptée à tous les clients.

<Note>La modification de la résolution du stream modifie la mise à l'échelle du rectangle d'affichage dans `ID3D12CommandQueue::PresentX`. Les facteurs d'échelle de 0,0 à 1,0 de `D3D12XBOX_PRESENT_PLANE_PARAMETERS.pDestPlacementBase` se rapportent à la hauteur et à la largeur passées à `XGameStreamingSetResolution`, plutôt qu'à la résolution standard 1920x1080 ou 3840x2160 à laquelle ils se rapporteraient autrement.  </Note>

## Exemple

```C++ theme={null}

#define DEFAULT_GAME_WIDTH 1920
#define DEFAULT_GAME_HEIGHT 1080

#define GAME_WIDEST_SUPPORTED_ASPECT_RATIO 21.5f / 9.0f
#define GAME_TALLEST_SUPPORTED_ASPECT_RATIO 16.0f / 10.0f

static uint32_t s_currentStreamWidth = DEFAULT_GAME_WIDTH;
static uint32_t s_currentStreamHeight = DEFAULT_GAME_HEIGHT;

// Option 1: Event driven. Note: be aware of potential threading issues when using the task queue.
void GameStreamingClientManager::OnConnectionStateChanged(XGameStreamingClientId client, XGameStreamingConnectionState connected)
{
    // Other connection work like registering or unregistering for the client properties change events.
    ...

    UpdateResolutionIfNeeded();
}

void GameStreamingClientManager::OnClientPropertiesChanged(
    XGameStreamingClientId client,
    uint32_t updatedPropertiesCount,
    XGameStreamingClientProperty* updatedProperties)
{
    for (uint32_t i = 0; i < updatedPropertiesCount; ++i)
    {
        switch (updatedProperties[i])
        {
        case XGameStreamingClientProperty::DisplayDetails:
        {
            UpdateResolutionIfNeeded();
            break;
        }

        default:
            // A characteristic we are not tracking - do nothing
            break;
        }
    }
}

// Option 2: Polling.

void Game::Update(DX::StepTimer const& timer)
{
    ...

    gameStreamingClientManager->UpdateResolutionIfNeeded();

    ...
}

void GameStreamingClientManager::UpdateResolutionIfNeeded()
{
    bool changeResolution = false;
    bool useDefaultResolution = true;

    // Only use custom resolution when there is only one streaming client connected.
    if (XGameStreamingGetClientCount() == 1)
    {
        XGameStreamingClientId client;
        uint32_t clientsUsed = 0;
        HRESULT hr = XGameStreamingGetClients(1, &client, &clientsUsed);
        if (SUCCEEDED(hr) && clientsUsed == 1)
        {
            XGameStreamingDisplayDetails displayDetails = {};
            hr = XGameStreamingGetDisplayDetails(client, DEFAULT_GAME_WIDTH * DEFAULT_GAME_HEIGHT, GAME_WIDEST_SUPPORTED_ASPECT_RATIO, GAME_TALLEST_SUPPORTED_ASPECT_RATIO, &displayDetails);

            if (SUCCEEDED(hr))
            {
                useDefaultResolution = false;

                // Assuming the game supports all resolutions, use the stream resolution to the preferred dimensions as provided.
                if (s_currentStreamWidth != displayDetails.preferredWidth || s_currentStreamHeight != displayDetails.preferredHeight)
                {
                    changeResolution = true;
                    s_currentStreamWidth = displayDetails.preferredWidth;
                    s_currentStreamHeight = displayDetails.preferredHeight;
                }
            }
            else
            {
                LogFormat(L"XGameStreamingGetDisplayDetails failed %x", hr);
            }
        }
        else
        {
            LogFormat(L"XGameStreamingGetClients failed hr=%x clientsUsed=%d", hr, clientsUsed);
        }
    }

    if (useDefaultResolution)
    {
        if (s_currentStreamWidth != DEFAULT_GAME_WIDTH || s_currentStreamHeight != DEFAULT_GAME_HEIGHT)
        {
            changeResolution = true;
            s_currentStreamWidth = DEFAULT_GAME_WIDTH;
            s_currentStreamHeight = DEFAULT_GAME_HEIGHT;
        }
    }

    if (changeResolution)
    {
        // Update the stream to the new resolution.
        HRESULT hr = XGameStreamingSetResolution(s_currentStreamWidth, s_currentStreamHeight);
        if (SUCCEEDED(hr))
        {
            // Update the game to render at the new resolution.
        }
        else
        {
            LogFormat(L"XGameStreamingSetResolution failed %x", hr);
        }
    }
}

```

## Configuration requise

**En-tête :** xgamestreaming.h\
**Bibliothèque :** xgameruntime.lib\
**Plateformes prises en charge :** Windows, consoles de la famille XBOX One et consoles XBOX Series

## Voir aussi

[XGameStreaming](/fr/reference/system/xgamestreaming/xgamestreaming_members)\
[XGameStreamingDisplayDetails](/fr/reference/system/xgamestreaming/structs/xgamestreamingdisplaydetails)\
[XGameStreamingGetDisplayDetails](/fr/reference/system/xgamestreaming/functions/xgamestreaminggetdisplaydetails)\
[Vue d'ensemble de la résolution personnalisée](/fr/build/core-features/common/game-streaming/game-streaming-custom-resolution-overview)


## Related topics

- [XGameStreamingSetResolution](/reference/system/xgamestreaming/functions/xgamestreamingsetresolution.md)
- [Best Practices for Game Streaming Custom Resolution](/build/core-features/common/game-streaming/game-streaming-custom-resolution-best-practices.md)
- [Custom Resolution Overview](/build/core-features/common/game-streaming/game-streaming-custom-resolution-overview.md)
- [XGameStreaming](/reference/system/xgamestreaming/xgamestreaming_members.md)
- [Testing With Custom Resolution](/build/core-features/common/game-streaming/game-streaming-testing-custom-resolution.md)
