/* * Copyright (C) 2022 Zebediah Figura 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"; interface IMediaSample; cpp_quote("#if 0") typedef struct _DDSCAPS2 { DWORD dwCaps; DWORD dwCaps2; DWORD dwCaps3; union { DWORD dwCaps4; DWORD dwVolumeDepth; } DUMMYUNIONNAME1; } DDSCAPS2; typedef struct _DDPIXELFORMAT { DWORD dwSize; DWORD dwFlags; DWORD dwFourCC; union { DWORD dwRGBBitCount; DWORD dwYUVBitCount; DWORD dwZBufferBitDepth; DWORD dwAlphaBitDepth; DWORD dwLuminanceBitCount; DWORD dwBumpBitCount; DWORD dwPrivateFormatBitCount; } DUMMYUNIONNAME1; union { DWORD dwRBitMask; DWORD dwYBitMask; DWORD dwStencilBitDepth; DWORD dwLuminanceBitMask; DWORD dwBumpDuBitMask; DWORD dwOperations; } DUMMYUNIONNAME2; union { DWORD dwGBitMask; DWORD dwUBitMask; DWORD dwZBitMask; DWORD dwBumpDvBitMask; struct { WORD wFlipMSTypes; WORD wBltMSTypes; } MultiSampleCaps; } DUMMYUNIONNAME3; union { DWORD dwBBitMask; DWORD dwVBitMask; DWORD dwStencilBitMask; DWORD dwBumpLuminanceBitMask; } DUMMYUNIONNAME4; union { DWORD dwRGBAlphaBitMask; DWORD dwYUVAlphaBitMask; DWORD dwLuminanceAlphaBitMask; DWORD dwRGBZBitMask; DWORD dwYUVZBitMask; } DUMMYUNIONNAME5; } DDPIXELFORMAT; import "amva.h"; cpp_quote("#endif") [ local, uuid(256a6a22-fbad-11d1-82bf-00a0c9696c8f), ] interface IAMVideoAccelerator : IUnknown { HRESULT GetVideoAcceleratorGUIDs(DWORD *count, GUID *accelerators); HRESULT GetUncompFormatsSupported(const GUID *accelerator, DWORD *count, DDPIXELFORMAT *formats); HRESULT GetInternalMemInfo(const GUID *accelerator, const AMVAUncompDataInfo *format_info, AMVAInternalMemInfo *mem_info); HRESULT GetCompBufferInfo(const GUID *accelerator, const AMVAUncompDataInfo *uncompressed_info, DWORD *compressed_info_count, AMVACompBufferInfo *compressed_infos); HRESULT GetInternalCompBufferInfo(DWORD *count, AMVACompBufferInfo *infos); HRESULT BeginFrame(const AMVABeginFrameInfo *info); HRESULT EndFrame(const AMVAEndFrameInfo *info); HRESULT GetBuffer(DWORD type_index, DWORD buffer_index, BOOL read_only, void **buffer, LONG *stride); HRESULT ReleaseBuffer(DWORD type_index, DWORD buffer_index); HRESULT Execute(DWORD function, void *in_data, DWORD in_size, void *out_data, DWORD out_size, DWORD buffer_count, const AMVABUFFERINFO *buffers); HRESULT QueryRenderStatus(DWORD type_index, DWORD buffer_index, DWORD flags); HRESULT DisplayFrame(DWORD index, IMediaSample *sample); } [ local, uuid(256a6a21-fbad-11d1-82bf-00a0c9696c8f), ] interface IAMVideoAcceleratorNotify : IUnknown { HRESULT GetUncompSurfacesInfo(const GUID *accelerator, AMVAUncompBufferInfo *info); HRESULT SetUncompSurfacesInfo(DWORD allocated_count); HRESULT GetCreateVideoAcceleratorData(const GUID *accelerator, DWORD *size, void **data); }