Как использовать MMFCreateDXGISurfaceBuffer в MediaFundation.Net?

Я искал на веб-сайте Microsoft информацию о MMFCreateDXGISurfaceBuffer, но все это было написано на C++. Я пытаюсь использовать MMFCreateDXGISurfaceBuffer в С#, но не могу найти ссылку на то, как правильно использовать этот метод.

в С++ ниже приведен код.

MFCreateDXGISurfaceBuffer(__uuidof(ID3D11Texture2D), pAcquiredDesktopImage, 0, FALSE, &pMediaBuffer)

Я попытался преобразовать приведенный выше код в С#, и ниже приведен мой код, но он кажется неправильным, потому что я получаю E_NOINTERFACE.

MFExtern.MFCreateDXGISurfaceBuffer(typeof(SharpDX.Direct3D11.Texture2D).GUID, texture, 0, false, out buffer);

Я использую SharpDX DXGI и MediaFoundation.Net в своем приложении. я не уверен, если

typeof(SharpDX.Direct3D11.Texture2D).GUID

эквивалентно

__uuidof(ID3D11Texture2D)

Ниже приведена оболочка для MMFCreateDXGISurfaceBuffer.

 [DllImport("mfplat.dll", ExactSpelling = true), SuppressUnmanagedCodeSecurity]
    public static extern HResult MFCreateDXGISurfaceBuffer(
        [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
        [MarshalAs(UnmanagedType.Interface)] object punkSurface,
        int uSubresourceIndex,
        [MarshalAs(UnmanagedType.Bool)] bool fBottomUpWhenLinear,
        out IMFMediaBuffer ppBuffer
    );

Может ли кто-нибудь научить меня, как использовать MFCreateDXGISurfaceBuffer в MediaFOundation.Net. Спасибо

Изменить: я использовал MFTrace, и ниже приведен журнал, в котором это не удалось

1716,2494 03:19:20.59013 CMFTransformDetours::SetInputType @02E96B4C Failed MT: MF_MT_FRAME_SIZE=5866925327104 (1366,768);MF_MT_MAJOR_TYPE=MEDIATYPE_Video;MF_MT_FRAME_RATE=257698037761 (60,1);MF_MT_PIXEL_ASPECT_RATIO=4294967297 (1,1);MF_MT_INTERLACE_MODE=2;MF_MT_SUBTYPE=MFVideoFormat_RGB32

Я не уверен, правильно ли я устанавливаю тип ввода, так как я подаю раковину с поверхностью direct3d.


person kripto    schedule 26.05.2017    source источник
comment
Код в этой теме — это то, что я пытаюсь преобразовать в С#. Используя SharpDX и MediaFoundation.Net stackoverflow.com/questions/34857680/   -  person kripto    schedule 26.05.2017


Ответы (1)


person    schedule
comment
Спасибо Ozeanix за это. Теперь это работает. Но я столкнулся с другой проблемой, и я объясню это в этой теме. stackoverflow.com/questions/44402898/ - person kripto; 07.06.2017