blob: 1cd4877601d62a1733c5ea3577b136c28f42d9ba [file] [log] [blame]
/* 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
);
}