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

# Game DVR and broadcasting

> Game DVR and broadcasting

The Microsoft Game Development Kit (GDK) includes a set of APIs for broadcast notifications that show
broadcasting UI, adding metadata to screenshots, video clips,
broadcast, and capturing diagnostic screenshots and video. Broadcast
notifications provide insights into the broadcasting pipeline. Broadcasting UI puts the user in control of starting and stopping a
broadcast. Adding metadata makes it easier to search recordings, such as adding the name of a map, a level in the game, or anything about that specific moment that was captured. When combined, these APIs give you better
control and insight over your screenshots, video clips, and broadcast.

## Broadcasting notifications and UI

`XAppBroadcastGetStatus` shows status updates on the state of broadcasting. Use this method to determine if a broadcast can start. Many factors go into determining if a broadcast can start, such as ensuring that the capture resource is available, if the game allows broadcasting, or the user and/or system hasn't disabled broadcasting. If all members
of the `XAppBroadcastStatus` struct (besides `canStartBroadcast`) return
`false`, `canStartBroadcast` returns `true`. If a broadcast can start, call `XAppBroadcastShowUI` to show the broadcast UI for the
current user. Subsequently, the user must manually initiate the broadcast. `XAppBroadcastIsAppBroadcasting` is used to determine if the
current app is broadcasting. `XAppBroadcastUnregisterIsAppBroadcasting` is
used to unregister from change events from broadcast status.

## Adding metadata to a screenshot, video clip, and broadcast

Several APIs are used to add and manage metadata that's attached to a
screenshot, video clip, or broadcast. Adding metadata is optional. However, it
makes it easier for a user to find the recording that they want. Metadata can
take many forms such as strings, integers, doubles. The system allocates storage space for metadata items. If the allocated space runs low, `AppCaptureMetatPriority` is used to determine the relative
priorities of the stored metadata items and the order in which metadata is purged to free up space.

## Voice chat

Voice chat should be considered user generated content which can contain personally identifiable information or other potentially sensitive data. Because of this a user's rendered voice in game chat should never be included in any recorded clips or game captures. This can be done by assigning the proper audio category to the render stream containing the user's voice, that of `AudioCategory_GameChat`. This tags the stream accordingly so that the system knows to ignore this audio stream when capturing for Game DVR clips.

## Diagnostic screenshots and video clips

With these Microsoft Game Development Kit (GDK) APIs, you can capture screenshots and video clips
for diagnostic purposes. Note that these diagnostic APIs are available only on Development Kits. Calling these APIs on a retail console results in an immediate failure. The captured screenshots and video clips go to the
local game partition and not to the usual user storage. If the game is
running in high dynamic range (HDR), the caller can specify whether to capture a standard dynamic range (SDR)
screenshot, an HDR screenshot, or both of them. After a
screenshot is recorded, the resulting struct contains path
information about the location of the screenshot files. For the video
clips, depending on the user's Game DVR setting, an H264 (Advanced Video Coding (AVC))-encoded
video or an H265 (High Efficiency Video Coding (HEVC))-encoded video can be returned. The resulting struct
also includes information such as start time, duration, and width and height.

## Normal screenshots

New to the Microsoft Game Development Kit (GDK) is the ability to capture the normal screenshots. The resulting screenshots are stored in the normal user storage for
screenshots. Also, a system notification says that a screenshot
was captured. Because the screenshots are stored in a separate partition that's
not directly accessible from the game partition, you must use the provided
open/read/close stream APIs to access the recorded screenshots. Note
that if the game is running in HDR, the paths for both the SDR version and
the HDR version of the screenshots are returned.

## Reference API documentation

* [Xappcapture (API contents)](/reference/system/xappcapture/xappcapture_members)

## See also

[XAppCapture](/reference/system/xappcapture/xappcapture_members)


## Related topics

- [Cross-network multiplayer implementation example](/services/xbox-services/multiplayer/concepts/live-console-xr007-multiplayer-example.md)
- [Cross-network multiplayer implementation example: MMO](/services/xbox-services/multiplayer/concepts/live-console-xr007-mmo-example.md)
- [Overview of audio](/build/console-features/audio/overviews/audio.md)
- [Game DVR and broadcasting on XBOX consoles](/build/console-features/game-dvr/index.md)
- [XR-007 Cross-Network Play — Multiplayer implementation](/publishing/certification/xr/xr-007-multiplayer.md)
