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