IAudioEndpointRT
COM公式ドキュメント
エンドポイントバッファー内の現在の読み取り位置と書き込み位置の差を取得します。
解説(Remarks)
リモートデスクトップサービスの AudioEndpoint API はリモートデスクトップのシナリオで使用するものであり、クライアントアプリケーション向けではありません。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
エンドポイントにキューイングされているデータの量を 100 ナノ秒単位で取得します。
| pPadding | LONGLONG* | out | エンドポイントバッファーで利用可能なフレーム数を受け取ります。 |
| pAeCurrentPosition | AE_CURRENT_POSITION* | out | 呼び出し元が指定した AE_CURRENT_POSITION 構造体に、エンドポイントバッファー内の現在のフレームの位置に関する情報を受け取ります。 |
解説(Remarks)
オーディオエンジンはこの情報を使用して、処理が必要なデータの量を計算します。この計算は実装に依存します。 pPadding パラメーターの値は、エンドポイントバッファーで再生するためにキューイングされているオーディオフレームの数を示します。エンドポイントバッファーに書き込む前に、オーディオエンジンはバッファー長からパディング値を差し引くことでバッファー内の利用可能な空き領域を計算できます。CaptureStream エンドポイントの場合、GetCurrentPadding メソッドが報告するパディング値は、エンドポイントバッファー内の次のパケットで利用可能で、オーディオエンジンがバッファーから読み取る準備ができている可能性のあるキャプチャデータのフレーム数を示します。
このメソッドはリアルタイム処理スレッドから呼び出すことができます。このメソッドの実装は、ブロックしたり、ページングされたメモリにアクセスしたり、ブロックするシステムルーチンを呼び出したりしてはなりません。
リモートデスクトップサービスの AudioEndpoint API はリモートデスクトップのシナリオで使用するものであり、クライアントアプリケーション向けではありません。
処理パスが完了したことをエンドポイントに通知します。
解説(Remarks)
このメソッドにより、オーディオエンジンはエンドポイントを呼び出して、処理パスが完了し、取得またはエンドポイントデバイスへ引き渡す準備が整ったオーディオデータがあることを示すイベントを設定できます。
このメソッドはリアルタイム処理スレッドから呼び出すことができます。このメソッドの実装は、ブロックしたり、ページングされたメモリにアクセスしたり、ブロックするシステムルーチンを呼び出したりしてはなりません。
リモートデスクトップサービスの AudioEndpoint API はリモートデスクトップのシナリオで使用するものであり、クライアントアプリケーション向けではありません。
基になるストリームリソースの状態を非アクティブ状態に変更する必要があることをエンドポイントに通知します。
戻り値
メソッドが成功した場合は S_OK を返します。
解説(Remarks)
このメソッドにより、オーディオエンジンはエンドポイントを呼び出して、エンドポイントが基になるストリームリソースを一時停止できることを示します。ほとんどの場合、このメソッドは単に S_OK を返すだけで済みます。
このメソッドはリアルタイム処理スレッドから呼び出すことができます。このメソッドの実装は、ブロックしたり、ページングされたメモリにアクセスしたり、ブロックするシステムルーチンを呼び出したりしてはなりません。
リモートデスクトップサービスの AudioEndpoint API はリモートデスクトップのシナリオで使用するものであり、クライアントアプリケーション向けではありません。
基になるストリーミングリソースの状態をアクティブ状態に変更する必要があることをエンドポイントに通知します。
戻り値
メソッドが成功した場合は S_OK を返します。
解説(Remarks)
このメソッドにより、オーディオエンジンはエンドポイントを呼び出して、エンドポイントがオーディオストリームリソースを準備する必要があることを示します。ほとんどの場合、このメソッドは単に S_OK を返すだけで済みます。
このメソッドはリアルタイム処理スレッドから呼び出すことができます。このメソッドの実装は、ブロックしたり、ページングされたメモリにアクセスしたり、ブロックするシステムルーチンを呼び出したりしてはなりません。
リモートデスクトップサービスの AudioEndpoint API はリモートデスクトップのシナリオで使用するものであり、クライアントアプリケーション向けではありません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAudioEndpointRT "{DFD2005F-A6E5-4D39-A265-939ADA9FBB4D}" #usecom global IAudioEndpointRT IID_IAudioEndpointRT "{}" #comfunc global IAudioEndpointRT_GetCurrentPadding 3 var,var #comfunc global IAudioEndpointRT_ProcessingComplete 4 #comfunc global IAudioEndpointRT_SetPinInactive 5 #comfunc global IAudioEndpointRT_SetPinActive 6 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IAudioEndpointRT "{DFD2005F-A6E5-4D39-A265-939ADA9FBB4D}" #usecom global IAudioEndpointRT IID_IAudioEndpointRT "{}" #comfunc global IAudioEndpointRT_GetCurrentPadding 3 sptr,sptr #comfunc global IAudioEndpointRT_ProcessingComplete 4 #comfunc global IAudioEndpointRT_SetPinInactive 5 #comfunc global IAudioEndpointRT_SetPinActive 6 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。