XApuDecodeConvertCommand
디코딩 또는 디코딩-변환 처리 매개 변수를 정의합니다.구문
멤버
id형식: XApuCommandId 처리를 위해 하드웨어에 전송될 기본 명령 매개 변수를 지정합니다. 동일한 XApuCommandId가 XApuResult::id에 설정됩니다. pitchRampRate
형식: float 각 출력에 대해 현재 피치에서 더해지거나 뺄 값입니다. 이 값은 부호가 없으며 샘플 속도 변환기 엔진이 대상 피치 값에 따라 현재 피치에서 더할지 뺄지를 자동으로 결정합니다. 기본적으로 이 값은 XAPU_DEFAULT_PITCH_RAMP_RATE로 설정되어야 합니다. targetPitch
형식: float 현재 변환 작업의 대상 피치입니다. XApuProcessType::DecodeOpus의 경우 이 값은 무시됩니다. firstFrameIndex
형식: uint32_t 출력 버퍼에 복사될 첫 번째 프레임의 인덱스를 지정합니다. firstFrameIndex와 frameCount는 함께 출력 버퍼에 복사되는 것을 지정합니다. 이 구현에서는 firstFrameIndex를 사용할 때 잔여 데이터를 포함하지 않습니다. 잔여 프레임이 100개이고 firstFrameIndex가 50, frameCount가 200으로 설정된 경우, 디코딩된 데이터의 50번째 프레임부터 시작하여 200프레임이 전체 잔여 프레임에 추가됩니다. 즉, HSRC로 입력되는 버퍼는 잔여의 원본 100프레임 뒤에 현재 디코딩된 패킷의 50번째 프레임에서 시작하는 200프레임이 이어집니다. PCM 스트림의 오디오 프레임은 동일한 시간(클록 틱)에 재생되거나 캡처된 샘플 집합입니다(집합에는 스트림의 각 채널당 하나의 샘플이 포함됨). 따라서 오디오 프레임의 크기는 샘플 크기에 스트림의 채널 수를 곱한 값입니다. 예를 들어 32비트 float 샘플을 갖는 스테레오(2채널) 스트림의 프레임 크기는 8바이트입니다. 이 값은 20밀리초 패킷 지속 시간을 갖는 Opus 스트림의 경우 0에서 960 사이여야 합니다. 10밀리초 패킷 지속 시간을 갖는 Opus 스트림의 경우 0에서 480 사이여야 합니다. 기본적으로 이 값은 0으로 설정됩니다. Preroll 입력의 경우, 이 값은 0보다 커야 합니다. Preroll 입력은 처리되지만 출력 데이터를 생성하지는 않습니다. frameCount
형식: uint32_t 이 매개 변수는 XApuProcessType::ConvertPCM 처리에서 입력 데이터가 압축되지 않은 경우에 필요하며, 다음과 같은 제약이 있습니다.
- 모노 및 스테레오 입력 디인터리브 PCM 데이터의 경우 최소값은 4, 최대값은 960이며, 값은 4의 배수여야 합니다.
- 스테레오 입력 인터리브 PCM 데이터의 경우 최소값은 8, 최대값은 960이며, 값은 8의 배수여야 합니다.
- XApuProcessType::DecodeOpus의 경우 이 값을 사용하여 출력 프레임 수를 자를 수 있습니다.
- XApuProcessType::DecodeConvertOpus의 경우 이 값을 사용하여 변환기로 전달될 디코딩된 프레임 수를 자를 수 있습니다.
형식: uint32_t 입력 데이터 길이(바이트)입니다. 길이는 16의 배수여야 합니다. XApuProcessType::ConvertPCM 케이스의 경우 이 값은 XApuDecodeConvertCommand::frameCount x XApuDecodeConvertActivateCommand::channelCount x sizeof(float)와 같아야 합니다. inputData
형식: void* 처리를 위한 입력 데이터를 가리키는 포인터입니다. 이 값은 XApuConnect에서 반환된 XApuConnectOutputParameters::data보다 크거나 같아야 하며, XApuConnectOutputParameters::data + XApuConnectInputParameters::dataLength보다 작아야 합니다. 이 버퍼는 16바이트 정렬이어야 합니다. XApuProcessType::DecodeOpus 및 XApuProcessType::DecodeConvertOpus의 경우 입력 데이터는 단일 Opus 패킷(SILK, CELT 또는 Hybrid)이어야 합니다. XApuProcessType::ConvertPCM의 경우 입력 데이터는 PCM float(32비트)여야 합니다. XApuConnectOptions::DeinterleavedInput 플래그가 설정된 경우, 입력 PCM 데이터는 디인터리브되어야 합니다. XApuProcessType::ConvertPCM 디인터리브 입력의 경우, 첫 번째 채널 데이터는 XApuDecodeConvertCommand::inputData에서 시작하고 두 번째 채널 데이터는 XApuDecodeConvertCommand::inputData + (XApuDecodeConvertCommand::inputDataLength / 2)에서 시작합니다. maxOutputDataLength
형식: uint32_t 바이트 단위의 최대 출력 데이터 길이입니다. 길이는 16의 배수여야 합니다. XApuConnectInputParameters::baseDataLength를 초과해서는 안 됩니다. outputData
형식: void* 출력 PCM float(32비트) 데이터를 저장할 포인터입니다. 이 값은 XApuConnect에서 반환된 XApuConnectOutputParameters::data보다 크거나 같아야 하며, XApuConnectOutputParameters::data + XApuConnectInputParameters::baseDataLength보다 작아야 합니다. 이 버퍼는 16바이트 정렬이어야 합니다. XapuConnectOptions::DeinterleavedOutput 플래그가 설정된 경우, 데이터는 디인터리브 형식으로 제공됩니다. 각 패킷에서 디인터리브 중간 지점은 다음과 같이 지정됩니다. XApuProcessType::DecodeOpus:
- 왼쪽 채널 프레임은 0에서 (XapuResult::outputFrameCount-1)까지 배치되고, 오른쪽 채널 프레임은 (XapuResult::outputFrameCount)에서 버퍼의 끝까지 배치됩니다.
- 왼쪽 채널 프레임은 0에서 (XApuConnectInputParameters::maxFrameCountPerOutput - 1)까지 배치됩니다.
- 오른쪽 채널 프레임은 XApuConnectInputParameters::maxFrameCountPerOutput에서 버퍼의 끝까지 배치됩니다.
- OutputFrameCount가 maxFrameCountPerOutput보다 적더라도 마찬가지입니다. 이 경우 XApuConnectInputParameters::maxFrameCountPerOutput를 사용하여 버퍼의 중간 지점을 결정하고, XapuResult::outputFrameCount를 사용하여 채널당 복사할 프레임 수를 계산합니다.
설명
XApuDecodeConvertCommand는 처리 매개 변수를 디코딩하고 변환하는 데 사용됩니다. XApuCommandId 멤버에 대한 자세한 내용은 XApuCommandId를 참조하세요. XApuPorcessType에 대한 자세한 내용은 XApuProcessType를 참조하세요.
피치 램프 속도의 범위는 2^-18(0.000003814697265625)에서 8.0까지입니다. 최소값보다 작은 값은 램핑이 아무런 작동도 하지 않게 하며, 피치는 현재 값에 유지됩니다. 램프 속도가 현재 값과 대상 값 차이의 절대값보다 클 때는 언제나 하나의 샘플 기간 내에 램프가 발생합니다.
요구 사항
헤더: xapu.h 지원 플랫폼: XBOX Series X|S개념 설명서
관련 항목
XApuEnqueueCommandXApuResult
XAPU
