199 lines
5.5 KiB
C++
199 lines
5.5 KiB
C++
//==========================================================================;
|
|
// MSVidAudioRenderer.h : Declaration of the CMSVidAudioRenderer
|
|
// copyright (c) Microsoft Corp. 1998-1999.
|
|
//==========================================================================;
|
|
|
|
#ifndef __MSVidAUDIORENDERER_H_
|
|
#define __MSVidAUDIORENDERER_H_
|
|
|
|
#pragma once
|
|
|
|
#include "segimpl.h"
|
|
#include "devimpl.h"
|
|
#include "seg.h"
|
|
#include <objectwithsiteimplsec.h>
|
|
#include "resource.h" // main symbols
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMSVidAudioRenderer
|
|
class ATL_NO_VTABLE __declspec(uuid("37B03544-A4C8-11d2-B634-00C04F79498E")) CMSVidAudioRenderer :
|
|
public CComObjectRootEx<CComSingleThreadModel>,
|
|
public CComCoClass<CMSVidAudioRenderer, &CLSID_MSVidAudioRenderer>,
|
|
public IObjectWithSiteImplSec<CMSVidAudioRenderer>,
|
|
public ISupportErrorInfo,
|
|
public IConnectionPointContainerImpl<CMSVidAudioRenderer>,
|
|
public IMSVidGraphSegmentImpl<CMSVidAudioRenderer, MSVidSEG_DEST, &GUID_NULL>,
|
|
public IMSVidDeviceImpl<CMSVidAudioRenderer, &LIBID_MSVidCtlLib, &GUID_NULL, IMSVidAudioRenderer>
|
|
{
|
|
public:
|
|
CMSVidAudioRenderer() :
|
|
m_fUseKSRenderer(false),
|
|
m_fAnalogOnly(false),
|
|
m_fDigitalOnly(false),
|
|
m_iAudioRenderer(-1)
|
|
{}
|
|
|
|
REGISTER_AUTOMATION_OBJECT(IDS_PROJNAME,
|
|
IDS_REG_AUDIORENDERER_PROGID,
|
|
IDS_REG_AUDIORENDERER_DESC,
|
|
LIBID_MSVidCtlLib,
|
|
CLSID_MSVidAudioRenderer);
|
|
|
|
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
|
|
|
BEGIN_COM_MAP(CMSVidAudioRenderer)
|
|
COM_INTERFACE_ENTRY(IMSVidGraphSegment)
|
|
COM_INTERFACE_ENTRY(IMSVidAudioRenderer)
|
|
COM_INTERFACE_ENTRY(IMSVidOutputDevice)
|
|
COM_INTERFACE_ENTRY(IMSVidDevice)
|
|
COM_INTERFACE_ENTRY(IDispatch)
|
|
COM_INTERFACE_ENTRY(IObjectWithSite)
|
|
COM_INTERFACE_ENTRY(ISupportErrorInfo)
|
|
COM_INTERFACE_ENTRY(IConnectionPointContainer)
|
|
COM_INTERFACE_ENTRY(IPersist)
|
|
END_COM_MAP()
|
|
|
|
BEGIN_CATEGORY_MAP(CMSVidAudioRenderer)
|
|
IMPLEMENTED_CATEGORY(CATID_SafeForScripting)
|
|
IMPLEMENTED_CATEGORY(CATID_SafeForInitializing)
|
|
IMPLEMENTED_CATEGORY(CATID_PersistsToPropertyBag)
|
|
END_CATEGORY_MAP()
|
|
|
|
BEGIN_CONNECTION_POINT_MAP(CMSVidAudioRenderer)
|
|
END_CONNECTION_POINT_MAP()
|
|
|
|
DSFilter m_pAR;
|
|
int m_iAudioRenderer;
|
|
bool m_fUseKSRenderer;
|
|
bool m_fAnalogOnly;
|
|
bool m_fDigitalOnly;
|
|
|
|
// ISupportsErrorInfo
|
|
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
|
|
|
|
public:
|
|
CComBSTR __declspec(property(get=GetName)) m_Name;
|
|
CComBSTR GetName(void) {
|
|
return CComBSTR(OLESTR("audio renderer"));
|
|
}
|
|
|
|
// IMSVidDevice
|
|
STDMETHOD(get_Name)(BSTR * Name)
|
|
{
|
|
if (!m_fInit) {
|
|
return Error(IDS_OBJ_NO_INIT, __uuidof(IMSVidAudioRenderer), CO_E_NOTINITIALIZED);
|
|
}
|
|
if (Name == NULL)
|
|
return E_POINTER;
|
|
try {
|
|
*Name = m_Name.Copy();
|
|
} catch(...) {
|
|
return E_POINTER;
|
|
}
|
|
return NOERROR;
|
|
}
|
|
STDMETHOD(get_Status)(LONG * Status)
|
|
{
|
|
if (!m_fInit) {
|
|
return Error(IDS_OBJ_NO_INIT, __uuidof(IMSVidAudioRenderer), CO_E_NOTINITIALIZED);
|
|
}
|
|
if (Status == NULL)
|
|
return E_POINTER;
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
STDMETHOD(get_Segment)(IMSVidGraphSegment * * pIMSVidGraphSegment)
|
|
{
|
|
if (!m_fInit) {
|
|
return Error(IDS_OBJ_NO_INIT, __uuidof(IMSVidAudioRenderer), CO_E_NOTINITIALIZED);
|
|
}
|
|
if (pIMSVidGraphSegment == NULL)
|
|
return E_POINTER;
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
// IMSVidAudioRenderer
|
|
STDMETHOD(get_Volume)(LONG * plPercent)
|
|
{
|
|
if (!m_fInit) {
|
|
return Error(IDS_OBJ_NO_INIT, __uuidof(IMSVidAudioRenderer), CO_E_NOTINITIALIZED);
|
|
}
|
|
if (plPercent == NULL)
|
|
return E_POINTER;
|
|
try {
|
|
if (!m_pGraph) {
|
|
Error(IDS_INVALID_STATE, __uuidof(IMSVidAudioRenderer), HRESULT_FROM_WIN32(ERROR_INVALID_STATE));
|
|
}
|
|
PQBasicAudio pBA(m_pGraph);
|
|
if (!pBA) {
|
|
Error(IDS_E_CANTQI, __uuidof(IBasicAudio), E_NOINTERFACE);
|
|
}
|
|
return pBA->get_Volume(plPercent);
|
|
} catch(...) {
|
|
return E_POINTER;
|
|
}
|
|
}
|
|
STDMETHOD(put_Volume)(LONG plPercent)
|
|
{
|
|
if (!m_fInit) {
|
|
return Error(IDS_OBJ_NO_INIT, __uuidof(IMSVidAudioRenderer), CO_E_NOTINITIALIZED);
|
|
}
|
|
try {
|
|
if (!m_pGraph) {
|
|
Error(IDS_INVALID_STATE, __uuidof(IMSVidAudioRenderer), HRESULT_FROM_WIN32(ERROR_INVALID_STATE));
|
|
}
|
|
PQBasicAudio pBA(m_pGraph);
|
|
if (!pBA) {
|
|
Error(IDS_E_CANTQI, __uuidof(IBasicAudio), E_NOINTERFACE);
|
|
}
|
|
return pBA->put_Volume(plPercent);
|
|
} catch(...) {
|
|
return E_UNEXPECTED;
|
|
}
|
|
}
|
|
STDMETHOD(get_Balance)(LONG * plPercent)
|
|
{
|
|
if (!m_fInit) {
|
|
return Error(IDS_OBJ_NO_INIT, __uuidof(IMSVidAudioRenderer), CO_E_NOTINITIALIZED);
|
|
}
|
|
if (plPercent == NULL)
|
|
return E_POINTER;
|
|
try {
|
|
if (!m_pGraph) {
|
|
Error(IDS_INVALID_STATE, __uuidof(IMSVidAudioRenderer), HRESULT_FROM_WIN32(ERROR_INVALID_STATE));
|
|
}
|
|
PQBasicAudio pBA(m_pGraph);
|
|
if (!pBA) {
|
|
Error(IDS_E_CANTQI, __uuidof(IBasicAudio), E_NOINTERFACE);
|
|
}
|
|
return pBA->get_Balance(plPercent);
|
|
} catch(...) {
|
|
return E_POINTER;
|
|
}
|
|
}
|
|
STDMETHOD(put_Balance)(LONG plPercent)
|
|
{
|
|
if (!m_fInit) {
|
|
return Error(IDS_OBJ_NO_INIT, __uuidof(IMSVidAudioRenderer), CO_E_NOTINITIALIZED);
|
|
}
|
|
try {
|
|
if (!m_pGraph) {
|
|
Error(IDS_INVALID_STATE, __uuidof(IMSVidAudioRenderer), HRESULT_FROM_WIN32(ERROR_INVALID_STATE));
|
|
}
|
|
PQBasicAudio pBA(m_pGraph);
|
|
if (!pBA) {
|
|
Error(IDS_E_CANTQI, __uuidof(IBasicAudio), E_NOINTERFACE);
|
|
}
|
|
return pBA->put_Balance(plPercent);
|
|
} catch(...) {
|
|
return E_UNEXPECTED;
|
|
}
|
|
}
|
|
|
|
// IMSVidGraphSegment
|
|
STDMETHOD(Build)();
|
|
STDMETHOD(PreRun)();
|
|
};
|
|
|
|
#endif //__MSVidAUDIORENDERER_H_
|