次の方法で共有


IAMStreamConfig::GetStreamCaps メソッド (strmif.h)

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

GetStreamCaps メソッドは、一連の書式機能を取得します。

構文

HRESULT GetStreamCaps(
  [in]  int           iIndex,
  [out] AM_MEDIA_TYPE **ppmt,
  [out] BYTE          *pSCC
);

パラメーター

[in] iIndex

0 からインデックスを付けて取得する書式機能を指定します。 ピンでサポートされる機能の数を確認するには、 IAMStreamConfig::GetNumberOfCapabilities メソッドを呼び出します。

[out] ppmt

AM_MEDIA_TYPE構造体へのポインターのアドレス。 メソッドは構造体を割り当て、メディアの種類で埋めます。

[out] pSCC

呼び出し元によって割り当てられたバイト配列へのポインター。 ビデオの場合は、 VIDEO_STREAM_CONFIG_CAPS 構造を使用します (「解説」を参照)。 オーディオの場合は、 AUDIO_STREAM_CONFIG_CAPS 構造を使用します。 配列の必要なサイズを確認するには、 GetNumberOfCapabilities メソッドを呼び出します。 サイズは piSize パラメーターで返されます。

戻り値

HRESULT 値を返します。 使用可能な値は次のとおりです。

リターン コード 説明
S_FALSE
指定されたインデックスが高すぎます。
S_OK
正常終了しました。
E_INVALIDARG
インデックスが無効です。
E_OUTOFMEMORY
メモリ不足です。
E_POINTER
NULL ポインター値。
VFW_E_NOT_CONNECTED
入力ピンが接続されていません。

注釈

このメソッドは、次の 2 つの情報を返します。

  • pmt パラメーターは、サポートされている 1 つの出力形式を表す、入力されたAM_MEDIA_TYPE構造体を受け取ります。
  • pSCC パラメーターは、追加の書式情報を含む構造体を受け取ります。 ビデオの場合、 pSCCVIDEO_STREAM_CONFIG_CAPS 構造を受け取ります。 オーディオの場合は、 AUDIO_STREAM_CONFIG_CAPS 構造を受け取ります。
メモ ビデオ デバイスを構成するための VIDEO_STREAM_CONFIG_CAPS 構造の使用は非推奨です。 呼び出し元はバッファーを割り当てる必要がありますが、メソッドが返された後は内容を無視する必要があります。 キャプチャ デバイスは、 pmt パラメーターを介してサポートされている形式を返します。
 
この形式を使用するように出力ピンを構成するには、 IAMStreamConfig::SetFormat メソッドを呼び出し、 pmt の値を渡します。

SetFormat を呼び出す前に、pSCC の情報を使用して pmtAM_MEDIA_TYPE構造体を変更できます。 たとえば、オーディオ ピンは、 pmt パラメーターで 44 kHz、16 ビット ステレオの既定のメディアの種類を返す場合があります。 AUDIO_STREAM_CONFIG_CAPS構造体で返される値に基づいて、SetFormat を呼び出す前に、この形式を 8 ビット mono に変更できます。

メソッドは、pmt パラメーターで返されるAM_MEDIA_TYPE構造体にメモリを割り当てます。 呼び出し元は、フォーマット ブロックを含むメモリを解放する必要があります。 基本クラス ライブラリで DeleteMediaType ヘルパー関数を使用できます。 呼び出し元は 、pSCC パラメーターのメモリを割り当てる必要があります。

一部の圧縮フィルターでは、フィルターの入力ピンが接続されていない場合、このメソッドは失敗します。

フィルター開発者: このメソッドの実装の詳細については、「 キャプチャ形式と圧縮形式の公開」を参照してください。

次の例では、ビデオ出力ピンでサポートされている最初の形式 (インデックス 0) を取得し、ピンにこの形式を設定します。

C++
int iCount,iSize;BYTE *pSCC = NULL;*pmt をAM_MEDIA_TYPEします。

hr = pConfig-GetNumberOfCapabilities>(&iCount, &iSize);

pSCC = 新しい BYTE[iSize];if (pSCC == NULL) { // TODO: メモリ不足エラー。 }

// Get the first format. hr = pConfig->GetStreamCaps(0, &pmt, pSCC)); if (hr == S_OK) { // TODO: Examine the format. If it's not suitable for some // reason, call GetStreamCaps with the next index value (up // to iCount). Otherwise, set the format: hr = pConfig->SetFormat(pmt); if (FAILED(hr)) { // TODO: Error handling. } DeleteMediaType(pmt); } delete [] pSCC;

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー strmif.h (Dshow.h を含む)
Library Strmiids.lib

こちらもご覧ください

エラーコードと成功コード

IAMStreamConfig インターフェイス