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
21 typedef float MP_DATA
;
22 typedef DWORD MP_CAPS
;
23 typedef DWORD MP_FLAGS
;
24 typedef DWORD MP_TIMEDATA
;
35 typedef struct _MP_PARAMINFO
41 MP_DATA mpdNeutralValue
;
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,
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
;
66 } MP_ENVELOPE_SEGMENT
;
70 uuid(6D6CBB60
-A223
-44AA
-842F
-A2F06750BE6D
),
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
);
85 uuid(6d6cbb61
-a223
-44aa
-842f
-a2f06750be6e
),
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
);