/* * Copyright 2020 Nikolay Sivov for CodeWeavers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ import "unknwn.idl"; import "evr.idl"; import "dxva2api.idl"; typedef struct MFVideoAlphaBitmapParams { DWORD dwFlags; COLORREF clrSrcKey; RECT rcSrc; MFVideoNormalizedRect nrcDest; FLOAT fAlpha; DWORD dwFilterMode; } MFVideoAlphaBitmapParams; typedef struct MFVideoAlphaBitmap { BOOL GetBitmapFromDC; union { HDC hdc; IDirect3DSurface9 *pDDS; } bitmap; MFVideoAlphaBitmapParams params; } MFVideoAlphaBitmap; typedef enum { MFVideoAlphaBitmap_EntireDDS = 0x1, MFVideoAlphaBitmap_SrcColorKey = 0x2, MFVideoAlphaBitmap_SrcRect = 0x4, MFVideoAlphaBitmap_DestRect = 0x8, MFVideoAlphaBitmap_FilterMode = 0x10, MFVideoAlphaBitmap_Alpha = 0x20, MFVideoAlphaBitmap_BitMask = 0x3f } MFVideoAlphaBitmapFlags; [ object, uuid(814c7b20-0fdb-4eec-af8f-f957c8f69edc), local ] interface IMFVideoMixerBitmap : IUnknown { HRESULT SetAlphaBitmap( [in] const MFVideoAlphaBitmap *bitmap ); HRESULT ClearAlphaBitmap(void); HRESULT UpdateAlphaBitmapParameters( [in] const MFVideoAlphaBitmapParams *params ); HRESULT GetAlphaBitmapParameters( [out] MFVideoAlphaBitmapParams *params ); } [ object, uuid(6ab0000c-fece-4d1f-a2ac-a9573530656e), pointer_default(unique) ] interface IMFVideoProcessor : IUnknown { HRESULT GetAvailableVideoProcessorModes( [out] UINT *count, [out, size_is(*count)] GUID **modes ); HRESULT GetVideoProcessorCaps( [in] GUID *mode, [out] DXVA2_VideoProcessorCaps *caps ); HRESULT GetVideoProcessorMode( [out] GUID *mode ); HRESULT SetVideoProcessorMode( [in] GUID *mode ); HRESULT GetProcAmpRange( [in] DWORD prop, [out] DXVA2_ValueRange *range ); HRESULT GetProcAmpValues( [in] DWORD flags, [out] DXVA2_ProcAmpValues *values ); HRESULT SetProcAmpValues( [in] DWORD flags, [in] DXVA2_ProcAmpValues *values ); HRESULT GetFilteringRange( [in] DWORD prop, [out] DXVA2_ValueRange *range ); HRESULT GetFilteringValue( [in] DWORD prop, [out] DXVA2_Fixed32 *value ); HRESULT SetFilteringValue( [in] DWORD prop, [in] DXVA2_Fixed32 *value ); HRESULT GetBackgroundColor( [out] COLORREF *color ); HRESULT SetBackgroundColor( [in] COLORREF color ); }