| /* | 
 |  * 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 | 
 |     ); | 
 | } |