1/* This file is part of the KDE project 2 Copyright (C) 2007 Shane King 3 4 This program is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Library General Public 6 License as published by the Free Software Foundation; either 7 version 2 of the License, or (at your option) any later version. 8 9 This program 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 Library General Public License for more details. 13 14 You should have received a copy of the GNU Library General Public License 15 along with this program; see the file COPYING. If not, write to 16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 Boston, MA 02110-1301, USA. 18*/ 19 20import "unknwn.idl"; 21import "strmif.idl"; 22 23typedef DWORD MP_TIMEDATA; 24typedef DWORD MP_CAPS; 25typedef DWORD MP_FLAGS; 26typedef float MP_DATA; 27 28typedef enum _MP_Type { 29 MPT_INT, 30 MPT_FLOAT, 31 MPT_BOOL, 32 MPT_ENUM, 33 MPT_MAX, 34} MP_TYPE; 35 36typedef enum _MP_CURVE_TYPE { 37 MP_CURVE_JUMP = 0x0001, 38 MP_CURVE_LINEAR = 0x0002, 39 MP_CURVE_SQUARE = 0x0004, 40 MP_CURVE_INVSQUARE = 0x0008, 41 MP_CURVE_SINE = 0x0010, 42} MP_CURVE_TYPE; 43 44typedef struct _MP_PARAMINFO { 45 MP_TYPE mpType; 46 MP_CAPS mopCaps; 47 MP_DATA mpdMinValue; 48 MP_DATA mpdMaxValue; 49 MP_DATA mpdNeutralValue; 50 WCHAR szUnitText[32]; 51 WCHAR szLabel[32]; 52} MP_PARAMINFO; 53 54typedef struct _MP_ENVELOPE_SEGMENT { 55 REFERENCE_TIME rtStart; 56 REFERENCE_TIME rtEnd; 57 MP_DATA valStart; 58 MP_DATA valEnd; 59 MP_CURVE_TYPE iCurve; 60 MP_FLAGS flags; 61} MP_ENVELOPE_SEGMENT; 62 63const MP_CAPS MP_CAPS_CURVE_JUMP = MP_CURVE_JUMP; 64const MP_CAPS MP_CAPS_CURVE_LINEAR = MP_CURVE_LINEAR; 65const MP_CAPS MP_CAPS_CURVE_SQUARE = MP_CURVE_SQUARE; 66const MP_CAPS MP_CAPS_CURVE_INVSQUARE = MP_CURVE_INVSQUARE; 67const MP_CAPS MP_CAPS_CURVE_SINE = MP_CURVE_SINE; 68 69[ 70 object, 71 uuid(6d6cbb61-a223-44aa-842f-a2f06750be6e) 72] 73interface IMediaParams : IUnknown 74{ 75 HRESULT AddEnvelope( 76 DWORD dwParamIndex, 77 DWORD cPoints, 78 MP_ENVELOPE_SEGMENT *pEnvelope 79 ); 80 81 HRESULT FlushEnvelope( 82 DWORD dwParamIndex, 83 REFERENCE_TIME refTimeStart, 84 REFERENCE_TIME refTimeEnd 85 ); 86 87 HRESULT GetParam( 88 DWORD dwParamIndex, 89 MP_DATA *pValue 90 ); 91 92 HRESULT SetParam( 93 DWORD dwParamIndex, 94 MP_DATA value 95 ); 96 97 HRESULT SetTimeFormat( 98 GUID guidTimeFormat, 99 MP_TIMEDATA mpTimeData 100 ); 101} 102 103[ 104 object, 105 uuid(6d6cbb60-a223-44aa-842f-a2f06750be6d) 106] 107interface IMediaParamInfo : IUnknown 108{ 109 HRESULT GetParamCount( 110 DWORD *pdwParams 111 ); 112 113 HRESULT GetParamInfo( 114 DWORD dwParamIndex, 115 MP_PARAMINFO *pInfo 116 ); 117 118 HRESULT GetParamText( 119 DWORD dwParamIndex, 120 WCHAR **ppwchText 121 ); 122 123 HRESULT GetNumTimeFormats( 124 DWORD *pdwNumTimeFormats 125 ); 126 127 HRESULT GetSupportedTimeFormat( 128 DWORD dwFormatIndex, 129 GUID *pguidTimeFormat 130 ); 131 132 HRESULT GetCurrentTimeFormat( 133 GUID *pguidTimeFormat, 134 MP_TIMEDATA *pTimeData 135 ); 136} 137