IAVIEditStream
COM公式ドキュメント
IAVIEditStream インターフェイスは、編集可能なストリームの操作および変更をサポートします。以下のカスタムメソッドに加えて、IUnknown::QueryInterface、IUnknown::AddRef、IUnknown::Release を使用します。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Cut メソッドは、ストリームの一部を削除し、それを一時ストリームに配置します。アプリケーションが EditStreamCut 関数を使用したときに呼び出されます。
| plStart | INT* | inout | 操作の開始位置を受け取るバッファーへのポインターです。 |
| plLength | INT* | inout | 操作の長さ (フレーム単位) を受け取るバッファーへのポインターです。 |
| ppResult | IAVIStream** | out | 新しいストリームのインターフェイスへのポインターを受け取るバッファーへのポインターです。 - pavi切り取る対象のストリームのインターフェイスへのポインターです。 |
戻り値
OLE で定義された HRESULT を返します。
解説(Remarks)
C++ で記述されたハンドラーの場合、Cut の構文は次のとおりです。
HRESULT Cut(LONG *plStart, LONG *plLength,
PAVISTREAM *ppResult);
Copy メソッドは、ストリームまたはその一部を一時ストリームにコピーします。アプリケーションが EditStreamCopy 関数を使用したときに呼び出されます。
| plStart | INT* | inout | 操作の開始位置を受け取るバッファーへのポインターです。 |
| plLength | INT* | inout | 操作の長さ (フレーム単位) を受け取るバッファーへのポインターです。 |
| ppResult | IAVIStream** | out | 新しいストリームのインターフェイスへのポインターを受け取るバッファーへのポインターです。 - paviコピーする対象のストリームのインターフェイスへのポインターです。 |
戻り値
OLE で定義された HRESULT を返します。
解説(Remarks)
C++ で記述されたハンドラーの場合、Copy の構文は次のとおりです。
HRESULT Copy(LONG *plStart, LONG *plLength,
PAVISTREAM * ppResult);
Paste メソッドは、ストリームまたはその一部を別のストリームにコピーします。アプリケーションが EditStreamPaste 関数を使用したときに呼び出されます。
| plPos | INT* | inout | 操作の開始位置を受け取るバッファーへのポインターです。 |
| plLength | INT* | inout | ソースストリームから貼り付けるデータの長さ (バイト単位) を受け取るバッファーへのポインターです。 |
| pstream | IAVIStream* | in | ソースストリームのインターフェイスへのポインターです。 |
| lStart | INT | in | ソースストリーム内でのコピー操作の開始位置です。 |
| lEnd | INT | in | ソースストリーム内でのコピー操作の終了位置です。 |
戻り値
OLE で定義された HRESULT を返します。
解説(Remarks)
C++ で記述されたハンドラーの場合、Paste の構文は次のとおりです。
HRESULT Paste(LONG *plPos, LONG *plLength,
PAVISTREAM pstream, LONG lStart, LONG lLength);
Clone メソッドは、ストリームを複製します。アプリケーションが EditStreamClone 関数を使用したときに呼び出されます。
| ppResult | IAVIStream** | out | 新しいストリームのインターフェイスへのポインターを受け取るバッファーへのポインターです。 - pavi複製対象のストリームのインターフェイスへのポインターです。 |
戻り値
このメソッドは、OLE で定義された HRESULT を返します。
解説(Remarks)
C++ で記述されたハンドラーの場合、Clone の構文は次のとおりです。
HRESULT Clone(PAVISTREAM *ppResult);
SetInfo メソッドは、ストリームの特性を変更します。アプリケーションが EditStreamSetInfo 関数を使用したときに呼び出されます。
| lpInfo | AVISTREAMINFOW* | in | 新しいストリーム特性を格納した AVISTREAMINFO 構造体へのポインターです。 |
| cbInfo | INT | in | バッファーのサイズ (バイト単位) です。 - paviストリームのインターフェイスへのポインターです。 |
戻り値
OLE で定義された HRESULT を返します。
解説(Remarks)
C++ で記述されたハンドラーの場合、SetInfo の構文は次のとおりです。
HRESULT SetInfo(AVISTREAMINFO *lpInfo, LONG cbInfo);
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAVIEditStream "{00020024-0000-0000-C000-000000000046}" #usecom global IAVIEditStream IID_IAVIEditStream "{}" #comfunc global IAVIEditStream_Cut 3 var,var,sptr #comfunc global IAVIEditStream_Copy 4 var,var,sptr #comfunc global IAVIEditStream_Paste 5 var,var,sptr,int,int #comfunc global IAVIEditStream_Clone 6 sptr #comfunc global IAVIEditStream_SetInfo 7 var,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IAVIEditStream "{00020024-0000-0000-C000-000000000046}" #usecom global IAVIEditStream IID_IAVIEditStream "{}" #comfunc global IAVIEditStream_Cut 3 sptr,sptr,sptr #comfunc global IAVIEditStream_Copy 4 sptr,sptr,sptr #comfunc global IAVIEditStream_Paste 5 sptr,sptr,sptr,int,int #comfunc global IAVIEditStream_Clone 6 sptr #comfunc global IAVIEditStream_SetInfo 7 sptr,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。