include: Remove DECLSPEC_HIDDEN from GUID definitions.
[wine.git] / include / medparam.idl
blobf32dd49827d41ba6188d9f36a46ffc1f54b5c9ed
1 /*
2 * Copyright 2022 Zhiyi Zhang for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 import "strmif.idl";
21 typedef float MP_DATA;
22 typedef DWORD MP_CAPS;
23 typedef DWORD MP_FLAGS;
24 typedef DWORD MP_TIMEDATA;
26 typedef enum _MP_Type
28 MPT_INT,
29 MPT_FLOAT,
30 MPT_BOOL,
31 MPT_ENUM,
32 MPT_MAX,
33 } MP_TYPE;
35 typedef struct _MP_PARAMINFO
37 MP_TYPE mpType;
38 MP_CAPS mopCaps;
39 MP_DATA mpdMinValue;
40 MP_DATA mpdMaxValue;
41 MP_DATA mpdNeutralValue;
42 WCHAR szUnitText[32];
43 WCHAR szLabel[32];
44 } MP_PARAMINFO;
46 typedef enum _MP_CURVE_TYPE {
47 MP_CURVE_JUMP = 0x0001,
48 MP_CURVE_LINEAR = 0x0002,
49 MP_CURVE_SQUARE = 0x0004,
50 MP_CURVE_INVSQUARE = 0x0008,
51 MP_CURVE_SINE = 0x0010,
52 } MP_CURVE_TYPE;
54 const MP_FLAGS MPF_ENVLP_STANDARD = 0x0000;
55 const MP_FLAGS MPF_ENVLP_BEGIN_CURRENTVAL = 0x0001;
56 const MP_FLAGS MPF_ENVLP_BEGIN_NEUTRALVAL = 0x0002;
58 typedef struct _MP_ENVELOPE_SEGMENT
60 REFERENCE_TIME rtStart;
61 REFERENCE_TIME rtEnd;
62 MP_DATA valStart;
63 MP_DATA valEnd;
64 MP_CURVE_TYPE iCurve;
65 MP_FLAGS flags;
66 } MP_ENVELOPE_SEGMENT;
69 object,
70 uuid(6D6CBB60-A223-44AA-842F-A2F06750BE6D),
71 version(1.0)
73 interface IMediaParamInfo : IUnknown
75 HRESULT GetParamCount([out] DWORD *count);
76 HRESULT GetParamInfo([in] DWORD index, [out] MP_PARAMINFO *info);
77 HRESULT GetParamText([in] DWORD index, [out] WCHAR **text);
78 HRESULT GetNumTimeFormats([out] DWORD *count);
79 HRESULT GetSupportedTimeFormat([in] DWORD index, [out] GUID *guid);
80 HRESULT GetCurrentTimeFormat([out] GUID *guid, [out] MP_TIMEDATA *time_data);
84 object,
85 uuid(6d6cbb61-a223-44aa-842f-a2f06750be6e),
86 version(1.0)
88 interface IMediaParams : IUnknown
90 HRESULT GetParam([in] DWORD index, [out] MP_DATA *data);
91 HRESULT SetParam([in] DWORD index, [in] MP_DATA data);
92 HRESULT AddEnvelope([in] DWORD index, [in] DWORD count, [in] MP_ENVELOPE_SEGMENT *segments);
93 HRESULT FlushEnvelope([in] DWORD index, [in] REFERENCE_TIME start, [in] REFERENCE_TIME end);
94 HRESULT SetTimeFormat([in] GUID guid, [in] MP_TIMEDATA time_data);