📄 hxausvc.h
字号:
* Purpose:
* Call this to mute the volume.
*/
STDMETHOD(SetMute) (THIS_
const BOOL /*IN*/ bMute ) PURE;
/************************************************************************
* Method:
* IHXVolume::GetMute
* Purpose:
* Call this to determine if the volume is muted.
*
*/
STDMETHOD_(BOOL,GetMute) (THIS) PURE;
/************************************************************************
* Method:
* IHXVolume::AddAdviseSink
* Purpose:
* Call this to register an IHXVolumeAdviseSink. The advise sink
* methods: OnVolumeChange() and OnMuteChange() are called when
* ever IHXVolume::SetVolume() and IHXVolume::SetMute() are
* called.
*/
STDMETHOD(AddAdviseSink) (THIS_
IHXVolumeAdviseSink* /*IN*/ pSink
) PURE;
/************************************************************************
* Method:
* IHXVolume::RemoveAdviseSink
* Purpose:
* Call this to unregister an IHXVolumeAdviseSink. Use this when
* you are no longer interested in receiving volume or mute change
* notifications.
*/
STDMETHOD(RemoveAdviseSink) (THIS_
IHXVolumeAdviseSink* /*IN*/ pSink
) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXVolumeAdviseSink
*
* Purpose:
*
* This interface provides access to notifications of volume changes. A
* client must implement this interface if they are interested in receiving
* notifications of volume level changes or mute state changes. A client must
* register their volume advise sink using IHXVolume::AddAdviseSink().
* See the IHXVolume interface.
*
* IID_IHXVolumeAdviseSink:
*
* {00000708-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXVolumeAdviseSink, 0x00000708, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXVolumeAdviseSink
DECLARE_INTERFACE_(IHXVolumeAdviseSink, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXVolumeAdviseSink methods
*/
/************************************************************************
* Method:
* IHXVolumeAdviseSink::OnVolumeChange
* Purpose:
* This interface is called whenever the associated IHXVolume
* SetVolume() is called.
*/
STDMETHOD(OnVolumeChange) (THIS_
const UINT16 uVolume
) PURE;
/************************************************************************
* Method:
* IHXVolumeAdviseSink::OnMuteChange
* Purpose:
* This interface is called whenever the associated IHXVolume
* SetMute() is called.
*
*/
STDMETHOD(OnMuteChange) (THIS_
const BOOL bMute
) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXDryNotification
*
* Purpose:
*
* Audio Renderer should implement this if it needs notification when the
* audio stream is running dry.
*
* IID_IHXDryNotification:
*
* {00000709-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXDryNotification, 0x00000709, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXDryNotification
DECLARE_INTERFACE_(IHXDryNotification, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXDryNotification methods
*/
/************************************************************************
* Method:
* IHXDryNotification::OnDryNotification
* Purpose:
* This function is called when it is time to write to audio device
* and there is not enough data in the audio stream. The renderer can
* then decide to add more data to the audio stream. This should be
* done synchronously within the call to this function.
* It is OK to not write any data. Silence will be played instead.
*/
STDMETHOD(OnDryNotification) (THIS_
UINT32 /*IN*/ ulCurrentStreamTime,
UINT32 /*IN*/ ulMinimumDurationRequired
) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXAudioDeviceManager
*
* Purpose:
*
* Allows the default audio device to be replaced.
*
* IID_IHXAudioDeviceManager:
*
* {0000070A-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXAudioDeviceManager, 0x0000070A, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXAudioDeviceManager
DECLARE_INTERFACE_(IHXAudioDeviceManager, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXAudioDeviceManager methods
*/
/**********************************************************************
* Method:
* IHXAudioDeviceManager::Replace
* Purpose:
* This is used to replace the default implementation of the audio
* device by the given audio device interface.
*/
STDMETHOD(Replace) (THIS_
IHXAudioDevice* /*IN*/ pAudioDevice) PURE;
/**********************************************************************
* Method:
* IHXAudioDeviceManager::Remove
* Purpose:
* This is used to remove the audio device given to the manager in
* the earlier call to Replace.
*/
STDMETHOD(Remove) (THIS_
IHXAudioDevice* /*IN*/ pAudioDevice) PURE;
/************************************************************************
* Method:
* IHXAudioDeviceManager::AddFinalHook
* Purpose:
* One last chance to modify data being written to the audio device.
* This hook allows the user to change the audio format that
* is to be written to the audio device. This can be done in call
* to OnInit() in IHXAudioHook.
*/
STDMETHOD(SetFinalHook) (THIS_
IHXAudioHook* /*IN*/ pHook
) PURE;
/************************************************************************
* Method:
* IHXAudioDeviceManager::RemoveFinalHook
* Purpose:
* Remove final hook
*/
STDMETHOD(RemoveFinalHook) (THIS_
IHXAudioHook* /*IN*/ pHook
) PURE;
/************************************************************************
* Method:
* IHXAudioDeviceManager::GetAudioFormat
* Purpose:
* Returns the audio format in which the audio device is opened.
* This function will fill in the pre-allocated HXAudioFormat
* structure passed in.
*/
STDMETHOD(GetAudioFormat) (THIS_
HXAudioFormat* /*IN/OUT*/pAudioFormat) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXAudioCrossFade
*
* Purpose:
*
* This interface can be used to cross-fade two audio streams. It is exposed
* by IHXAudioPlayer
*
* IID_IHXAudioCrossFade:
*
* {0000070B-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXAudioCrossFade, 0x0000070B, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXAudioCrossFade
DECLARE_INTERFACE_(IHXAudioCrossFade, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXAudioCrossFade methods
*/
/************************************************************************
* Method:
* IHXAudioCrossFade::CrossFade
* Purpose:
* Cross-fade two audio streams.
* pStreamFrom - Stream to be cross faded from
* pStreamTo - Stream to be cross faded to
* ulFromCrossFadeStartTime- "From" Stream time when cross fade is
* to be started
* ulToCrossFadeStartTime - "To" Stream time when cross fade is to
* be started
* ulCrossFadeDuration - Duration over which cross-fade needs
* to be done
*
*/
STDMETHOD(CrossFade) (THIS_
IHXAudioStream* pStreamFrom,
IHXAudioStream* pStreamTo,
UINT32 ulFromCrossFadeStartTime,
UINT32 ulToCrossFadeStartTime,
UINT32 ulCrossFadeDuration) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXAudioStream2
*
* Purpose:
*
* This interface contains some last-minute added audio stream functions
*
* IID_IHXAudioStream2:
*
* {0000070C-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXAudioStream2, 0x0000070C, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXAudioStream2
DECLARE_INTERFACE_(IHXAudioStream2, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXAudioStream2 methods
*/
/************************************************************************
* Method:
* IHXAudioStream2::RemoveDryNotification
* Purpose:
* Use this to remove itself from the notification response object
* during the stream switching.
*/
STDMETHOD(RemoveDryNotification) (THIS_
IHXDryNotification* /*IN*/ pNotification
) PURE;
/************************************************************************
* Method:
* IHXAudioStream2::GetAudioFormat
* Purpose:
* Returns the input audio format of the data written by the
* renderer. This function will fill in the pre-allocated
* HXAudioFormat structure passed in.
*/
STDMETHOD(GetAudioFormat) (THIS_
HXAudioFormat* /*IN/OUT*/pAudioFormat) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXAudioPushdown
*
* Purpose:
*
* This interface can be used to setup the audio pushdown time.
*
* IID_IHXAudioPushdown:
*
* {0000070D-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXAudioPushdown, 0x0000070D, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXAudioPushdown
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -