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