Win32 API 日本語リファレンス
ホームSystem.RemoteDesktop › IAudioOutputEndpointRT

IAudioOutputEndpointRT

COM
IID8fa906e4-c31c-4e31-932e-19a66385e9aa継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

各処理パスの出力バッファーを取得します。

解説(Remarks)

IAudioOutputEndpointRT のメソッドは、リアルタイム処理スレッドから呼び出すことができます。このインターフェイスのメソッドの実装は、ブロックしたり、ページ メモリにアクセスしたり、ブロッキングを伴うシステム ルーチンを呼び出したりしてはなりません。

リモート デスクトップ サービスの AudioEndpoint API は、リモート デスクトップのシナリオで使用するためのものであり、クライアント アプリケーション向けではありません。

メソッド 3

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 UINT_PTR GetOutputDataPointer(DWORD u32FrameCount, AE_CURRENT_POSITION* pAeTimeStamp)

オーディオ エンジンによってデータが書き込まれる出力バッファーへのポインターを返します。

u32FrameCountDWORDinこのメソッドが返すデータ ポインターが指す出力バッファー内のフレーム数です。オーディオ エンジンはその処理要件に応じてこの値を変更できるため、エンドポイントはこの情報をキャッシュしてはなりません。詳細については「解説」を参照してください。
pAeTimeStampAE_CURRENT_POSITION*inレンダリングされるデータのタイム スタンプを指定する AE_CURRENT_POSITION 構造体へのポインターです。このパラメーターは省略可能です。

戻り値

データが書き込まれるバッファーへのポインターです。

解説(Remarks)

このメソッドは、オーディオ エンジンがデータを書き込むバッファーへのポインターを返します。データは、IAudioOutputEndpointRT::ReleaseOutputDataPointer メソッドが呼び出されるまで有効ではありません。返されるポインターはフレーム アラインされている必要があります。

u32FrameCount に渡すフレーム数は、エンドポイントがサポートする最大フレーム数以下でなければなりません。エンドポイントがサポートできる最大フレーム数を取得するには、オーディオ エンジンは IAudioEndpoint::GetFramesPerPacket メソッドを呼び出します。

このメソッドは、リアルタイム処理スレッドから呼び出すことができます。このメソッドの実装は、ブロックしたり、ページ メモリにアクセスしたり、ブロッキングを伴うシステム ルーチンを呼び出したりしてはなりません。

リモート デスクトップ サービスの AudioEndpoint API は、リモート デスクトップのシナリオで使用するためのものであり、クライアント アプリケーション向けではありません。

vtbl 4 void ReleaseOutputDataPointer(APO_CONNECTION_PROPERTY* pConnectionProperty)

出力バッファーへのポインターを解放します。

pConnectionPropertyAPO_CONNECTION_PROPERTY*in

APO_CONNECTION_PROPERTY 構造体へのポインターです。構造体内の値は変更してはなりません。呼び出し元は各メンバーを次のように設定します。

  • pBuffer には、IAudioOutputEndpointRT::GetOutputDataPointer メソッドが返した出力データ バッファーへのポインターを設定します。
  • u32ValidFrameCount には、オーディオ エンジンが実際に生成したフレーム数を設定します。この値は、GetOutputDataPointer メソッドの u32FrameCount パラメーターに渡したフレーム数と同じでない場合があります。
  • u32BufferFlags には、pBuffer メンバーが指す出力バッファーに有効なデータが含まれている場合は BUFFER_VALID を設定します。出力バッファーに無音データのみが含まれている場合は u32BufferFlagsBUFFER_SILENT を設定します。バッファー内のデータは実際に無音である必要はありませんが、pBuffer メンバーで指定されたバッファーは、u32ValidFrameCount メンバーに含まれるすべての無音フレームを保持できる必要があります。 したがって、BUFFER_SILENT が指定された場合、エンドポイントは出力バッファーに無音を書き込む必要があります。

解説(Remarks)

ReleaseOutputDataPointer は、オーディオ エンジンが出力バッファーへのデータ書き込みタスクを完了し、データ ポインターがもはや不要になったことをエンドポイントに通知します。このメソッドはまた、出力バッファー内のオーディオ サンプルに対応する時間、オーディオ エンジンが生成したフレーム数、およびバッファーが有効なデータで満たされているか無音データで満たされているかといった情報も伝えます。この情報に基づいて、ループ バッファーを表しオーディオ エンジンの出力に接続されているエンドポイントは、バッファー内の書き込み位置を進めることができます。GetOutputDataPointer メソッドの u32FrameCount パラメーターの値が 0 の場合、オーディオ エンジンが出力バッファーに有効なデータを書き込まなかったことを示します。u32FrameCount パラメーターの値は、GetOutputDataPointer で指定したフレーム数以下でなければなりません。エンドポイントは、GetOutputDataPointer で要求したすべてのデータが実際に生成されたと想定してはなりません。

このメソッドは、リアルタイム処理スレッドから呼び出すことができます。このメソッドの実装は、ブロックしたり、ページ メモリにアクセスしたり、ブロッキングを伴うシステム ルーチンを呼び出したりしてはなりません。

リモート デスクトップ サービスの AudioEndpoint API は、リモート デスクトップのシナリオで使用するためのものであり、クライアント アプリケーション向けではありません。

vtbl 5 void PulseEndpoint()

予約済みです。(IAudioOutputEndpointRT.PulseEndpoint)

解説(Remarks)

このメソッドは、リアルタイム処理スレッドから呼び出すことができます。このメソッドの実装は、ブロックしたり、ページ メモリにアクセスしたり、ブロッキングを伴うシステム ルーチンを呼び出したりしてはなりません。

リモート デスクトップ サービスの AudioEndpoint API は、リモート デスクトップのシナリオで使用するためのものであり、クライアント アプリケーション向けではありません。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IAudioOutputEndpointRT "{8FA906E4-C31C-4E31-932E-19A66385E9AA}"
#usecom global IAudioOutputEndpointRT IID_IAudioOutputEndpointRT "{}"
#comfunc global IAudioOutputEndpointRT_GetOutputDataPointer      3 int,var
#comfunc global IAudioOutputEndpointRT_ReleaseOutputDataPointer  4 var
#comfunc global IAudioOutputEndpointRT_PulseEndpoint             5
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。