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

# XDSP 개요

> XBOX Series X|S 콘솔에서 하드웨어 가속 컨볼루션 리버브, FFT 및 IFFT, 임펄스 응답 엔벨로핑을 위해 XDSP API를 사용하세요.

이 항목에서는 [XDSP API](/reference/audio/xdspaudio/xdspaudio_members)의 개요를 제공합니다. XDSP를 통해 타이틀은 XBOX Series X|S 세대 콘솔에서 Hardware Accelerated Convolution Reverb 기능을 활용할 수 있습니다. 현재 구현은 실시간으로 80초의 임펄스 응답을 처리할 수 있습니다. 예를 들어, 각각 2초 임펄스 응답의 40개 스트림을 실시간으로 동시에 처리할 수 있습니다.

### 2022년 10월 릴리스의 새로운 사항

* 두 개의 새 API인 [XDspConnectWithMaximumStreamLimit](/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit)과 [XDspSubmitCommandWithEnvelope](/reference/audio/xdspaudio/functions/xdspsubmitcommandwithenvelope)가 추가되었습니다. 활성화할 수 있는 최대 스트림 수가 256개 미만인 경우 **XDspConnectWithMaximumStreamLimit** 는 내부적으로 더 적은 메모리를 사용합니다. 반면 [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect)는 256개 스트림을 고려하므로 더 많은 메모리를 사용합니다.
  **XDspSubmitCommandWithEnvelope** 은 임펄스 응답 필터의 인벨로핑을 활성화합니다. [XDSP API를 사용한 인벨로핑 개요](/build/console-features/audio/overviews/xdsp-overview-enveloping)를 참고하십시오.

### 릴리스 기능

