IMFMediaEngine::TransferVideoFrame method

KrK 0 評価のポイント
2025-12-14T02:35:25.3633333+00:00

お世話になっております。

IMFMediaEngine::TransferVideoFrame method

https://learn.microsoft.com/en-us/windows/win32/api/mfmediaengine/nf-mfmediaengine-imfmediaengine-transfervideoframe

において、第一引数に何を与えれば良いか分かりません。

IWICBitmap* pBitmap = NULL;
IWICImagingFactory* pFactory = NULL;
HRESULT hr = CoCreateInstance(CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_IWICImagingFactory, (LPVOID*)&pFactory);
if (SUCCEEDED(hr))
{
	hr = pFactory->CreateBitmap(width, height, GUID_WICPixelFormat24bppBGR, WICBitmapCacheOnDemand, &pBitmap);
}
if (SUCCEEDED(hr))
{
    LONGLONG pts = 0;
    hr = m_pMediaEngineEx->OnVideoStreamTick(&pts);
}
if (SUCCEEDED(hr))
{
	MFVideoNormalizedRect recSrc = { 0, 0, 1, 1 };
	RECT recDst = { 0, 0, width, height };
    MFARGB argb = { 0 };
    hr = m_pMediaEngineEx->TransferVideoFrame(pBitmap, &recSrc, &recDst, &argb);
}

ここでFAILEDします。

0x80070057 (E_INVALIDARG One or more arguments are invalid.)

GUID_WICPixelFormat24bppBGRを

GUID_WICPixelFormat32bppBGRAに変えると以下に変わります。

0x80004002(E_NOINTERFACE No such interface supported.)

他にもGUIDを色々変えてみたり、

hr = m_pMediaEngineEx->TransferVideoFrame(pBitmap, NULL, &recDst, NULL);

にしたりしましたが、SUCCEEDしません。

上記ページにて「WIC surface」としか書いてないので、

根本的に勘違いしているかもしれません。

ご教授願います。

よろしくお願いします。

開発者テクノロジ | C++
開発者テクノロジ | C++
C プログラミング言語の拡張機能として作成された高レベルの汎用プログラミング言語。低レベルのメモリ操作機能に加えて、オブジェクト指向、汎用、関数型の機能を備えています。
0 件のコメント コメントはありません
{count} 件の投票

お客様の回答

質問作成者は回答に "承認済み"、モデレーターは "おすすめ" とマークできます。これにより、ユーザーは作成者の問題が回答によって解決したことを把握できます。