DirectCapture
DirectCapture es una característica de la plataforma XBOX Game Streaming que minimiza automáticamente la latencia del servidor para los fotogramas compatibles. La API XGameStreamingGetDisplayDetails te permite consultar los requisitos de los fotogramas compatibles para asegurarte de que tu juego pueda aprovechar DirectCapture. Los requisitos de un fotograma compatible se explican a continuación. XBOX Game Streaming transmite juegos capturando (copiando) los fotogramas presentados y codificándolos después para la transmisión. Sin DirectCapture, los fotogramas se convierten desde los parámetros de presentación de entrada a un formato para la codificación usando el hardware de pantalla. El fotograma tiene de 0 a 66 ms de latencia en una cola de presentación (Present Queue) y, a continuación, el fotograma tiene 8,3 ms más de latencia al pasar por Display Writeback (DWB) para capturar el fotograma. El tiempo que pasa en la cola de presentación depende de factores como la velocidad de fotogramas del juego y de si se usa doble o triple búfer. El tiempo de Display Writeback de 8,3 ms es fijo porque está vinculado a un reloj HDMI. Sin embargo, no hay ninguna pantalla HDMI conectada a los servidores de XBOX Game Streaming, por lo que DirectCapture ahorra este tiempo con una implementación por software en lugar de usar el hardware de pantalla. DirectCapture captura los fotogramas para su codificación en unos 2 a 12 ms al eliminar cosas como la espera de VSync y la espera del cambio del doble o triple búfer. Esto reduce la latencia hasta en 72 ms. Para obtener una latencia menor, un juego debe presentar con parámetros compatibles con DirectCapture.- Modos de consola compatibles
- Modo de generación de perfiles de Lockhart
- Resoluciones de renderizado de juego compatibles
- Cualquiera, incluida la resolución personalizada
- Formatos de cadena de intercambio compatibles
- DXGI_FORMAT_R8G8B8A8_UNORM
- DXGI_FORMAT_B8G8R8A8_UNORM
- DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
- DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
- DXGI_FORMAT_R10G10B10A2_UNORM
- DXGI_FORMAT_R9G9B9E5_SHAREDEXP
- Espacios de color compatibles
- DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709
- Resolución de renderizado del juego: 3840x2160 para juegos XDK
- HDR
- Varios planos de presentación
Validar que tu título transmite con DirectCapture
Puedes validar que tu título se ejecuta con DirectCapture comprobando los archivos de registro de la transmisión.Recopilar archivos de registro
Para recopilar los archivos de registro de la transmisión:- Empieza a ejecutar el juego
- Inicia la transmisión y conéctate con una de las Content Test Apps (CTA)
- Juega una sección breve de tu juego
- Termina el juego
- Desconecta la CTA
- Espera 30 segundos para que se terminen de escribir los registros
- Copia los registros a un directorio local, como C:\temp
xbcp xt:\XStreamLogs\XStreamManagementService.etl c:\tempxbcp xt:\XStreamLogs\nanotrace.etl c:\temp
Ver los mensajes de transición
- Abre XStreamManagementService.etl con Windows Performance Analyzer
- Haz clic con el botón derecho en System Activity en el panel izquierdo y elige “Add graph to Analysis View”
- En el panel inferior, expande Microsoft.Xbox.StreamManagementService
- Busca el proveedor Microsoft.Xbox.HostStreamingAgent y expándelo si es necesario. Si falta, repite los pasos anteriores de recopilación de archivos de registro.
- Selecciona la tarea DirectCaptureLog y, si es necesario, expande el proceso Unknown
- Desplázate a la derecha y busca las columnas llamadas 0_Message, 1_Message, etc. Cada una es un mensaje de DirectCapture en secuencia. Si hay varias filas, están ordenadas por hora.
- Consulta la tabla siguiente para conocer el significado de cada mensaje. Estos mensajes te darán la secuencia de transiciones de DirectCapture con los motivos de los casos en los que DirectCapture está deshabilitado.
Información detallada de fotogramas
- Abre nanotrace.etl con Windows Performance Analyzer
- Ve al proveedor “Microsoft.Xbox.CloudStreaming” y selecciona la tarea “VideoFrameCaptureSourceChanged”; después, expande el proceso “ApplicationClipService.exe” para ver todos los eventos “VideoFrameCaptureSourceChanged”.
- Comprueba el campo “NewCaptureSource”
- Tu título está transmitiendo con la latencia menor de DirectCapture a partir del momento en que el valor es “DCap”
- Los valores “DWB” significan que no se usa DirectCapture y se usa el mecanismo de captura predeterminado. Esto ocurrirá cuando:
- El título genera un fotograma incompatible con DirectCapture
- El sistema renderiza una superposición sobre el título (p. ej., una notificación del sistema)
Notas
- nanotrace.etl tiene un historial limitado, por lo que si no ves “VideoFrameCaptureSourceChanged”, es posible que tu sesión haya sido demasiado larga. Para validarlo, ejecuta una sesión más corta y comprueba el ETL.
- La compatibilidad con DirectCapture en kits de desarrollo se limita al kit de desarrollo XBOX Series X
- Para obtener más información, mira XBOX Game Streaming: Reducing Latency and Optimizing for the Best Mobile Experiences.
