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

# XApuDecodeConvertCommand

> XApuDecodeConvertCommand

# XApuDecodeConvertCommand

デコードまたはデコード変換の処理パラメーターを定義します。

## 構文

```cpp theme={null}
typedef struct XApuDecodeConvertCommand {  
    XApuCommandId id;  
    float pitchRampRate;  
    float targetPitch;  
    uint32_t firstFrameIndex;  
    uint32_t frameCount;  
    uint32_t inputDataLength;  
    void* inputData;  
    uint32_t maxOutputDataLength;  
    void* outputData;  
} XApuDecodeConvertCommand  
```

### メンバー

*id*\
型: [XApuCommandId](/reference/audio/xapu/structs/xapucommandid)

処理のためにハードウェアに送信される基本コマンド パラメーターを指定します。同じ XApuCommandId が [XApuResult::id](/reference/audio/xapu/structs/xapuresult) に設定されます。

*pitchRampRate*\
型: float

出力ごとに現在のピッチに加算または減算される値です。
この値は符号なしであり、サンプル レート コンバーター エンジンは、ターゲット ピッチの値に応じて、現在のピッチから加算するか減算するかを自動的に判断します。
既定では、この値は *XAPU\_DEFAULT\_PITCH\_RAMP\_RATE* に設定する必要があります。

*targetPitch*\
型: float

現在の変換操作のターゲット ピッチ。[XApuProcessType::DecodeOpus](/reference/audio/xapu/enums/xapuprocesstype) の場合は、この値は無視されます。

*firstFrameIndex*\
型: uint32\_t

出力バッファーにコピーされる最初のフレームのインデックスを指定します。firstFrameIndex と frameCount の組み合わせによって出力バッファーにコピーされる内容が決まります。この実装では、firstFrameIndex を使用するときに残余データは含めません。100 フレームの残余があり、firstFrameIndex が 50 に設定され、frameCount が 200 に設定されている場合、200 フレームがデコードされたデータの 50 番目のフレームから始まる残余全体に追加されます。つまり、HSRC に送られるバッファーには、残余からの元の 100 フレームに続いて、現在のデコード済みパケットの 50 番目のフレームから始まる 200 フレームが含まれます。

PCM ストリームのオーディオ フレームは、同じタイミング (クロック ティック) で再生またはキャプチャされるサンプルのセット (ストリームの各チャネルにつき 1 つのサンプルを含む) です。したがって、オーディオ フレームのサイズは、サンプル サイズにストリーム内のチャネル数を乗じた値になります。

たとえば、32 ビット float サンプルのステレオ (2 チャネル) ストリームのフレーム サイズは 8 バイトです。この値は、20 ミリ秒パケット持続時間の Opus ストリームでは 0 から 960 の間である必要があります。10 ミリ秒パケット持続時間の Opus ストリームでは 0 から 480 の間である必要があります。既定では、この値は 0 に設定されます。プリロール入力の場合、この値は 0 より大きくする必要があります。プリロール入力は処理されますが、出力データは生成されません。

*frameCount*\
型: uint32\_t

このパラメーターは、入力データが [XApuProcessType::ConvertPCM](/reference/audio/xapu/enums/xapuprocesstype) 処理で非圧縮の場合に必要で、次の制約があります。

* モノラルおよびステレオのデインターリーブ PCM 入力データの場合、最小値は 4、最大値は 960 で、値は 4 の倍数である必要があります。
* ステレオのインターリーブ PCM 入力データの場合、最小値は 8、最大値は 960 で、値は 8 の倍数である必要があります。
* [XApuProcessType::DecodeOpus](/reference/audio/xapu/enums/xapuprocesstype) の場合、この値は出力フレーム数を切り詰めるために使用できます。
* [XApuProcessType::DecodeConvertOpus](/reference/audio/xapu/enums/xapuprocesstype) の場合、この値はコンバーターに渡されるデコード済みフレーム数を切り詰めるために使用できます。

