メインコンテンツへスキップ

GetShapeDmaFramesAvailable

読み取り可能なフレーム数を取得します。

構文

パラメーター

context   _In_
型: SHAPE_DMA_CONTEXT*
SHAPE_DMA_CONTEXT 構造体へのポインター。

戻り値

型: UINT32 読み取り可能なフレーム数。

解説

オーディオ バッファーが十分に大きく、データがバッファー サイズに応じた一定間隔でストリーミングされるようにすることで、Direct Memory Access (DMA) コマンドのブロックを防ぐことができます。たとえば、一度に 4 個のハードウェア フレームをストリーミングしている場合、そのフレームの倍数 (少なくとも 8 フレームでダブル バッファリング) をバッファーに確保し、タイトルの読み取りポインターより先行してハードウェアが書き込めるようにしてください。あるいは、次のフローグラフを送信する前にバッファーを空にすること (消費、DMA 読み取りポインターの更新、その後フローグラフの送信) を強制することもできます。詳細については、SHAPE の概要 の Blocked commands を参照してください。 DMA システムは、float と整数の自動変換 (float から整数、および整数から float) を伴う読み書き機能をサポートします。DMA システムは、128 サンプル ブロックのデインターリーブされたサンプルを含む循環バッファーを使用します。 DMA プロセッサにより、Scalable Hardware Audio Processing Engine (SHAPE) は、ミックス バッファーからメイン システム メモリへのデータの送信、およびさらなる処理のためのメイン システムからミックス バッファーへのデータの取得を行えます。DMA はブロック単位で行われ、一度に 1 オーディオ フレーム分のデータを転送します。ブロック インターリーブ データを扱えるようにするため、サンプルの読み書き時にシステム メモリ内でスキップするオーディオ フレーム ブロック数 (ベース アドレスからの) を指定するスキップ値があります。したがって、マルチチャネル ストリームではチャネルごとに 1 つの DMA コンテキストが必要になります。 オーディオ データ サンプルは常に 32 ビット値として読み書きされ、整数または float のいずれかで、SHAPE_DMA_CONTEXT 構造体の floatConvert フラグで指定します。DMA の方向 (読み取り/書き込み) は、DMA コンテキストではなく DMA コマンドで指定されることに注意してください。これによりデータ帯域幅の削減に寄与します。DMA エンジンは信号処理を行いませんが、float から整数への変換 (または整数から float への変換) を実行できます。これにより、アプリケーションの CPU は浮動小数点形式でデータ サンプルを処理できます。 DMA バッファーのサイズは次の式で計算できます。
読み取りポインターと書き込みポインターは次のようにインクリメントされます。
オーディオ バッファー内のアドレスは次のように計算します。

要件

ヘッダー: shapedmacontext.h サポートされるプラットフォーム: XBOX One ファミリ本体および XBOX Series 本体

関連項目

ShapeDmaContext
最終更新日 2026年10月19日