// MediaParams.h: interface for the CMediaParams class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_MEDIAPARAMS_H__3DB99F00_3887_4C35_BBA8_C47835777A69__INCLUDED_) #define AFX_MEDIAPARAMS_H__3DB99F00_3887_4C35_BBA8_C47835777A69__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include // DX8 automation #include "CakeMedParam.h" // DX8 automation #include "ParamEnvelope.h" #include "Parameters.h" //////////////////////////////////////////////////////////////////////////////// class CMediaParams : public IMediaParams, public IMediaParamInfo, public IMediaParamsSetUICallback, public IMediaParamsUICallback { public: static HRESULT Create( CMediaParams** ppObj, IUnknown* pUnkOuter ); public: // IUnknown STDMETHOD(QueryInterface)( REFIID riid, void** ppv ); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release(); // IMediaParams STDMETHOD(GetParam)(ULONG dwParamIndex, FLOAT* pValue); STDMETHOD(SetParam)(ULONG dwParamIndex, FLOAT value); STDMETHOD(AddEnvelope)(ULONG dwParamIndex, ULONG cSegments, MP_ENVELOPE_SEGMENT* pEnvelopeSegments); STDMETHOD(FlushEnvelope)(ULONG dwParamIndex, REFERENCE_TIME refTimeStart, REFERENCE_TIME refTimeEnd); STDMETHOD(SetTimeFormat)(GUID guidTimeFormat, ULONG mpTimeData); // IMediaParamInfo STDMETHOD(GetParamCount)(ULONG* pdwParams); STDMETHOD(GetParamInfo)(ULONG dwParamIndex, MP_PARAMINFO* pInfo); STDMETHOD(GetParamText)(ULONG dwParamIndex, WCHAR** ppwchText); STDMETHOD(GetNumTimeFormats)(ULONG* pdwNumTimeFormats); STDMETHOD(GetSupportedTimeFormat)(ULONG dwFormatIndex, GUID* pguidTimeFormat); STDMETHOD(GetCurrentTimeFormat)(GUID* pguidTimeFormat, ULONG* pTimeData); // IMediaParamsSetUICallback STDMETHOD(SetUICallback)(IMediaParamsUICallback* pICallback); // IMediaParamsUICallback STDMETHOD(ParamsBeginCapture)(DWORD *aIndex, DWORD cPoints); STDMETHOD(ParamsChanged)(DWORD *aIndex, DWORD cPoints, MP_DATA *paData); STDMETHOD(ParamsEndCapture)(DWORD *aIndex, DWORD cPoints); // Helpers for setting the current sample rate void SetSampleRate( long lFs ) { m_lFs = lFs; } long GetSampleRate() const { return m_lFs; } // Helpers to decimate shapes into smaller chunks HRESULT GetDecimationTimes( LONGLONG llSampStart, LONGLONG llSampEnd, std::vector* pTimes ); void SetDecimationInterval( double d ) { m_dDecimationInterval = d; } double GetDecimationInterval() const { return m_dDecimationInterval; } // Set our position among all parameter segments, updating current values, and // flushing any out-of-date segments. HRESULT UpdateValuesForSample( LONGLONG llSamp ); // Get the envelope for a given parameter const CParamEnvelope& GetParamEnvelope( DWORD ix ) { ASSERT( ix >= 0 && ix < NUM_PARAMS ); return m_aEnv[ ix ]; } private: IUnknown* m_pUnkOuter; IMediaParamsUICallback* m_pCallback; LONG m_cRef; CParamEnvelope* m_aEnv; double m_dDecimationInterval; long m_lFs; private: static const ParamInfo m_aParamInfo[ NUM_PARAMS ]; private: CMediaParams( IUnknown* pUnkOuter ); virtual ~CMediaParams(); }; #endif // !defined(AFX_MEDIAPARAMS_H__3DB99F00_3887_4C35_BBA8_C47835777A69__INCLUDED_)