* 컨볼루션의 경우 지원되는 블록 크기는 512와 1024 프레임입니다. 1024 프레임 블록 크기의 성능이 더 좋습니다.
* FFT/IFFT의 경우 지원되는 블록 크기는 512, 1024, 2048 프레임입니다.
* 컨볼루션은 모노, 스테레오, 스테레오 디인터리브 모드에서 모노와 스테레오 임펄스 응답을 지원합니다.
* [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect) 또는 [XDspConnectWithMaximumStreamLimit](/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit) 호출은 하드웨어에 대한 연결을 만들고 XDspClientHandle을 반환합니다. 언제든지 8개의 연결만 활성 상태일 수 있습니다.
* [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect) 호출에서 지원되는 최대 *aggregateImpulseResponseInSeconds* 는 128입니다. 이는 모든 XDspConnect 호출 전반에서의 최대치이기도 합니다. 단일 XDspConnect 호출이 aggregateImpulseResponseInSeconds로 128과 함께 이루어지면, aggregateImpulseResponseInSeconds 값이 0보다 큰 XDspConnect 호출을 더 이상 수행할 수 없습니다. 컨볼루션 처리를 위한 스트림 활성화를 허용하려면 aggregateImpulseResponseInSeconds가 0보다 커야 합니다.
* [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect)에 의해 반환된 지정된 [XDspClientHandle](/reference/audio/xdspaudio/handles/xdspclienthandle)에 대해 [XDspActivate](/reference/audio/xdspaudio/functions/xdspactivate)를 사용하여 최대 256개의 스트림을 활성화할 수 있습니다. [XDspConnectWithMaximumStreamLimit](/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit)에 의해 반환된 지정된 [XDspClientHandle](/reference/audio/xdspaudio/handles/xdspclienthandle)에 대해 [XDspActivate](/reference/audio/xdspaudio/functions/xdspactivate)를 사용하여 최대 *maximumStreamCount* 스트림을 활성화할 수 있으며, 여기서 *maximumStreamCount* 는 **XDspConnectWithMaximumStreamLimit** 호출에서 사용된 스트림 수입니다. 이러한 스트림은 어떤 [XDspProcessType](/reference/audio/xdspaudio/enums/xdspprocesstype)일 수도 있습니다.
* 스테레오 입력이 사용되는 경우 지원되는 최대 aggregate 임펄스 응답은 64초로 낮아집니다.
* API에 전달되는 모든 버퍼는 16바이트 정렬되어야 합니다. 버퍼가 16바이트 정렬되지 않으면 하드웨어가 결함에 빠지고 리셋될 수 있습니다. 하드웨어가 크래시/hang에 빠졌을 때 [XDspStatus.result](/reference/audio/xdspaudio/structs/xdspstatus)는 XDSP\_E\_DEVICE\_FATAL\_ERROR를 나타냅니다.
* **임펄스 응답은 주파수 영역이어야 합니다. 시간 영역의 임펄스 응답을 주파수 영역으로 변환하는 도구가 제공됩니다.** [https://aka.ms/gdkdl](https://aka.ms/gdkdl)에서 다운로드하십시오.
* 임펄스 응답 변환 도구는 이제 감소 지원을 포함하여 품질 감소를 성능 향상과 교환할 수 있게 합니다. 자세한 내용은 [XDSP 임펄스 응답 감소 개요](/build/console-features/audio/overviews/xdsp-overview-ir-reduction)를 참고하십시오.
* [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect) 호출의 지연 개선이 이루어졌습니다.

### 알려진 이슈

* FFT/IFFT 처리를 위한 [XDspActivationOptions](/reference/audio/xdspaudio/enums/xdspactivationoptions)의 "EnablePolarFormat" 옵션은 성능이 더 좋은 기본 Cartesian 형식에 비해 상당한 시간이 걸립니다.

### 모범 사례

* 하드웨어가 결함에 빠지더라도 하드웨어에 제출된 각 명령에 대해 응답이 있습니다. 호출자는 스트림을 비활성화하기 위해 [XDspDeactivate](/reference/audio/xdspaudio/functions/xdspdeactivate)를 호출하기 전에 하드웨어가 모든 명령을 처리할 때까지 기다려야 합니다. [XDspStatus.lastProcessedCommandSequence](/reference/audio/xdspaudio/structs/xdspstatus)는 이 스트림에 대해 하드웨어에서 마지막으로 처리된 명령의 시퀀스 번호를 표시합니다. 다른 XDSP 스트림은 영향을 받지 않으며, 하드웨어는 그 명령을 계속 처리합니다.
* [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect) 호출에 전달된 *"baseBuffer"* 는 모든 스트림이 [XDspDeactivate](/reference/audio/xdspaudio/functions/xdspdeactivate)를 사용하여 비활성화되고 [XDspDisconnect](/reference/audio/xdspaudio/functions/xdspdisconnect)가 성공할 때까지 해제되어서는 안 됩니다.
* 각 스트림에 대한 내부 큐 제한이 있으며, 이 제한에 도달하면 [XDspSubmitCommand](/reference/audio/xdspaudio/functions/xdspsubmitcommand)는 XDSP\_E\_QUEUE\_FULL을 반환합니다. 이 오류가 발생하면 더 많은 명령을 제출하기 전에 하드웨어가 이 스트림에 대한 명령을 처리할 시간을 충분히 허용하십시오. [XDspStatus.lastProcessedCommandSequence](/reference/audio/xdspaudio/structs/xdspstatus)를 사용하여 이 스트림에 대해 하드웨어에서 처리된 마지막 명령을 확인할 수 있습니다.
* 컨볼루션의 성능은 512 블록 크기에 비해 1024 블록 크기에서 더 좋습니다.
* 컨볼루션 알고리즘은 연속 명령을 처리할 때 동질적이지 않습니다. 즉, 모든 블록이 완료되는 데 동일한 시간이 걸리지 않으며 일부는 다른 것보다 오래 걸릴 수 있습니다.

### 타이틀 일시 중지 및 재개

예를 들어 사용자가 Constrained 모드로 전환할 때, 타이틀은 일시 중지하고 재개할 수 있어야 합니다. 일시 중단 핸들러가 호출되면 하드웨어에 XDSP 명령을 제출하는 것을 단순히 중단하십시오. 이미 제출된 명령은 정상적으로 처리되고 그에 따라 XDspStatus가 업데이트됩니다.

### 샘플

* [https://aka.ms/gdkdl](https://aka.ms/gdkdl)과 ATG 샘플에서 다운로드할 수 있습니다.
  [싱글 스트림 컨볼루션 리버브](/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution) 및 [싱글 스트림 FFT IFFT](/build/console-features/audio/overviews/xdsp-overview-single-stream-fft-ifft)에 대한 샘플 안내도 제공됩니다.
* 하드웨어 가속기를 사용하여 시간 영역의 임펄스 응답을 주파수 영역으로 변환하는 XDSP 샘플이 GDK 다운로드 포털 [https://aka.ms/gdkdl](https://aka.ms/gdkdl)의 나머지 샘플과 함께 포함되어 있습니다. 이 샘플은 GDK 설치와 함께 포함된 Impulse Response Transform 도구와 정확히 동일한 출력을 생성합니다. 이 샘플은 XDSP API와 함께 사용하기 위해 임펄스 응답을 즉시 변환하는 데 하드웨어 가속을 사용하는 방법을 보여줍니다.

### 연락처

이 기능에 대한 질문이나 우려가 있다면 [AnaAud@microsoft.com](mailto:AnaAud@microsoft.com)으로 이메일을 보내거나 온라인 포럼을 사용하십시오.

## 참조 API 문서

* [Xdspaudio (API contents)](/reference/audio/xdspaudio/xdspaudio_members)
  * Functions
    * [XDspConnectWithMaximumStreamLimit](/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit)
    * [XDspSubmitCommandWithEnvelope](/reference/audio/xdspaudio/functions/xdspsubmitcommandwithenvelope)
    * [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect)
    * [XDspActivate](/reference/audio/xdspaudio/functions/xdspactivate)
    * [XDspDeactivate](/reference/audio/xdspaudio/functions/xdspdeactivate)
    * [XDspDisconnect](/reference/audio/xdspaudio/functions/xdspdisconnect)
    * [XDspSubmitCommand](/reference/audio/xdspaudio/functions/xdspsubmitcommand)
  * Structures
    * [xdspstatus](/reference/audio/xdspaudio/structs/xdspstatus)


## Related topics

- [XDSP audio](/ko/reference/audio/xdspaudio/xdspaudio_members.md)
- [XDSP 인벨로핑 개요](/ko/build/console-features/audio/overviews/xdsp-overview-enveloping.md)
- [XDSP 임펄스 응답 감소 개요](/ko/build/console-features/audio/overviews/xdsp-overview-ir-reduction.md)
- [XDSP API를 사용한 싱글 스트림 컨볼루션 개요](/ko/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution.md)
- [XDspConnect](/ko/reference/audio/xdspaudio/functions/xdspconnect.md)
