IWMSyncReader
COM公式ドキュメント
IWMSyncReader インターフェースは、同期呼び出しを使用して ASF ファイルを読み取る機能を提供します。
メソッド 21
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Open メソッドは、読み取り用にファイルを開きます。IWMReader::Open とは異なり、このメソッドは同期呼び出しです。
| pwszFilename | LPWSTR | in | 開くファイル名を格納したワイド文字の null 終端文字列へのポインター。ASF ファイル拡張子を持つ有効なファイル名、または MP3 ファイル名でなければなりません。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。
解説(Remarks)
同期リーダーはストリーミングメディアをサポートしません。pwszFilename に URL を渡すとエラーになります。
Close メソッドは、同期リーダーからファイルを削除します。
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。
SetRange メソッドを使用すると、同期リーダーによる再生の開始時刻と継続時間を指定できます。
| cnsStartTime | ULONGLONG | in | 再生を開始するファイル内のオフセット。この値は 100 ナノ秒単位で表されます。 |
| cnsDuration | LONGLONG | in | 継続時間(100 ナノ秒単位)。ファイルの末尾まで再生を続けるにはゼロを指定します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| cnsDuration パラメーターが負の値です。 | |
| メソッドが内部オブジェクト用のメモリを割り当てられませんでした。 | |
| 同期リーダーにファイルが読み込まれていません。 |
解説(Remarks)
このメソッドはファイル全体に対する範囲のみを指定します。個々のストリームに対して範囲を指定することはできません。
SetRange は、ファイルが読み込まれた後であればいつでも呼び出すことができます。
指定した開始時刻は、最初に受信するサンプルのプレゼンテーション時刻とは限りません。同期リーダーは、指定した時刻の前にあるキーフレームから始めて動画サンプルを配信します。
SetRangeByFrame メソッドは、開始する動画フレーム番号と読み取るフレーム数で指定されたファイルの一部を読み取るように同期リーダーを構成します。
| wStreamNum | WORD | in | ストリーム番号。 |
| qwFrameNumber | ULONGLONG | in | 再生を開始するフレーム番号。ファイル内の最初のフレームは 1 です。 |
| cFramesToRead | LONGLONG | in | 読み取るフレーム数。ファイルの末尾まで再生を続けるには 0 を渡します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| cFramesToRead に負の数が含まれています。 |
解説(Remarks)
呼び出しが成功すると、選択したフレームのプレゼンテーション時刻に基づいて、すべてのストリームが同じ位置に同期されます。その後の GetNextSample の呼び出しでは、SetRangeByFrame の呼び出しで指定したストリームだけでなく、アクティブなすべてのストリームのサンプルが取得されます。フレーム単位で単一の動画ストリームのサンプルのみを受信したい場合は、GetNextSample を呼び出す前に SetStreamsSelected を呼び出して目的のストリーム番号を渡す必要があります。
SetRangeByFrame を使用するには、同期リーダー内のファイルがフレーム番号でインデックス付けされている必要があります。IWMIndexer2::Configure を呼び出すことで、フレーム番号でインデックス付けするようにインデクサーオブジェクトを構成できます。次に IWMIndexer::StartIndexing を呼び出して、新しい設定でファイルにインデックスを付けます。
開始フレーム番号を使用して圧縮サンプル配信の範囲を設定すると、同期リーダーは指定したフレームの前にある最初のキーフレームからサンプルの配信を開始します。フレームのプレゼンテーション時刻を特定したい場合は、IWMSyncReader2::SetRangeByFrameEx を使用してください。
負の数を渡すとエラーになります。
SetRangeByFrame は、同期リーダーにファイルが読み込まれた後であればいつでも呼び出すことができます。
GetNextSample メソッドは、ファイルから次のサンプルを取得します。
| wStreamNum | WORD | in | サンプルを取得したいストリームの番号を格納した WORD。ゼロを渡すと、ストリーム番号に関係なくファイル内の次のサンプルが返されます。 | ||||||||||
| ppSample | INSSBuffer** | out | サンプルを受け取るバッファーへのポインター。サンプルを取得せずにサンプル時刻を取得するには NULL を設定します。NULL を設定する場合は、pcnsDuration と pdwFlags も両方とも NULL に設定する必要があります。 | ||||||||||
| pcnsSampleTime | ULONGLONG* | out | サンプル時刻を 100 ナノ秒単位で受け取る QWORD 変数へのポインター。 | ||||||||||
| pcnsDuration | ULONGLONG* | out | サンプルの継続時間を 100 ナノ秒単位で受け取る QWORD 変数へのポインター。 | ||||||||||
| pdwFlags | DWORD* | out | 次のフラグのうち 1 つ以上を格納した DWORD へのポインター。
| ||||||||||
| pdwOutputNum | DWORD* | out | 出力番号を受け取る DWORD へのポインター。 | ||||||||||
| pwStreamNum | WORD* | out | ストリーム番号を受け取る WORD へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| ファイル内のすべてのサンプルが読み取られました。 | |
| メソッド内の呼び出しで問題が発生しました。 | |
|
wStreamNum に有効でないストリーム番号が指定されています。
または pcnsSampleTime が NULL です。 または ppSample、pcnsDuration、pdwFlags のいずれかが NULL ですが、他のいずれか一方または両方が NULL ではありません。 または wStreamNum が 0 で、pdwOutputNum と pwStreamNum の両方が NULL です。 |
|
|
同期リーダーで読み取り可能な状態で開かれているファイルがありません。
または wStreamNum にオフになっている(読み取り対象として選択されていない)ストリーム番号が指定されています。 |
解説(Remarks)
このメソッドは、圧縮サンプルと非圧縮サンプルの両方を配信します。どちらになるかは、ファイル内のストリームに対して SetReadStreamSamples を呼び出したかどうかによります。これは、同期リーダーを使用してサンプルを取得する唯一のメソッドです。
ファイルの先頭以外の任意の位置からサンプルの受信を開始するには、まず再生の範囲を指定する必要があります。プレゼンテーション時刻に基づいて再生範囲を指定するには、SetRange メソッドを使用します。フレーム番号を使用して範囲を設定するには、SetRangeByFrame メソッドを使用します。ファイル内のすべてのサンプル(範囲を指定した場合はその範囲内のすべてのサンプル)を受信し終えると、次の GetNextSample の呼び出しで NS_E_NO_MORE_SAMPLES が返されます。
出力設定が指定されていない場合、タイムラインはプレゼンテーション時刻です。ストリームを早期に配信させるには、SetOutputSetting を使用します。
GetNextSample は次の 3 つの方法のいずれかで呼び出すことができます。
- wStreamNum に 0 以外の値を渡すと、指定したストリーム番号の次のサンプルが取得されます。この場合、pdwOutputNum と pwStreamNum の両方に NULL を渡すことができます。
- wStreamNum にゼロを渡し、出力番号を使用している場合は、pwStreamNum に NULL を渡すことができます。この場合、pdwOutputNum には有効なアドレスを渡す必要があります。
- wStreamNum にゼロを渡し、出力番号を使用していない場合は、pdwOutputNum に NULL を渡すことができます。この場合、pwStreamNum には有効なアドレスを渡す必要があります。
SetStreamsSelected メソッドは、ストリームのリストから配信するサンプルを構成します。各ストリームは、すべてのサンプルを配信する、サンプルを配信しない、またはクリーンポイントサンプルのみを配信するように設定できます。
| cStreamCount | WORD | in | pwStreamNumbers に列挙されているストリームの数。 |
| pwStreamNumbers | WORD* | in | ストリーム番号を格納した WORD 値の配列へのポインター。 |
| pSelections | WMT_STREAM_SELECTION* | in | WMT_STREAM_SELECTION 列挙値の配列へのポインター。これらの値は pwStreamNumbers に列挙されているストリーム番号に対応します。各値は、該当するストリームに対して配信するサンプルを指定します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
|
pwStreamNumbers または pSelections が NULL です。
または cStreamCount がゼロです。 |
|
| 同期リーダーにファイルが読み込まれていません。 | |
| メソッドが内部オブジェクト用のメモリを割り当てられませんでした。 |
解説(Remarks)
SetStreamsSelects は、同期リーダーにファイルが読み込まれた後であればいつでも呼び出すことができます。再生中も必要に応じて呼び出しを続けることができます。
このメソッドは IWMReaderAdvanced::SetStreamsSelected と同一ですが、同期リーダーではストリームの選択が常に手動である点が異なります。また、IWMSyncReader::GetNextSample にはストリーム番号の出力が含まれているため、相互排他的なストリームを好きなだけ選択して、それらのサンプルを受信できます。
GetStreamSelected メソッドは、特定のストリームが現在選択されているかどうかを示すフラグを取得します。
| wStreamNum | WORD | in | ストリーム番号を格納した WORD。 |
| pSelection | WMT_STREAM_SELECTION* | out | 出力時に WMT_STREAM_SELECTION 列挙型のメンバーを 1 つ受け取る変数へのポインター。この値は、指定したストリームの選択状態を示します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| 原因不明の理由でメソッドが失敗しました。 | |
| pSelection パラメーターが NULL であるか、ストリーム番号が無効です。 | |
| 同期リーダーで開かれているファイルがありません。 |
解説(Remarks)
このメソッドは IWMReaderAdvanced::GetStreamSelected と同一です。
SetReadStreamSamples メソッドは、ストリームのサンプルを圧縮した状態で配信するか、非圧縮の状態で配信するかを指定します。
| wStreamNum | WORD | in | ストリーム番号を格納した WORD。 |
| fCompressed | BOOL | in | サンプルを圧縮する場合は True となるブール値。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| 同期リーダーで開かれているファイルがありません。 | |
| ストリームが保護されており、圧縮サンプルを配信するように構成されていません。 | |
| wStreamNum に無効なストリーム番号が指定されています。 |
解説(Remarks)
SetReadStreamSamples は、同期リーダーにファイルが読み込まれた後であればいつでも呼び出すことができます。再生中も必要に応じて呼び出しを続けることができます。
GetReadStreamSamples メソッドは、ストリームが圧縮サンプルを配信するように構成されているかどうかを確認します。
| wStreamNum | WORD | in | ストリーム番号を格納した WORD。 |
| pfCompressed | BOOL* | out | 指定したストリームの圧縮配信の状態を受け取るフラグへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
|
pfCompressed が NULL です。
または wStreamNum に無効なストリーム番号が指定されています。 |
|
| 同期リーダーで開かれているファイルがありません。 |
解説(Remarks)
ストリームが圧縮サンプルを配信するように構成するには、IWMSyncReader::SetReadStreamSamples を呼び出します。
GetOutputSetting メソッドは、特定の出力の設定を名前で取得します。
| dwOutputNum | DWORD | in | 出力番号を格納した DWORD。 |
| pszName | LPWSTR | in | 値を取得したい設定の名前を格納したワイド文字の null 終端文字列へのポインター。設定名を表すグローバル定数の一覧については、Output Settings を参照してください。 |
| pType | WMT_ATTR_DATATYPE* | out | WMT_ATTR_DATATYPE 列挙型の値を 1 つ受け取る変数へのポインター。受け取った値は、pValue 内のデータの型を示します。 |
| pValue | BYTE* | out | 値を格納するバイトバッファーへのポインター。必要なバッファーの長さを取得するには NULL を渡します。 |
| pcbLength | WORD* | inout | 入力時は pValue の長さを格納した変数へのポインター。出力時は、pValue で使用されたバイト数がこの変数に格納されます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
|
dwOutputNum に無効な出力番号が指定されています。
または pszName、pType、pcbLength のいずれかが NULL です。 または pszName に無効な設定名が指定されています。 |
|
| 同期リーダーで開かれているファイルがありません。 | |
|
pcbLength として渡されたバッファーサイズが、設定値を格納するのに十分な大きさではありません。 |
| pszName にサポートされていない設定が指定されています。 |
解説(Remarks)
取得したい設定ごとに GetOutputSetting を 2 回呼び出す必要があります。1 回目の呼び出しでは、pValue に NULL を渡します。戻り時に、指定した設定の値を保持するために必要なバッファーサイズが pcbLength に設定されます。その後、必要な量のメモリをバッファーに割り当て、2 回目の呼び出しでそのポインターを pValue として渡すことができます。
データを格納するのに十分な大きさでないバッファーを pValue として渡すと、エラーコード ASF_E_BUFFERTOOSMALL が返されます。このエラーコードを返す際も、メソッドは pcbLength の値を正しい値のサイズに設定します。
SetOutputSetting メソッドは、特定の出力に対して名前付きの設定を指定します。
| dwOutputNum | DWORD | in | 出力番号を格納した DWORD。 |
| pszName | LPWSTR | in | 設定の名前を格納した null 終端文字列へのポインター。設定名を表すグローバル定数の一覧については、Output Settings を参照してください。 |
| Type | WMT_ATTR_DATATYPE | in | WMT_ATTR_DATATYPE 列挙型のメンバー。この値は、pValue のバッファー内のデータの型を示します。 |
| pValue | BYTE* | in | 設定の値を格納するバイト配列へのポインター。このバッファーに格納されるデータの型は Type で指定されます。 |
| cbLength | WORD | in | pValue のサイズ(バイト単位)。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
|
pszName または pValue が NULL です。
または dwOutputNum に無効な出力番号が指定されています。 |
|
| 同期リーダーで開かれているファイルがありません。 | |
| pszName にサポートされていない設定が指定されています。 |
GetOutputCount メソッドは、同期リーダーで開かれているファイルに存在する出力の数を取得します。
| pcOutputs | DWORD* | out | ファイル内の出力の数を受け取る DWORD へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| pcOutputs パラメーターが NULL です。 | |
| 原因不明の理由でメソッドが失敗しました。 |
解説(Remarks)
出力を列挙するには、GetOutputCount を呼び出して出力の数を取得し、次に GetOutputProps を呼び出します。
GetOutputProps メソッドは、非圧縮出力ストリームの現在のプロパティを取得します。
| dwOutputNum | DWORD | in | 出力番号を格納した DWORD。 |
| ppOutput | IWMOutputMediaProps** | out | IWMOutputMediaProps インターフェースへのポインターへのポインター。このオブジェクトは、このメソッドの呼び出しが成功すると作成されます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| ppOutput パラメーターが NULL であるか、dwOutputNum パラメーターが出力の数以上です。出力番号はゼロから始まります。 | |
| 原因不明の理由でメソッドが失敗しました。 |
解説(Remarks)
GetOutputProps の呼び出しで取得したオブジェクトを操作しても、アプリケーションが SetOutputProps も呼び出さない限り、出力メディアストリームには影響しません。
SetOutputProps メソッドは、非圧縮出力ストリームのメディアプロパティを指定します。
| dwOutputNum | DWORD | in | 出力番号を格納した DWORD。 |
| pOutput | IWMOutputMediaProps* | in | IWMOutputMediaProps インターフェースへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| dwOutputNum パラメーターが出力の数以上です。出力番号はゼロから始まります。 | |
| 原因不明の理由でメソッドが失敗しました。 |
解説(Remarks)
GetOutputProps の呼び出しで取得したオブジェクトを操作しても、アプリケーションが SetOutputProps も呼び出さない限り、出力メディアストリームには影響しません。
DirectX VA フォーマットは GetOutputFormat から返される場合がありますが、これらを SetOutputProps に渡すと、DirectX VA フォーマットはこの方法で指定できないため、そのメソッドは失敗します。したがって、コードでは SetOutputProps に渡す前にフォーマットを調べるか、あるいは GetOutputFormat から列挙される次のフォーマットを試すことで、そのメソッドが失敗する場合に対処する必要があります。DirectX VA フォーマットを識別する方法を示すサンプルコードについては、Enabling DirectX Video Acceleration を参照してください。
SetOutputProps は、同期リーダーにファイルが読み込まれた後であればいつでも呼び出すことができます。再生中も必要に応じて呼び出しを続けることができます。
このメソッドで設定した新しい出力プロパティは、次の GetNextSample の呼び出しで有効になります。
GetOutputFormatCount メソッドは、同期リーダー上のこの出力がサポートするすべての可能なフォーマットの種類を判別するために使用します。
| dwOutputNum | DWORD | in | サポートされているフォーマットの数を判別したい出力の番号を格納した DWORD。 |
| pcFormats | DWORD* | out | サポートされているフォーマットの数を受け取る DWORD へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| pcFormats が NULL です。 | |
| 同期リーダーにファイルが読み込まれていません。 |
GetOutputFormat メソッドは、指定した出力メディアストリームがサポートするフォーマットを取得します。
| dwOutputNum | DWORD | in | 出力番号を格納した DWORD。 |
| dwFormatNum | DWORD | in | フォーマット番号を格納した DWORD。 |
| ppProps | IWMOutputMediaProps** | out | IWMOutputMediaProps インターフェースへのポインターへのポインター。このオブジェクトは、このメソッドの呼び出しが成功すると作成されます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| ppProps が NULL です。 | |
| 同期リーダーで開かれているファイルがありません。 |
解説(Remarks)
出力メディアストリームがサポートするフォーマットを列挙するには、GetOutputFormatCount を呼び出してフォーマットの数を取得し、次に GetOutputFormat を続けて呼び出してフォーマットを取得します。
GetOutputNumberForStream メソッドは、指定したストリームに対応する出力番号を取得します。
| wStreamNum | WORD | in | 対応する出力番号を取得したいストリームの番号を格納した WORD。 |
| pdwOutputNum | DWORD* | out | wStreamNum で指定したストリーム番号に対応する出力番号を受け取る DWORD へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| wStreamNum に無効なストリーム番号が指定されています。 |
解説(Remarks)
複数ビットレートのファイルの場合のように、1 つの出力に複数のストリームが含まれることがあります。
GetStreamNumberForOutput メソッドは、指定した出力に対応するストリーム番号を取得します。
| dwOutputNum | DWORD | in | ストリーム番号を取得したい出力の番号を指定する DWORD 値。 |
| pwStreamNum | WORD* | out | dwOutput で指定した出力に対応するストリーム番号を受け取る WORD 値へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| dwOutput に無効な出力番号が指定されています。 |
解説(Remarks)
相互排他に相当する出力の場合、アクティブなストリーム番号のみが取得されます。そのような出力に関連付けられたすべてのストリーム番号を取得する必要がある場合は、ファイルのプロファイル情報にアクセスする必要があります。
GetMaxOutputSampleSize メソッドは、同期リーダーで開かれているファイルの指定した出力の最大サンプルサイズを取得します。
| dwOutput | DWORD | in | 最大サンプルサイズを取得したい出力の番号を格納した DWORD。 |
| pcbMax | DWORD* | out | dwOutput で指定した出力の最大サンプルサイズ(バイト単位)を受け取る DWORD 値へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
|
pcbMax が NULL です。
または dwOutput に無効な出力番号が指定されています。 |
|
|
同期リーダーで開かれているファイルがありません。 |
| 指定した出力は現在、再生用に構成されていません。 | |
| 同期リーダーが内部オブジェクトの初期化に失敗しました。 |
解説(Remarks)
複数ビットレートストリーミングなどの一部のシナリオでは、出力に複数のストリームが含まれます。返されるサイズは、指定した出力に関連付けられたすべてのストリームの最大サンプルサイズです。
特定のストリームの最大サンプルサイズは、IWMSyncReader::GetMaxStreamSampleSize を使用して取得できます。
GetMaxStreamSampleSize メソッドは、同期リーダーで開かれているファイル内の指定したストリームの最大サンプルサイズを取得します。
| wStream | WORD | in | 最大サンプルサイズを取得したいストリームの番号を格納した WORD。 |
| pcbMax | DWORD* | out | wStream で指定したストリームの最大サンプルサイズ(バイト単位)を受け取る DWORD 値へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
|
pcbMax が NULL です。
または wStream に無効なストリーム番号が指定されています。 |
|
|
同期リーダーで開かれているファイルがありません。 |
解説(Remarks)
このメソッドは、個々のストリームの最大サンプルサイズを取得します。そのストリームは、1 つの出力に含まれる複数のストリームのうちの 1 つである場合があります。出力番号を使用している場合は、IWMSyncReader::GetMaxOutputSampleSize を使用して出力全体の最大サンプルサイズを取得してください。
OpenStream メソッドは、読み取り用にストリームを開きます。
| pStream | IStream* | in | IStream インターフェースへのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMSyncReader "{9397F121-7705-4DC9-B049-98B698188414}" #usecom global IWMSyncReader IID_IWMSyncReader "{}" #comfunc global IWMSyncReader_Open 3 wstr #comfunc global IWMSyncReader_Close 4 #comfunc global IWMSyncReader_SetRange 5 int64,int64 #comfunc global IWMSyncReader_SetRangeByFrame 6 int,int64,int64 #comfunc global IWMSyncReader_GetNextSample 7 int,sptr,var,var,var,var,var #comfunc global IWMSyncReader_SetStreamsSelected 8 int,var,var #comfunc global IWMSyncReader_GetStreamSelected 9 int,var #comfunc global IWMSyncReader_SetReadStreamSamples 10 int,int #comfunc global IWMSyncReader_GetReadStreamSamples 11 int,var #comfunc global IWMSyncReader_GetOutputSetting 12 int,wstr,var,var,var #comfunc global IWMSyncReader_SetOutputSetting 13 int,wstr,int,var,int #comfunc global IWMSyncReader_GetOutputCount 14 var #comfunc global IWMSyncReader_GetOutputProps 15 int,sptr #comfunc global IWMSyncReader_SetOutputProps 16 int,sptr #comfunc global IWMSyncReader_GetOutputFormatCount 17 int,var #comfunc global IWMSyncReader_GetOutputFormat 18 int,int,sptr #comfunc global IWMSyncReader_GetOutputNumberForStream 19 int,var #comfunc global IWMSyncReader_GetStreamNumberForOutput 20 int,var #comfunc global IWMSyncReader_GetMaxOutputSampleSize 21 int,var #comfunc global IWMSyncReader_GetMaxStreamSampleSize 22 int,var #comfunc global IWMSyncReader_OpenStream 23 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IWMSyncReader "{9397F121-7705-4DC9-B049-98B698188414}" #usecom global IWMSyncReader IID_IWMSyncReader "{}" #comfunc global IWMSyncReader_Open 3 wstr #comfunc global IWMSyncReader_Close 4 #comfunc global IWMSyncReader_SetRange 5 int64,int64 #comfunc global IWMSyncReader_SetRangeByFrame 6 int,int64,int64 #comfunc global IWMSyncReader_GetNextSample 7 int,sptr,sptr,sptr,sptr,sptr,sptr #comfunc global IWMSyncReader_SetStreamsSelected 8 int,sptr,sptr #comfunc global IWMSyncReader_GetStreamSelected 9 int,sptr #comfunc global IWMSyncReader_SetReadStreamSamples 10 int,int #comfunc global IWMSyncReader_GetReadStreamSamples 11 int,sptr #comfunc global IWMSyncReader_GetOutputSetting 12 int,wstr,sptr,sptr,sptr #comfunc global IWMSyncReader_SetOutputSetting 13 int,wstr,int,sptr,int #comfunc global IWMSyncReader_GetOutputCount 14 sptr #comfunc global IWMSyncReader_GetOutputProps 15 int,sptr #comfunc global IWMSyncReader_SetOutputProps 16 int,sptr #comfunc global IWMSyncReader_GetOutputFormatCount 17 int,sptr #comfunc global IWMSyncReader_GetOutputFormat 18 int,int,sptr #comfunc global IWMSyncReader_GetOutputNumberForStream 19 int,sptr #comfunc global IWMSyncReader_GetStreamNumberForOutput 20 int,sptr #comfunc global IWMSyncReader_GetMaxOutputSampleSize 21 int,sptr #comfunc global IWMSyncReader_GetMaxStreamSampleSize 22 int,sptr #comfunc global IWMSyncReader_OpenStream 23 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。