開発者テクノロジ | C++
C プログラミング言語の拡張機能として作成された高レベルの汎用プログラミング言語。低レベルのメモリ操作機能に加えて、オブジェクト指向、汎用、関数型の機能を備えています。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
お世話になっております。
IMFMediaEngine::TransferVideoFrame method
において、第一引数に何を与えれば良いか分かりません。
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」としか書いてないので、
根本的に勘違いしているかもしれません。
ご教授願います。
よろしくお願いします。