123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- // 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 <MedParam.h> // 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<LONGLONG>* 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_)
|