| /* This file is part of the KDE project | 
 |    Copyright (C) 2007 Shane King | 
 |  | 
 |    This program is free software; you can redistribute it and/or | 
 |    modify it under the terms of the GNU Library General Public | 
 |    License as published by the Free Software Foundation; either | 
 |    version 2 of the License, or (at your option) any later version. | 
 |  | 
 |    This program 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 | 
 |    Library General Public License for more details. | 
 |  | 
 |    You should have received a copy of the GNU Library General Public License | 
 |    along with this program; see the file COPYING.  If not, write to | 
 |    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 
 |    Boston, MA 02110-1301, USA. | 
 | */ | 
 |  | 
 | import "unknwn.idl"; | 
 | import "strmif.idl"; | 
 |  | 
 | typedef DWORD MP_TIMEDATA; | 
 | typedef DWORD MP_CAPS; | 
 | typedef DWORD MP_FLAGS; | 
 | typedef float MP_DATA; | 
 |  | 
 | typedef enum _MP_Type { | 
 |     MPT_INT, | 
 |     MPT_FLOAT, | 
 |     MPT_BOOL, | 
 |     MPT_ENUM, | 
 |     MPT_MAX, | 
 | } MP_TYPE; | 
 |  | 
 | typedef enum _MP_CURVE_TYPE { | 
 |     MP_CURVE_JUMP       = 0x0001,  | 
 |     MP_CURVE_LINEAR     = 0x0002,  | 
 |     MP_CURVE_SQUARE     = 0x0004,  | 
 |     MP_CURVE_INVSQUARE  = 0x0008,  | 
 |     MP_CURVE_SINE       = 0x0010,  | 
 | } MP_CURVE_TYPE; | 
 |  | 
 | typedef struct _MP_PARAMINFO { | 
 |     MP_TYPE    mpType; | 
 |     MP_CAPS    mopCaps; | 
 |     MP_DATA    mpdMinValue; | 
 |     MP_DATA    mpdMaxValue; | 
 |     MP_DATA    mpdNeutralValue; | 
 |     WCHAR      szUnitText[32]; | 
 |     WCHAR      szLabel[32];  | 
 | } MP_PARAMINFO; | 
 |  | 
 | typedef struct _MP_ENVELOPE_SEGMENT { | 
 |     REFERENCE_TIME   rtStart; | 
 |     REFERENCE_TIME   rtEnd; | 
 |     MP_DATA          valStart; | 
 |     MP_DATA          valEnd; | 
 |     MP_CURVE_TYPE    iCurve; | 
 |     MP_FLAGS         flags; | 
 | } MP_ENVELOPE_SEGMENT; | 
 |  | 
 | const MP_CAPS MP_CAPS_CURVE_JUMP        = MP_CURVE_JUMP; | 
 | const MP_CAPS MP_CAPS_CURVE_LINEAR      = MP_CURVE_LINEAR; | 
 | const MP_CAPS MP_CAPS_CURVE_SQUARE      = MP_CURVE_SQUARE; | 
 | const MP_CAPS MP_CAPS_CURVE_INVSQUARE   = MP_CURVE_INVSQUARE; | 
 | const MP_CAPS MP_CAPS_CURVE_SINE        = MP_CURVE_SINE; | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(6d6cbb61-a223-44aa-842f-a2f06750be6e) | 
 | ] | 
 | interface IMediaParams : IUnknown | 
 | { | 
 |     HRESULT AddEnvelope( | 
 |         DWORD dwParamIndex, | 
 |         DWORD cPoints, | 
 |         MP_ENVELOPE_SEGMENT *pEnvelope | 
 |     ); | 
 |  | 
 |     HRESULT FlushEnvelope( | 
 |         DWORD dwParamIndex, | 
 |         REFERENCE_TIME refTimeStart, | 
 |         REFERENCE_TIME refTimeEnd | 
 |     ); | 
 |  | 
 |     HRESULT GetParam( | 
 |         DWORD dwParamIndex, | 
 |         MP_DATA *pValue | 
 |     ); | 
 |  | 
 |     HRESULT SetParam( | 
 |         DWORD dwParamIndex, | 
 |         MP_DATA value | 
 |     ); | 
 |  | 
 |     HRESULT SetTimeFormat( | 
 |         GUID guidTimeFormat, | 
 |         MP_TIMEDATA mpTimeData | 
 |     ); | 
 | } | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(6d6cbb60-a223-44aa-842f-a2f06750be6d) | 
 | ] | 
 | interface IMediaParamInfo : IUnknown | 
 | { | 
 |     HRESULT GetParamCount( | 
 |         DWORD *pdwParams | 
 |     ); | 
 |      | 
 |     HRESULT GetParamInfo( | 
 |         DWORD dwParamIndex, | 
 |         MP_PARAMINFO *pInfo | 
 |     ); | 
 |      | 
 |     HRESULT GetParamText( | 
 |         DWORD dwParamIndex, | 
 |         WCHAR **ppwchText | 
 |     );    | 
 |     | 
 |     HRESULT GetNumTimeFormats( | 
 |         DWORD *pdwNumTimeFormats | 
 |     ); | 
 |   | 
 |     HRESULT GetSupportedTimeFormat( | 
 |         DWORD dwFormatIndex, | 
 |         GUID *pguidTimeFormat | 
 |     ); | 
 |      | 
 |     HRESULT GetCurrentTimeFormat( | 
 |         GUID *pguidTimeFormat, | 
 |         MP_TIMEDATA *pTimeData | 
 |     );     | 
 | } |