IDirectDrawMediaStream
COM公式ドキュメント
メモ このインターフェイスは非推奨です。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
メモ このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。現在のメディアストリームのフォーマットを取得し、オプションで希望するフォーマットも取得します。
| pDDSDCurrent | DDSURFACEDESC* | out | 現在のメディアストリームのフォーマットを格納する DirectDraw サーフェイス記述へのポインター。 | ||||||||||
| ppDirectDrawPalette | IDirectDrawPalette** | out | IDirectDrawPalette インターフェイスが存在する場合、そのインターフェイスへのポインターのアドレス。 | ||||||||||
| pDDSDDesired | DDSURFACEDESC* | out | 現在のメディアストリームの希望するフォーマットを格納する DirectDraw サーフェイス記述へのポインター。 | ||||||||||
| pdwFlags | DWORD* | out | DDSURFACEDESC 構造体に設定されるフラグへのポインター。関連するフラグは次のとおりです。
|
戻り値
次のいずれかの値を返します。
| リターンコード | 説明 |
|---|---|
|
DirectDraw サーフェイスのパラメーターのいずれかが無効です。 |
| 必須パラメーターのうち 1 つ以上が無効です。 | |
| 成功しました。 |
解説(Remarks)
このメソッドを呼び出した後は、現在のフォーマットに従うか、IDirectDrawMediaStream::SetFormat メソッドを呼び出してフォーマットの変更を試みることができます。
このメソッドのパラメーターはすべて省略可能です。取得したくない情報については、対応するパラメーターを NULL に設定します。
プログレッシブレンダリングを行うには、1 つのサンプルを作成し、そのサンプルをビデオの連続するフレームに対して繰り返し使用します。ビデオデコンプレッサーは、前のフレームへの部分的な更新を行うためにこの手法を使用します。
このメソッドを呼び出す前に、DDSURFACEDESC 構造体の dwSize メンバーを初期化する必要があります。
DDSD_CAPS フラグは、DDSCAPS 構造体に列挙されている値のいずれか、または DDSCAPS_DATAEXCHANGE を返します。DDSCAPS_DATAEXCHANGE は Ddrawex.h で DDSCAPS_SYSTEMMEMORY|DDSCAPS_VIDEOMEMORY として定義されています。
メモ このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。現在のメディアストリームのフォーマットを設定します。
| pDDSurfaceDesc | DDSURFACEDESC* | in | 新しいフォーマットを格納した DirectDraw サーフェイス記述へのポインター。 |
| pDirectDrawPalette | IDirectDrawPalette* | in | IDirectDrawPalette インターフェイスへのポインターである省略可能なパラメーター。 |
戻り値
次のいずれかの値を返します。
| リターンコード | 説明 |
|---|---|
|
指定されたフォーマットは現在のストリームと互換性がありません。 |
|
このストリームに対して 1 つ以上のストリームサンプルが既に割り当てられているため、フォーマットを変更できません。 |
| 成功しました。 |
解説(Remarks)
ストリームに割り当て済みのサンプルがあり、そのサンプルフォーマットが指定されたフォーマットと一致しない場合、このメソッドは失敗します。指定されたフォーマットが現在のフォーマットと一致する場合、このメソッドは常に成功します。
メモ このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。現在のメディアストリームが使用する DirectDraw オブジェクトへのポインターを取得します。
| ppDirectDraw | IDirectDraw** | out | 現在のメディアストリームに関連付けられた DirectDraw オブジェクトを格納する IDirectDraw インターフェイスへのポインターのアドレス。 |
戻り値
解説(Remarks)
ストリームをまだ初期化していない場合、取得されるポインターは NULL になり、メソッドは S_OK を返します。ストリームを初期化済みの場合、このメソッドは取得されるポインターの参照カウントをインクリメントします。
メモ このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。現在のメディアストリームの DirectDraw オブジェクトを設定します。
| pDirectDraw | IDirectDraw* | in | メディアストリームの新しい DirectDraw オブジェクトを格納した IDirectDraw インターフェイスへのポインター。 |
戻り値
解説(Remarks)
現在のストリームに割り当て済みのサンプルがあり、その DirectDraw オブジェクトが指定されたものと異なる場合、このメソッドは失敗します。指定された DirectDraw オブジェクトがストリームの現在のオブジェクトと一致する場合は、常に成功します。
このストリームに割り当て済みのサンプルがない場合、pDirectDraw を NULL に設定できます。これにより、ストリームは現在の DirectDraw オブジェクトへの参照を強制的に解放します。
メモ このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。指定された DirectDraw サーフェイスオブジェクトを使用してストリームサンプルを作成します。
| pSurface | IDirectDrawSurface* | in | 既存の DirectDraw サーフェイスへのポインター。IDirectDrawSurface7 インターフェイスポインターから IDirectDrawSurface インターフェイスを取得するには、QueryInterface を使用します。 | ||||
| pRect | RECT* | in | 指定したサーフェイスで使用するクリッピング矩形へのポインター。サーフェイス全体を使用する場合は、このパラメーターを NULL に設定します。 | ||||
| dwFlags | DWORD | in | 各種フラグを指定します。次のフラグが定義されています。
| ||||
| ppSample | IDirectDrawStreamSample** | out | 新しく作成されるサンプルを指す IDirectDrawStreamSample インターフェイスへのポインターのアドレス。 |
戻り値
次のいずれかの値を返します。
| リターンコード | 説明 |
|---|---|
|
指定されたピクセルフォーマットはストリームフォーマットと互換性がありません。 |
|
指定されたクリッピング矩形が無効です。 |
|
指定されたサーフェイスはストリームフォーマットと互換性がありません。 |
| 必須パラメーターのうち 1 つ以上が無効です。 | |
|
ストリームには既に割り当て済みのサンプルがあり、サーフェイスがサンプルフォーマットと一致しません。 |
| 成功しました。 |
解説(Remarks)
このメソッドは現在のストリームからサンプルを作成し、そのサンプルをこのサーフェイスにアタッチします。
ストリームに割り当て済みのサーフェイスがなく、指定されたサーフェイスがストリームのフォーマットと一致しない場合、このメソッドはストリームに対して IDirectDrawMediaStream::SetFormat メソッドを呼び出し、両者を一致させます。
プログレッシブレンダリングを行うには、1 つのサンプルを作成し、そのサンプルをビデオの連続するフレームに対して繰り返し使用します。ビデオデコンプレッサーは、前のフレームへの部分的な更新を行うためにこの手法を使用します。
pRect パラメーターはストリームのフォーマットと一致している必要があります (IDirectDrawMediaStream::GetFormat を参照)。誤ったクリップ矩形が設定された場合やクリップ矩形が設定されておらず、サーフェイスサイズがムービーサイズと一致しない場合、ムービーが再生されないことがあります。プライマリサーフェイスを使用する場合は、ユーザーが表示設定を変更するとプライマリサーフェイスのサイズが変わる可能性があるため、クリッピング矩形を使用することをお勧めします。
メモ このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。ビデオストリームから 1 秒あたりの平均フレーム数を取得します。
| pFrameTime | LONGLONG* | out | 1 フレームあたりの平均時間を 100 ナノ秒単位で示す STREAM_TIME 値へのポインター。(Multimedia Streaming Data Types を参照してください。) |
戻り値
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDirectDrawMediaStream "{F4104FCE-9A70-11D0-8FDE-00C04FD9189D}" #usecom global IDirectDrawMediaStream IID_IDirectDrawMediaStream "{}" #comfunc global IDirectDrawMediaStream_GetFormat 9 var,sptr,var,var #comfunc global IDirectDrawMediaStream_SetFormat 10 var,sptr #comfunc global IDirectDrawMediaStream_GetDirectDraw 11 sptr #comfunc global IDirectDrawMediaStream_SetDirectDraw 12 sptr #comfunc global IDirectDrawMediaStream_CreateSample 13 sptr,var,int,sptr #comfunc global IDirectDrawMediaStream_GetTimePerFrame 14 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDirectDrawMediaStream "{F4104FCE-9A70-11D0-8FDE-00C04FD9189D}" #usecom global IDirectDrawMediaStream IID_IDirectDrawMediaStream "{}" #comfunc global IDirectDrawMediaStream_GetFormat 9 sptr,sptr,sptr,sptr #comfunc global IDirectDrawMediaStream_SetFormat 10 sptr,sptr #comfunc global IDirectDrawMediaStream_GetDirectDraw 11 sptr #comfunc global IDirectDrawMediaStream_SetDirectDraw 12 sptr #comfunc global IDirectDrawMediaStream_CreateSample 13 sptr,sptr,int,sptr #comfunc global IDirectDrawMediaStream_GetTimePerFrame 14 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。