Skip to main content

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年8月24日