Source Resolver

メソッド 処理 データ元
CreateObjectFromURL() 同期 URL
CreateObjectFromByteStream() 同期 バイトストリーム
BeginCreateObjectFromURL() 非同期 URL
BeginCreateObjectFromByteStream() 非同期 バイトストリーム
Using the Source Resolver - Win32 apps | Microsoft Learn

CreateObjectFromURL()

URLから、Media SourceまたはByte Streamを作成できます。

HRESULT CreateObjectFromURL(
  LPCWSTR        pwszURL,      // ソースのURL
  DWORD          dwFlags,      // Source Resolver Flagsの値
  IPropertyStore *pProps,      // プロパティ ストア
  MF_OBJECT_TYPE *pObjectType, // 作成されたオブジェクトの型を受け取るためのポインタ
  IUnknown       **ppObject    // オブジェクトのIUnknownインターフェイスを受け取るためのポインタ
);
IMFSourceResolver::CreateObjectFromURL | Microsoft Learn

このメソッドは下表のような値を返します。

識別子 意味
0x0 S_OK  
0xC00D36F1 MF_E_SOURCERESOLVER_MUTUALLY_EXCLUSIVE_FLAGS Mutually exclusive flags have been specified to source resolver. This flag combination is invalid.
0xC00D36C3 MF_E_UNSUPPORTED_SCHEME 与えられたURLのスキームはサポートされない
0xC00D36C4 MF_E_UNSUPPORTED_BYTESTREAM_TYPE 与えられたURLのバイトストリーム型はサポートされない
(ファイルの拡張子がファイル形式と一致していない場合にもこのエラーとなる。その場合にはdwFlagsにMF_RESOLUTION_CONTENT_DOES_NOT_HAVE_TO_MATCH_EXTENSION_OR_MIME_TYPEを指定することで解決できる)
Mferror.h

このメソッドを用いてMedia Sourceのインスタンスを取得するには、dwFlagsにMF_RESOLUTION_MEDIASOURCEを指定して、次のようにします。

IMFSourceResolver *pSourceResolver = NULL;
HRESULT hr = MFCreateSourceResolver(&pSourceResolver);

PCWSTR pwszURL = "sample.wmv";
MF_OBJECT_TYPE objectType = MF_OBJECT_INVALID;
IUnknown *pMediaSource = NULL;

hr = pSourceResolver->CreateObjectFromURL(
    pwszURL,
    MF_RESOLUTION_MEDIASOURCE,
    NULL,
    &objectType,
    &pMediaSource
);
if (FAILED(hr)) goto done;

IMFMediaSource **ppMediaSource;
hr = pMediaSource->QueryInterface(IID_PPV_ARGS(ppMediaSource));

CreateObjectFromByteStream()

HRESULT CreateObjectFromByteStream(
  IMFByteStream  *pByteStream, // バイトストリームへのポインタ
  LPCWSTR        pwszURL,      // バイトストリームのURL。NULLでも可
  DWORD          dwFlags,
  IPropertyStore *pProps,
  MF_OBJECT_TYPE *pObjectType,
  IUnknown       **ppObject
);
IMFSourceResolver::CreateObjectFromByteStream (mfidl.h) | Microsoft Learn
Microsoft Learnから検索