📄 av_upnp.h
字号:
virtual DWORD GetRedVideoGain(
/* [in, out] */ unsigned short* pRedVideoGain) = 0;
virtual DWORD SetRedVideoGain(
/* [in] */ unsigned short RedVideoGain) = 0;
virtual DWORD GetGreenVideoGain(
/* [in, out] */ unsigned short* pGreenVideoGain) = 0;
virtual DWORD SetGreenVideoGain(
/* [in] */ unsigned short GreenVideoGain) = 0;
virtual DWORD GetBlueVideoGain(
/* [in, out] */ unsigned short* pBlueVideoGain) = 0;
virtual DWORD SetBlueVideoGain(
/* [in] */ unsigned short BlueVideoGain) = 0;
virtual DWORD GetRedVideoBlackLevel(
/* [in, out] */ unsigned short* pRedVideoBlackLevel) = 0;
virtual DWORD SetRedVideoBlackLevel(
/* [in] */ unsigned short RedVideoBlackLevel) = 0;
virtual DWORD GetGreenVideoBlackLevel(
/* [in, out] */ unsigned short* pGreenVideoBlackLevel) = 0;
virtual DWORD SetGreenVideoBlackLevel(
/* [in] */ unsigned short GreenVideoBlackLevel) = 0;
virtual DWORD GetBlueVideoBlackLevel(
/* [in, out] */ unsigned short* pBlueVideoBlackLevel) = 0;
virtual DWORD SetBlueVideoBlackLevel(
/* [in] */ unsigned short BlueVideoBlackLevel) = 0;
virtual DWORD GetColorTemperature(
/* [in, out] */ unsigned short* pColorTemperature) = 0;
virtual DWORD SetColorTemperature(
/* [in] */ unsigned short ColorTemperature) = 0;
virtual DWORD GetHorizontalKeystone(
/* [in, out] */ short* pHorizontalKeystone) = 0;
virtual DWORD SetHorizontalKeystone(
/* [in] */ short HorizontalKeystone) = 0;
virtual DWORD GetVerticalKeystone(
/* [in, out] */ short* pVerticalKeystone) = 0;
virtual DWORD SetVerticalKeystone(
/* [in] */ short VerticalKeystone) = 0;
virtual DWORD GetMute(
/* [in] */ LPCWSTR pszChannel,
/* [in, out] */ bool* pMute) = 0;
virtual DWORD SetMute(
/* [in] */ LPCWSTR pszChannel,
/* [in] */ bool Mute) = 0;
virtual DWORD GetVolume(
/* [in] */ LPCWSTR pszChannel,
/* [in, out] */ unsigned short* pVolume) = 0;
virtual DWORD SetVolume(
/* [in] */ LPCWSTR pszChannel,
/* [in] */ unsigned short Volume) = 0;
virtual DWORD GetVolumeDB(
/* [in] */ LPCWSTR pszChannel,
/* [in, out] */ short* pVolumeDB) = 0;
virtual DWORD SetVolumeDB(
/* [in] */ LPCWSTR pszChannel,
/* [in] */ short VolumeDB) = 0;
virtual DWORD GetVolumeDBRange(
/* [in] */ LPCWSTR pszChannel,
/* [in, out] */ short* pMinValue,
/* [in, out] */ short* pMaxValue) = 0;
virtual DWORD GetLoudness(
/* [in] */ LPCWSTR pszChannel,
/* [in, out] */ bool* pLoudness) = 0;
virtual DWORD SetLoudness(
/* [in] */ LPCWSTR pszChannel,
/* [in] */ bool Loudness) = 0;
virtual DWORD InvokeVendorAction(
/* [in] */ LPCWSTR pszActionName,
/* [in] */ DISPPARAMS* pdispparams,
/* [in, out] */ VARIANT* pvarResult) = 0;
};
//
// IConnectionManager - interface of ConnectionManager service
//
class IConnectionManager : public IEventSource
{
public:
virtual DWORD GetProtocolInfo(
/* [in, out] */ wstring* pstrSourceProtocolInfo,
/* [in, out] */ wstring* pstrSinkProtocolInfo) = 0;
virtual DWORD PrepareForConnection(
/* [in] */ LPCWSTR pszRemoteProtocolInfo,
/* [in] */ LPCWSTR pszPeerConnectionManager,
/* [in] */ long PeerConnectionID,
/* [in] */ DIRECTION Direction,
/* [in, out] */ long* pConnectionID,
/* [in, out] */ IAVTransport** ppAVTransport,
/* [in, out] */ IRenderingControl** ppRenderingControl) = 0;
virtual DWORD ConnectionComplete(
/* [in] */ long ConnectionID) = 0;
virtual DWORD GetFirstConnectionID(
/* [in, out] */ long* pConnectionID) = 0;
virtual DWORD GetNextConnectionID(
/* [in, out] */ long* pConnectionID) = 0;
virtual DWORD GetCurrentConnectionInfo(
/* [in] */ long ConnectionID,
/* [in, out] */ ConnectionInfo* pConnectionInfo) = 0;
virtual DWORD InvokeVendorAction(
/* [in] */ LPCWSTR pszActionName,
/* [in] */ DISPPARAMS* pdispparams,
/* [in, out] */ VARIANT* pvarResult) = 0;
};
//
// IContentDirectory - interface of ContentDirectory service
//
class IContentDirectory : public IEventSource
{
public:
virtual DWORD GetSearchCapabilities(
/* [in, out] */ wstring* pstrSearchCaps) = 0;
virtual DWORD GetSortCapabilities(
/* [in, out] */ wstring* pstrSortCaps) = 0;
virtual DWORD GetSystemUpdateID(
/* [in, out] */ unsigned long* pId) = 0;
virtual DWORD BrowseMetadata(
/* [in] */ LPCWSTR pszObjectID,
/* [in] */ LPCWSTR pszFilter,
/* [in, out] */ wstring* pstrResult,
/* [in, out] */ unsigned long* pUpdateID) = 0;
virtual DWORD BrowseChildren(
/* [in] */ LPCWSTR pszObjectID,
/* [in] */ LPCWSTR pszFilter,
/* [in] */ unsigned long StartingIndex,
/* [in] */ unsigned long RequestedCount,
/* [in] */ LPCWSTR pszSortCriteria,
/* [in, out] */ wstring* pstrResult,
/* [in, out] */ unsigned long* pNumberReturned,
/* [in, out] */ unsigned long* pTotalMatches,
/* [in, out] */ unsigned long* pUpdateID) = 0;
virtual DWORD Search(
/* [in] */ LPCWSTR pszContainerID,
/* [in] */ LPCWSTR pszSearchCriteria,
/* [in] */ LPCWSTR pszFilter,
/* [in] */ unsigned long StartingIndex,
/* [in] */ unsigned long RequestedCount,
/* [in] */ LPCWSTR pszSortCriteria,
/* [in, out] */ wstring* pstrResult,
/* [in, out] */ unsigned long* pNumberReturned,
/* [in, out] */ unsigned long* pTotalMatches,
/* [in, out] */ unsigned long* pUpdateID) = 0;
virtual DWORD CreateObject(
/* [in] */ LPCWSTR pszContainerID,
/* [in] */ LPCWSTR pszElements,
/* [in, out] */ wstring* pstrObjectID,
/* [in, out] */ wstring* pstrResult) = 0;
virtual DWORD DestroyObject(
/* [in] */ LPCWSTR pszObjectID) = 0;
virtual DWORD UpdateObject(
/* [in] */ LPCWSTR pszObjectID,
/* [in] */ LPCWSTR pszCurrentTagValue,
/* [in] */ LPCWSTR pszNewTagValue) = 0;
virtual DWORD ImportResource(
/* [in] */ LPCWSTR pszSourceURI,
/* [in] */ LPCWSTR pszDestinationURI,
/* [in, out] */ unsigned long* pTransferID) = 0;
virtual DWORD ExportResource(
/* [in] */ LPCWSTR pszSourceURI,
/* [in] */ LPCWSTR pszDestinationURI,
/* [in, out] */ unsigned long* pTransferID) = 0;
virtual DWORD StopTransferResource(
/* [in] */ unsigned long TransferID) = 0;
virtual DWORD GetTransferProgress(
/* [in] */ unsigned long TransferID,
/* [in, out] */ wstring* pstrTransferStatus,
/* [in, out] */ wstring* pstrTransferLength,
/* [in, out] */ wstring* pstrTransferTotal) = 0;
virtual DWORD DeleteResource(
/* [in] */ LPCWSTR pszResourceURI) = 0;
virtual DWORD CreateReference(
/* [in] */ LPCWSTR pszContainerID,
/* [in] */ LPCWSTR pszObjectID,
/* [in, out] */ wstring* pstrNewID) = 0;
virtual DWORD InvokeVendorAction(
/* [in] */ LPCWSTR pszActionName,
/* [in] */ DISPPARAMS* pdispparams,
/* [in, out] */ VARIANT* pvarResult) = 0;
};
}
#include "av_upnp_internal.h"
namespace av_upnp
{
//
// Utilities
//
extern LPCWSTR AVDCPListDelimiter; // = L",";
DWORD EscapeAVDCPListDelimiters(wstring* pstr);
//
// UPnPErrorReporting
//
class UPnPErrorReporting
{
public:
//
// Add/Remove Error Number -> Description mappings.
//
DWORD AddErrorDescription(int UPnPErrorNum, const wstring &UPnPErrorDescription);
DWORD RemoveErrorDescription(int UPnPErrorNum);
//
// Add/Remove internal toolkit error number -> upnp error number mappings.
//
DWORD AddToolkitError(int UPnPToolkitErrorNum, int UPnPErrorNum);
DWORD RemoveToolkitError(int UPnPToolkitErrorNum);
//
// NOTE: This function modifies the thread's error information object using SetErrorInfo()
//
#ifdef DEBUG
HRESULT ReportActionError(int UPnPErrorNum, LPCWSTR pszAction);
#else
HRESULT ReportActionError(int UPnPErrorNum);
#endif
private:
typedef ce::hash_map<int, wstring> ErrDescripMap; // map from UPnP error num -> error description
typedef ce::hash_map<int, int> ToolkitErrMap; // map from internal toolkit error num -> UPnP error num to return
ce::critical_section m_csDataMembers;
ErrDescripMap m_mapErrDescrips;
ToolkitErrMap m_mapToolkitErrs;
};
#ifdef DEBUG
# define ReportError(x) ReportActionError(x, TEXT(__FUNCTION__))
#else
# define ReportError(x) ReportActionError(x)
#endif
//
// Functionality Support for toolkit classes
//
//
// Support for IEventSink for non-virtual service classes (ConnectionManagerServiceImpl and ContentDirectoryServiceImpl)
//
class IEventSinkSupport : public IEventSink,
virtual protected details::IUPnPEventSinkSupport
{
// IEventSink
public:
virtual DWORD OnStateChanged(
/*[in]*/ LPCWSTR pszStateVariableName,
/*[in*/ LPCWSTR pszValue);
virtual DWORD OnStateChanged(
/*[in]*/ LPCWSTR pszStateVariableName,
/*[in*/ long nValue);
virtual DWORD OnStateChanged(
/*[in]*/ LPCWSTR pszStateVariableName,
/*[in]*/ LPCWSTR pszChannel,
/*[in]*/ long nValue);
protected:
typedef ce::hash_map<wstring, DISPID> DISPIDMap; // map from state variable name -> DISPID
ce::critical_section m_csMapDISPIDs;
DISPIDMap m_mapDISPIDs;
};
//
// ModeratedEventSupport
//
class ModeratedEventSupport : public IUPnPEventSource,
virtual protected details::IUPnPEventSinkSupport,
public details::ITimedEventCallee
{
public:
// nMaxEventRate is the minimum time to sleep between events; must be less than 0x7FFFFFFF
ModeratedEventSupport(DWORD nMaxEventRate);
virtual ~ModeratedEventSupport();
void AddRefModeratedEvent();
void ReleaseModeratedEvent();
// TimedEventCallee
public:
virtual void TimedEventCall() = 0;
// IUPnPEventSource
public:
STDMETHOD(Advise)(
/*[in]*/ IUPnPEventSink* punkSubscriber);
STDMETHOD(Unadvise)(
/*[in]*/ IUPnPEventSink* punkSubscriber);
private:
const DWORD m_nMaxEventRate;
bool m_bTimerInitialized;
};
//
// VirtualServiceSupport
//
template <typename T>
class VirtualServiceSupport : public ModeratedEventSupport
{
public:
// Via nFirstInstanceID, optionally set the ID for the first instance registered if
// RegisterServiceInstance(T*, long*) is used to register this first instance
VirtualServiceSupport(DISPID dispidLastChange, long nFirstInstanceID = 0);
~VirtualServiceSupport();
// Register a service instance, InstanceID will be the instance's ID upon return
DWORD RegisterInstance(
/* [in] */ T* pIServiceInstance,
/* [in, out] */ long* pInstanceID);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -