IAMVideoAccelerator
COM公式ドキュメント
IAMVideoAccelerator インターフェースは、ビデオデコーダーフィルターが DirectX Video Acceleration (DXVA) 1.0 の機能にアクセスできるようにします。
メソッド 12
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetVideoAcceleratorGUIDs メソッドは、ディスプレイドライバーがサポートする DirectX Video Acceleration (DXVA) プロファイルの一覧を取得します。
| pdwNumGuidsSupported | DWORD* | inout | 入力時には、pGuidsSupported 配列の要素数を指定します。
pGuidsSupported が NULL の場合、 出力時には、pGuidsSupported が NULL の場合、pdwNumGuidsSupported は制限モードの DXVA プロファイルの数を受け取ります。それ以外の場合、pdwNumGuidsSupported は pGuidsSupported 配列に実際にコピーされた GUID の数を受け取ります。 |
| pGuidsSupported | GUID* | outoptional | GUID の配列のアドレス、または NULL。値が非 NULL の場合、この配列は制限モードの DXVA プロファイルを指定する GUID の一覧を受け取ります。これらの GUID はヘッダーファイル dxva.h で定義されており、DXVA 1.0 仕様に記載されています。 |
戻り値
インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。
| 戻り値 | 説明 |
|---|---|
| 失敗しました。 | |
| 引数が無効です。 | |
| このメソッドはサポートされていません。 | |
| NULL ポインター引数です。 | |
| 成功しました。 | |
| 状態が無効です。ビデオレンダラーが Direct3D または DirectDraw デバイスを作成していません。 |
解説(Remarks)
このメソッドは 2 回呼び出します。1 回目の呼び出しでは pGuidsSupported を NULL に設定します。pdwNumGuidsSupported パラメーターは DXVA プロファイル GUID の数を受け取ります。必要なサイズの GUID 配列を確保し、メソッドを再度呼び出します。このとき、pGuidsSupported にはその配列のアドレスを設定します。メソッドはその配列に DXVA プロファイル GUID の一覧を格納します。
GetUncompFormatsSupported メソッドは、指定した DirectX Video Acceleration (DXVA) プロファイルを使用してレンダリングできる非圧縮ピクセル形式の一覧を取得します。
| pGuid | GUID* | in | DXVA プロファイルを指定する GUID へのポインター。サポートされているプロファイルの一覧を取得するには、 IAMVideoAccelerator::GetVideoAcceleratorGUIDs を呼び出します。 |
| pdwNumFormatsSupported | DWORD* | inout | 入力時には、pFormatsSupported 配列の要素数を指定します。
pFormatsSupported が NULL の場合、 出力時には、pFormatsSupported が NULL の場合、pdwNumFormatsSupported はサポートされているピクセル形式の数を受け取ります。それ以外の場合、pdwNumFormatsSupported は pFormatsSupported 配列に実際にコピーされたピクセル形式の数を受け取ります。 |
| pFormatsSupported | DDPIXELFORMAT* | outoptional | DDPIXELFORMAT 構造体の配列のアドレス、または NULL。値が非 NULL の場合、この配列はピクセル形式の一覧を受け取ります。 |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
|
配列が小さすぎたため、メソッドはサポートされている総数より少ない数の形式を返しました。この値は失敗コードですが、意図的に小さい配列を確保した場合はこのエラーを無視できます。 |
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは 2 回呼び出します。1 回目の呼び出しでは pFormatsSupported を NULL に設定します。pdwNumFormatsSupported パラメーターは形式の数を受け取ります。必要なサイズの DDPIXELFORMAT 構造体の配列を確保し、メソッドを再度呼び出します。このとき、pFormatsSupported にはその配列のアドレスを設定します。メソッドはその配列にピクセル形式の一覧を格納します。
ドライバーは、最も推奨される形式を先頭に、推奨度の高い順に形式を返す必要があります。
GetInternalMemInfo メソッドは、ハードウェア抽象化レイヤー (HAL) が独自の用途に確保するスクラッチメモリの量を照会します。
| pGuid | GUID* | in | 使用中の DXVA プロファイルを指定する GUID へのポインター。 |
| pamvaUncompDataInfo | AMVAUncompDataInfo* | in | 非圧縮データのサイズとピクセル形式を指定する AMVAUncompDataInfo 構造体へのポインター。 |
| pamvaInternalMemInfo | AMVAInternalMemInfo* | inout | HAL が確保するスクラッチメモリの量を受け取る AMVAInternalMemInfo 構造体へのポインター。 |
戻り値
インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。
| 戻り値 | 説明 |
|---|---|
| 失敗しました。 | |
| 引数が無効です。 | |
| このメソッドはサポートされていません。 | |
| NULL ポインター引数です。 | |
| 成功しました。 |
GetCompBufferInfo メソッドは、DirectX Video Acceleration (DXVA) デコードに使用される圧縮バッファーに関する情報を取得します。
| pGuid | GUID* | in | 使用中の DXVA プロファイルを指定する GUID へのポインター。 |
| pamvaUncompDataInfo | AMVAUncompDataInfo* | in | 非圧縮データのサイズとピクセル形式を指定する AMVAUncompDataInfo 構造体へのポインター。 |
| pdwNumTypesCompBuffers | DWORD* | inout | 入力時には、pamvaCompBufferInfo 配列の要素数を指定します。
pamvaCompBufferInfo が NULL の場合、 出力時には、pamvaCompBufferInfo が NULL の場合、pdwNumTypesCompBuffers は確保すべき配列のサイズを受け取ります。それ以外の場合、pdwNumTypesCompBuffers は pamvaCompBufferInfo 配列に実際にコピーされた要素の数を受け取ります。 |
| pamvaCompBufferInfo | AMVACompBufferInfo* | outoptional | AMVACompBufferInfo 構造体の配列のアドレス、または NULL。値が非 NULL の場合、メソッドは AMVACompBufferInfo 構造体の一覧をこの配列にコピーします。各構造体は、ビデオアクセラレーターが使用する 1 種類の圧縮データバッファーに対応します。 このメソッドを呼び出す前に、配列のすべての要素を 0 に設定してください。 各配列インデックスは、dxva.h で定義されている DXVA サーフェスタイプのいずれかに対応します。ビデオアクセラレーターは、最大 DXVA_NUM_TYPES_COMP_BUFFERS 個の配列エントリの一覧を返します。詳細については、DXVA 1.0 仕様のセクション 3.4「Buffer Description List」を参照してください。対象の DXVA プロファイルで特定のバッファータイプが使用されない場合、そのインデックスのエントリはすべての値が 0 になります。 |
戻り値
インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。
| 戻り値 | 説明 |
|---|---|
| 失敗しました。 | |
| 引数が無効です。 | |
| このメソッドはサポートされていません。 | |
| NULL ポインター引数です。 | |
| 成功しました。 |
解説(Remarks)
デコーダーは、ピン接続の処理中にこのメソッドを使用して圧縮バッファー情報を取得できます。ピンの接続後は、デコーダーは IAMVideoAccelerator::GetInternalCompBufferInfo を呼び出してこの情報を取得できます。
AMVACompBufferInfo 構造体には、IAMVideoAccelerator::GetBuffer メソッドに必要な情報が含まれています。
GetInternalCompBufferInfo メソッドは、DirectX Video Acceleration (DXVA) デコードに使用される圧縮バッファーに関する情報を取得します。
| pdwNumTypesCompBuffers | DWORD* | inout | 入力時には、pamvaCompBufferInfo 配列の要素数を指定します。
pamvaCompBufferInfo が NULL の場合、 出力時には、pamvaCompBufferInfo が NULL の場合、pdwNumTypesCompBuffers は確保すべき配列のサイズを受け取ります。それ以外の場合、pdwNumTypesCompBuffers は pamvaCompBufferInfo 配列に実際にコピーされた要素の数を受け取ります。 |
| pamvaCompBufferInfo | AMVACompBufferInfo* | outoptional | AMVACompBufferInfo 構造体の配列のアドレス、または NULL。値が非 NULL の場合、メソッドは AMVACompBufferInfo 構造体の一覧をこの配列にコピーします。各構造体は、ビデオアクセラレーターが使用する 1 種類の圧縮データバッファーに対応します。 このメソッドを呼び出す前に、配列のすべての要素を 0 に設定してください。 各配列インデックスは、dxva.h で定義されている DXVA サーフェスタイプのいずれかに対応します。ビデオアクセラレーターは、最大 DXVA_NUM_TYPES_COMP_BUFFERS 個の配列エントリの一覧を返します。詳細については、DXVA 1.0 仕様のセクション 3.4「Buffer Description List」を参照してください。対象の DXVA プロファイルで特定のバッファータイプが使用されない場合、そのインデックスのエントリはすべての値が 0 になります。 |
戻り値
インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。
| 戻り値 | 説明 |
|---|---|
| 失敗しました。 | |
| 引数が無効です。 | |
| このメソッドはサポートされていません。 | |
| NULL ポインター引数です。 | |
| 成功しました。 | |
| デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。 | |
| デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。 |
解説(Remarks)
AMVACompBufferInfo 構造体には、IAMVideoAccelerator::GetBuffer メソッドに必要な情報が含まれています。
BeginFrame メソッドは、デコード済みピクチャを生成するための処理を開始します。
| amvaBeginFrameInfo | AMVABeginFrameInfo* | in | フレームの処理を開始するために必要な情報を含む AMVABeginFrameInfo 構造体へのポインター。 |
戻り値
インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。
| 戻り値 | 説明 |
|---|---|
| 失敗しました。 | |
| 引数が無効です。 | |
| 非圧縮サーフェスがまだ使用可能になっていません。たとえば、表示のために読み取り中です。 | |
| NULL ポインター引数です。 | |
| 成功しました。 | |
| デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。 | |
| デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。 |
解説(Remarks)
フィルターのピンが接続されていない場合、メソッドは VFW_E_NOT_CONNECTED を返します。
このメソッドは、利用可能なフレームバッファーがない場合にブロックすることがあります。
BeginFrame を呼び出すたびに、デコーダーは対応する IAMVideoAccelerator::EndFrame の呼び出しを行う必要があります。
EndFrame メソッドは、フレームの処理を終了します。
| pEndFrameInfo | AMVAEndFrameInfo* | in | AMVAEndFrameInfo 構造体へのポインター。 |
戻り値
インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。
| 戻り値 | 説明 |
|---|---|
| 失敗しました。 | |
| 引数が無効です。 | |
| このメソッドはサポートされていません。 | |
| NULL ポインター引数です。 | |
| 成功しました。 | |
| デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。 | |
| デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。 |
解説(Remarks)
フィルターのピンが接続されていない場合、メソッドは VFW_E_NOT_CONNECTED を返します。
このメソッドの詳細については、IAMVideoAccelerator::BeginFrame の解説を参照してください。
GetBuffer メソッドは、DirectX Video Acceleration (DXVA) デコード用に確保された圧縮または非圧縮サーフェスへのポインターを取得します。
| dwTypeIndex | DWORD | in | サーフェスの種類を指定します。
|
| dwBufferIndex | DWORD | in | 指定したサーフェスタイプ用に確保されたサーフェスプール内での、サーフェスの 0 から始まるインデックス。
|
| bReadOnly | BOOL | in | デコーダーがサーフェスメモリに書き込むかどうかを指定します。読み取り専用アクセスの場合は TRUE を指定します。これにより、現在使用中の参照フレームへのアクセスが高速になる場合があります。 |
| ppBuffer | void** | out | サーフェスメモリへのポインターを受け取ります。バッファーのサイズ (バイト単位) を取得するには、IAMVideoAccelerator::GetInternalCompBufferInfo メソッドを呼び出します。サイズは、dwTypeIndex に対応する AMVACompBufferInfo 構造体の dwBytesToAllocate メンバーで示されます。 |
| lpStride | INT* | out | サーフェスのストライド (バイト単位) を受け取ります。 |
戻り値
インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。
| 戻り値 | 説明 |
|---|---|
| 失敗しました。 | |
| 引数が無効です。 | |
| このメソッドはサポートされていません。 | |
| NULL ポインター引数です。 | |
| 成功しました。 | |
| デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。 | |
| デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。 |
解説(Remarks)
フィルターのピンが接続されていない場合、メソッドは VFW_E_NOT_CONNECTED を返します。
このメソッドは、単一のバッファーをロックしてアクセスを取得します。バッファーはタイプと、そのタイプ内のインデックスによって識別されます。IAMVideoAccelerator::GetInternalCompBufferInfo メソッドは、pdwNumTypesCompBuffers パラメーターにサーフェスタイプの数を返します。この数が dwTypeIndex の有効な範囲を定義します。各タイプについて、AMVACompBufferInfo 構造体の dwNumCompBuffers メンバーがバッファーの数を示し、これが dwBufferIndex の有効な範囲を定義します。
バッファーを解放するには、IAMVideoAccelerator::ReleaseBuffer を呼び出します。
すべての圧縮バッファーが解放されるまで、呼び出しスレッドが Win16 ロックまたは DirectDraw ロックを保持する可能性があります。
ReleaseBuffer メソッドは、IAMVideoAccelerator::GetBuffer の以前の呼び出しによってロックされたバッファーを解放します。
| dwTypeIndex | DWORD | in | バッファーのサーフェスタイプ。GetBuffer メソッドの dwTypeIndex パラメーターに渡したものと同じ値を使用します。 |
| dwBufferIndex | DWORD | in | バッファーの 0 から始まるインデックス。GetBuffer メソッドの dwBufferIndex パラメーターに渡したものと同じ値を使用します。 |
戻り値
インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。
| 戻り値 | 説明 |
|---|---|
| 失敗しました。 | |
| 引数が無効です。 | |
| このメソッドはサポートされていません。 | |
| NULL ポインター引数です。 | |
| 成功しました。 | |
| デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。 | |
| デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。 |
解説(Remarks)
フィルターのピンが接続されていない場合、メソッドは VFW_E_NOT_CONNECTED を返します。
このメソッドは、単一のバッファーのロックを解除します。ビデオデコーダーは、そのバッファーを使用したすべての IAMVideoAccelerator::Execute 呼び出しを行った後、そのバッファーが不要になった時点でこのメソッドを呼び出します。
GetBuffer から取得したバッファーポインターは、この呼び出し以降は無効になります。
Execute メソッドは、DirectX Video Acceleration (DXVA) のデコード操作を実行します。
| dwFunction | DWORD | in | 1 つ以上の DXVA 関数番号を含みます。 |
| lpPrivateInputData | void* | in | デコード操作の入力データへのポインター。このデータの意味は、サーフェスタイプと関数番号によって異なります。詳細については、DXVA 1.0 仕様を参照してください。 |
| cbPrivateInputData | DWORD | in | 入力データのサイズ (バイト単位)。 |
| lpPrivateOutputDat | void* | in | ビデオアクセラレーターが出力データを書き込むバッファーへのポインター。 |
| cbPrivateOutputData | DWORD | in | lpPrivateOutputData バッファーのサイズ (バイト単位)。 |
| dwNumBuffers | DWORD | in | pamvaBufferInfo 配列の要素数。 |
| pamvaBufferInfo | AMVABUFFERINFO* | in | AMVABUFFERINFO 構造体の配列へのポインター。 |
戻り値
インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。
| 戻り値 | 説明 |
|---|---|
| 失敗しました。 | |
| 引数が無効です。 | |
| このメソッドはサポートされていません。 | |
| NULL ポインター引数です。 | |
| 成功しました。 | |
| デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。 | |
| デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。 |
解説(Remarks)
フィルターのピンが接続されていない場合、メソッドは VFW_E_NOT_CONNECTED を返します。
関連するバッファーリストは、関数番号 (既定値は 0) と、伸長操作を記述するために必要なプライベートデータとともに渡されます。たとえば、伸長された参照フレーム情報はバッファーリストで渡されます。バッファーリストの順序は重要であり、実行される個々の伸長操作によって定義されます。
プライベートデータは、ドライバーとの間で受け渡しできます。
QueryRenderStatus メソッドは、DirectX Video Acceleration (DXVA) デコードサーフェスの読み取り/書き込みステータスを照会します。
| dwTypeIndex | DWORD | in | 照会するサーフェスの種類を指定します。
| ||||||
| dwBufferIndex | DWORD | in | 指定したサーフェスタイプ用に確保されたサーフェスプール内での、サーフェスの 0 から始まるインデックス。 | ||||||
| dwFlags | DWORD | in | 実行する照会の種類を指定します。
|
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 操作はまだ進行中です。 | |
| 操作は完了しています。 | |
| デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。 | |
| デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。 |
解説(Remarks)
フィルターのピンが接続されていない場合、メソッドは VFW_E_NOT_CONNECTED を返します。
DisplayFrame メソッドは、ビデオレンダラーにデコード済みフレームを表示させます。
| dwFlipToIndex | DWORD | in | 表示するデコード済みフレームのサーフェスインデックス。 |
| pMediaSample | IMediaSample* | in | メディアサンプルの IMediaSample インターフェースへのポインター。このサンプルはビデオフレームを含みませんが、タイムスタンプと任意のサンプルフラグを指定するために使用されます。(サンプルフラグの詳細については、AM_SAMPLE2_PROPERTIES を参照してください。) |
戻り値
インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。
| 戻り値 | 説明 |
|---|---|
| 失敗しました。 | |
| 引数が無効です。 | |
| このメソッドはサポートされていません。 | |
| NULL ポインター引数です。 | |
| 成功しました。 | |
| デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。 | |
| デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。 |
解説(Remarks)
フィルターのピンが接続されていない場合、メソッドは VFW_E_NOT_CONNECTED を返します。
このメソッドは、ビデオレンダラーがビデオフレームの表示を完了するまでブロックします。
ビデオデコーダーは、dwFlipToIndex で指定されたインデックスのサーフェスに対して IAMVideoAccelerator::EndFrame を呼び出した後に、このメソッドを呼び出します。このインデックス値は、以前の IAMVideoAccelerator::BeginFrame 呼び出しにおける AMVABeginFrameInfo.dwDestSurfaceIndex の値と一致している必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAMVideoAccelerator "{256A6A22-FBAD-11D1-82BF-00A0C9696C8F}" #usecom global IAMVideoAccelerator IID_IAMVideoAccelerator "{}" #comfunc global IAMVideoAccelerator_GetVideoAcceleratorGUIDs 3 var,var #comfunc global IAMVideoAccelerator_GetUncompFormatsSupported 4 var,var,var #comfunc global IAMVideoAccelerator_GetInternalMemInfo 5 var,var,var #comfunc global IAMVideoAccelerator_GetCompBufferInfo 6 var,var,var,var #comfunc global IAMVideoAccelerator_GetInternalCompBufferInfo 7 var,var #comfunc global IAMVideoAccelerator_BeginFrame 8 var #comfunc global IAMVideoAccelerator_EndFrame 9 var #comfunc global IAMVideoAccelerator_GetBuffer 10 int,int,int,sptr,var #comfunc global IAMVideoAccelerator_ReleaseBuffer 11 int,int #comfunc global IAMVideoAccelerator_Execute 12 int,sptr,int,sptr,int,int,var #comfunc global IAMVideoAccelerator_QueryRenderStatus 13 int,int,int #comfunc global IAMVideoAccelerator_DisplayFrame 14 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IAMVideoAccelerator "{256A6A22-FBAD-11D1-82BF-00A0C9696C8F}" #usecom global IAMVideoAccelerator IID_IAMVideoAccelerator "{}" #comfunc global IAMVideoAccelerator_GetVideoAcceleratorGUIDs 3 sptr,sptr #comfunc global IAMVideoAccelerator_GetUncompFormatsSupported 4 sptr,sptr,sptr #comfunc global IAMVideoAccelerator_GetInternalMemInfo 5 sptr,sptr,sptr #comfunc global IAMVideoAccelerator_GetCompBufferInfo 6 sptr,sptr,sptr,sptr #comfunc global IAMVideoAccelerator_GetInternalCompBufferInfo 7 sptr,sptr #comfunc global IAMVideoAccelerator_BeginFrame 8 sptr #comfunc global IAMVideoAccelerator_EndFrame 9 sptr #comfunc global IAMVideoAccelerator_GetBuffer 10 int,int,int,sptr,sptr #comfunc global IAMVideoAccelerator_ReleaseBuffer 11 int,int #comfunc global IAMVideoAccelerator_Execute 12 int,sptr,int,sptr,int,int,sptr #comfunc global IAMVideoAccelerator_QueryRenderStatus 13 int,int,int #comfunc global IAMVideoAccelerator_DisplayFrame 14 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。