このパラメーターがストリームの最後のパケットまたはループ ポイントを切り詰めるために使用される場合、20 ミリ秒パケット持続時間の Opus ストリームでは 0 から 960 の任意の値、10 ミリ秒パケット持続時間の Opus ストリームでは 0 から 480 の任意の値を使用できます。

このパラメーターがストリームの途中のパケットの出力を切り詰めるために使用される場合、値は上記の [XApuProcessType::ConvertPCM](/reference/audio/xapu/enums/xapuprocesstype) の制約に従って設定する必要があります。

切り詰めが必要ない場合、このパラメーターは 0xFFFFFFFF に設定する必要があります。

[XApuProcessType::DecodeOpus](/reference/audio/xapu/enums/xapuprocesstype) および [XApuProcessType::DecodeConvertOpus](/reference/audio/xapu/enums/xapuprocesstype) の場合、[XApuDecodeConvertCommand::frameCount](/reference/audio/xapu/structs/xapudecodeconvertcommand) と [XApuDecodeConvertCommand::firstFrameIndex](/reference/audio/xapu/structs/xapudecodeconvertcommand) パラメーターは、フレーム単位で正確なシークに使用する必要があります。

PCM ストリームのオーディオ フレームは、同じタイミング (クロック ティック) で再生またはキャプチャされるサンプルのセット (ストリームの各チャネルにつき 1 つのサンプルを含む) です。したがって、オーディオ フレームのサイズは、サンプル サイズにストリーム内のチャネル数を乗じた値になります。たとえば、32 ビット float サンプルのステレオ (2 チャネル) ストリームのフレーム サイズは 8 バイトです。

*inputDataLength*\
型: uint32\_t

入力データ長 (バイト単位)。長さは 16 の倍数である必要があります。[XApuProcessType::ConvertPCM](/reference/audio/xapu/enums/xapuprocesstype) の場合、この値は [XApuDecodeConvertCommand::frameCount](/reference/audio/xapu/structs/xapudecodeconvertcommand) x [XApuDecodeConvertActivateCommand::channelCount](/reference/audio/xapu/structs/xapudecodeconvertcommand) x sizeof(float) と等しくなければなりません。

*inputData*\
型: void\*

処理のための入力データへのポインター。この値は、[XApuConnect](/reference/audio/xapu/functions/xapuconnect) によって返された [XApuConnectOutputParameters::data](/reference/audio/xapu/structs/xapuconnectoutputparameters) 以上、かつ [XApuConnectOutputParameters::data](/reference/audio/xapu/structs/xapuconnectoutputparameters) + [XApuConnectInputParameters::dataLength](/reference/audio/xapu/structs/xapuconnectinputparameters) 未満である必要があります。*このバッファーは 16 バイト境界にアラインされている必要があります。*

[XApuProcessType::DecodeOpus](/reference/audio/xapu/enums/xapuprocesstype) および [XApuProcessType::DecodeConvertOpus](/reference/audio/xapu/enums/xapuprocesstype) の場合、入力データは 1 つの Opus パケット (SILK、CELT、または Hybrid) である必要があります。

[XApuProcessType::ConvertPCM](/reference/audio/xapu/enums/xapuprocesstype) の場合、入力データは PCM float (32 ビット) である必要があります。[XApuConnectOptions::DeinterleavedInput](/reference/audio/xapu/enums/xapuconnectoptions) フラグが設定されている場合、入力 PCM データはデインターリーブされている必要があります。

[XApuProcessType::ConvertPCM](/reference/audio/xapu/enums/xapuprocesstype) のデインターリーブ入力では、最初のチャネル データは [XApuDecodeConvertCommand::inputData](/reference/audio/xapu/structs/xapudecodeconvertcommand) から始まり、
2 番目のチャネル データは [XApuDecodeConvertCommand::inputData](/reference/audio/xapu/structs/xapudecodeconvertcommand) + ([XApuDecodeConvertCommand::inputDataLength](/reference/audio/xapu/structs/xapudecodeconvertcommand) / 2) から始まります。

*maxOutputDataLength*\
型: uint32\_t

最大出力データの長さ (バイト単位)。長さは 16 の倍数である必要があります。[XApuConnectInputParameters::baseDataLength](/reference/audio/xapu/structs/xapuconnectinputparameters) を超えてはなりません。

