0

WinRT IBasicVideoEffect で作成したビデオを Win2d CanvasControl に描画しようとしています。

Win2d ビデオ効果の例は、IBasicVideoEffect インターフェイスを WinRT コンポーネントとして実装する上で構築されています。メソッド SetEncodingProperties (IBasicVideoEffect) から作成されたビットマップと CanvasControl() から作成されたビットマップには異なるデバイスがあり、相互に描画できません。

public void ProcessFrame(ProcessVideoFrameContext context)
    {
        _mediaElementCanvasRenderTarget = CanvasRenderTarget.CreateFromDirect3D11Surface(canvasDevice, context.OutputFrame.Direct3DSurface);
    }

public void SetEncodingProperties(VideoEncodingProperties encodingProperties, IDirect3DDevice device)
    {
        canvasDevice = CanvasDevice.CreateFromDirect3D11Device(device);
    }

ここでは、CanvasControl で描画した後、_mediaElementCanvasRenderTarget を取得しています。

private void canvasControl_Draw(CanvasControl sender, CanvasDrawEventArgs args)
    {
        args.DrawingSession.DrawImage(_mediaElementCanvasRenderTarget);
    }

デバイスが異なるため、エラーが発生します。また、1 つのデバイスを両方の UIElements に設定しようとしましたが、役に立ちませんでした。

この状況にどう対処するか?

4

1 に答える 1