メディア ソースの構成
Source Resolver を使用してメディア ソースを作成する場合は、構成プロパティを含むプロパティ ストアを指定できます。 これらのプロパティは、メディア ソースの初期化に使用されます。 サポートされるプロパティのセットは、メディア ソースの実装によって異なります。 すべてのメディア ソースで構成プロパティが定義されているわけではありません。
次の表に、Media Foundation で提供されるメディア ソースの構成プロパティを示します。 サードパーティのメディア ソースは、独自のカスタム プロパティを定義できます。
メディア ソース | プロパティ |
---|---|
ネットワーク ソース | ネットワーク ソース機能に関するページを参照してください。 |
ASF メディア ソース |
ソースを構成するには、次の手順を実行します。
- PSCreateMemoryPropertyStore を呼び出して、新しいプロパティ ストアを作成します。 この関数は 、IPropertyStore ポインターを返します。
- IPropertyStore::SetValue を呼び出して、1 つ以上の構成プロパティを設定します。
- IMFSourceResolver::CreateObjectFromURL などのソース リゾルバーの作成関数のいずれかを呼び出し、pProps パラメーターに IPropertyStore ポインターを渡します。
// Creates a media source from a URL.
HRESULT CreateMediaSource(
PCWSTR pszURL,
IPropertyStore *pConfig, // Optional, can be NULL
IMFMediaSource **ppSource
)
{
IMFSourceResolver* pSourceResolver = NULL;
IUnknown* pSource = NULL;
// Create the source resolver.
HRESULT hr = MFCreateSourceResolver(&pSourceResolver);
// Use the source resolver to create the media source.
if (SUCCEEDED(hr))
{
MF_OBJECT_TYPE ObjectType;
DbgLog(L"CreateObjectFromURL");
hr = pSourceResolver->CreateObjectFromURL(
pszURL,
MF_RESOLUTION_MEDIASOURCE, // Create a media source.
pConfig, // Configuration properties.
&ObjectType, // Receives the object type.
&pSource
);
DbgLog(L"CreateObjectFromURL - FINISHED");
}
if (SUCCEEDED(hr))
{
hr = pSource->QueryInterface(IID_PPV_ARGS(ppSource));
}
SafeRelease(&pSourceResolver);
SafeRelease(&pSource);
return hr;
}
ソース リゾルバーは、 IPropertyStore ポインターを、ソースを作成するスキーム ハンドラーまたはバイト ストリーム ハンドラーに直接渡します。 ソース リゾルバーは、プロパティの検証を試みない。
一般に、これらのプロパティは詳細設定に使用されます。 プロパティ ストアを指定しない場合でも、メディア ソースは既定の設定で正しく機能するはずです。
関連トピック