*outputData*\
型: void\*

出力 PCM float (32 ビット) データを保持するためのポインター。この値は、[XApuConnect](/reference/audio/xapu/functions/xapuconnect) によって返された [XApuConnectOutputParameters::data](/reference/audio/xapu/structs/xapuconnectoutputparameters) 以上、かつ [XApuConnectOutputParameters::data](/reference/audio/xapu/structs/xapuconnectoutputparameters) + [XApuConnectInputParameters::baseDataLength](/reference/audio/xapu/structs/xapuconnectinputparameters) 未満である必要があります。このバッファーは 16 バイト境界にアラインされている必要があります。

[XapuConnectOptions::DeinterleavedOutput](/reference/audio/xapu/enums/xapuconnectoptions) フラグが設定されている場合、データはデインターリーブされた状態で提供されます。各パケット内では、デインターリーブの中間点は次のように指定されます。

[XApuProcessType::DecodeOpus](/reference/audio/xapu/enums/xapuprocesstype):

* 左チャネルのフレームは 0 から (XapuResult::outputFrameCount-1) までに配置されます。右チャネルのフレームは (XapuResult::outputFrameCount) からバッファーの末尾までに配置されます。

[XApuProcessType::DecodeConvertOpus](/reference/audio/xapu/enums/xapuprocesstype) および [XApuProcessType::ConvertPCM](/reference/audio/xapu/enums/xapuprocesstype):

* 左チャネルのフレームは 0 から ([XApuConnectInputParameters::maxFrameCountPerOutput](/reference/audio/xapu/structs/xapuconnectinputparameters) - 1) までに配置されます。
* 右チャネルのフレームは [XApuConnectInputParameters::maxFrameCountPerOutput](/reference/audio/xapu/structs/xapuconnectinputparameters) からバッファーの末尾までに配置されます。
* OutputFrameCount が maxFrameCountPerOutput 未満の場合でも、これは当てはまります。この場合、バッファーの中間点を決定するために [XApuConnectInputParameters::maxFrameCountPerOutput](/reference/audio/xapu/structs/xapuconnectinputparameters) を使用し、チャネルごとにコピーするフレーム数を計算するために [XapuResult::outputFrameCount](/reference/audio/xapu/structs/xapuresult) を使用してください。

## 解説

`XApuDecodeConvertCommand` は、デコード変換の処理パラメーターに使用されます。`XApuCommandId` メンバーの詳細については、[XApuCommandId](/reference/audio/xapu/structs/xapucommandid) を参照してください。`XApuPorcessType` の詳細については、[XApuProcessType](/reference/audio/xapu/enums/xapuprocesstype) を参照してください。

ピッチ ランプ レートの範囲は 2^-18 (0.000003814697265625) から 8.0 までです。最小値未満の値では、ランプは何も行いません — ピッチは現在の値のままになります。ランプ レートが現在の値とターゲット値の差の絶対値よりも大きい場合、ランプは 1 サンプル周期内に発生します。

## 要件

**ヘッダー:** xapu.h

**サポートされているプラットフォーム:** XBOX Series X|S

## 概念ドキュメント

* [XAPU の概要](/build/console-features/audio/overviews/xapu-overview)

## 関連項目

[XApuEnqueueCommand](/reference/audio/xapu/functions/xapuenqueuecommand)\
[XApuResult](/reference/audio/xapu/structs/xapuresult)\
[XAPU](/reference/audio/xapu/xapu_members)


## Related topics

- [XApuConnect](/ja-jp/reference/audio/xapu/functions/xapuconnect.md)
- [XApuConnectInputParameters](/ja-jp/reference/audio/xapu/structs/xapuconnectinputparameters.md)
- [XApuConnectOutputParameters](/ja-jp/reference/audio/xapu/structs/xapuconnectoutputparameters.md)
- [XApuCommandId](/ja-jp/reference/audio/xapu/structs/xapucommandid.md)
- [XAPU の概要](/ja-jp/build/console-features/audio/overviews/xapu-overview.md)
