📄 avtransportservice.cpp
字号:
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft shared
// source or premium shared source license agreement under which you licensed
// this source code. If you did not accept the terms of the license agreement,
// you are not authorized to use this source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the SOURCE.RTF on your install media or the root of your tools installation.
// THE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
#include "av_dcp.h"
#include "av_upnp.h"
#include "av_upnp_device_internal.h"
using namespace av_upnp;
/////////////////////////////////////////////////////////////////////////////
// AVTransportServiceImpl
AVTransportServiceImpl::AVTransportServiceImpl()
: VirtualServiceSupport<IAVTransport>(DISPID_LASTCHANGE_AVT)
{
InitErrDescrips();
InitToolkitErrs();
}
AVTransportServiceImpl::~AVTransportServiceImpl()
{
}
//
// IUPnPService_AVTransport1
//
STDMETHODIMP AVTransportServiceImpl::get_LastChange(BSTR* pLastChange)
{
return VirtualServiceSupport<IAVTransport>::GetLastChange(pLastChange);
}
// non-"get_LastChange()" get_foo() methods are implemented only to satisfy upnp's devicehost, they are not used
STDMETHODIMP AVTransportServiceImpl::get_TransportState(BSTR* pTransportState)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_TransportStatus(BSTR* pTransportStatus)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_PlaybackStorageMedium(BSTR* pPlaybackStorageMedium)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_RecordStorageMedium(BSTR* pRecordStorageMedium)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_PossiblePlaybackStorageMedia(BSTR* pPossiblePlaybackStorageMedia)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_PossibleRecordStorageMedia(BSTR* pPossibleRecordStorageMedia)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_CurrentPlayMode(BSTR* pCurrentPlayMode)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_TransportPlaySpeed(BSTR* pTransportPlaySpeed)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_RecordMediumWriteStatus(BSTR* pRecordMediumWriteStatus)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_CurrentRecordQualityMode(BSTR* pCurrentRecordQualityMode)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_PossibleRecordQualityModes(BSTR* pPossibleRecordQualityModes)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_NumberOfTracks(unsigned long* pNumberOfTracks)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_CurrentTrack(unsigned long* pCurrentTrack)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_CurrentTrackDuration(BSTR* pCurrentTrackDuration)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_CurrentMediaDuration(BSTR* pCurrentMediaDuration)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_CurrentTrackMetaData(BSTR* pCurrentTrackMetaData)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_CurrentTrackURI(BSTR* pCurrentTrackURI)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_AVTransportURI(BSTR* pAVTransportURI)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_AVTransportURIMetaData(BSTR* pAVTransportURIMetaData)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_NextAVTransportURI(BSTR* pNextAVTransportURI)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_NextAVTransportURIMetaData(BSTR* pNextAVTransportURIMetaData)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_RelativeTimePosition(BSTR* pRelativeTimePosition)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_AbsoluteTimePosition(BSTR* pAbsoluteTimePosition)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_RelativeCounterPosition(long* pRelativeCounterPosition)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_AbsoluteCounterPosition(long* pAbsoluteCounterPosition)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_CurrentTransportActions(BSTR* pCurrentTransportActions)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_A_ARG_TYPE_SeekMode(BSTR* pA_ARG_TYPE_SeekMode)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_A_ARG_TYPE_SeekTarget(BSTR* pA_ARG_TYPE_SeekTarget)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::get_A_ARG_TYPE_InstanceID(unsigned long* pA_ARG_TYPE_InstanceID)
{
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::SetAVTransportURI(unsigned long InstanceID,
BSTR CurrentURI,
BSTR CurrentURIMetaData)
{
// Convert arguments for call
wstring strCurrentURI, strCurrentURIMetaData;
if(!strCurrentURI.assign(CurrentURI, SysStringLen(CurrentURI)))
return m_ErrReport.ReportError(ERROR_AV_OOM);
if(!strCurrentURIMetaData.assign(CurrentURIMetaData, SysStringLen(CurrentURIMetaData)))
return m_ErrReport.ReportError(ERROR_AV_OOM);
MAKE_INSTANCE_CALL_2(SetAVTransportURI, strCurrentURI, strCurrentURIMetaData);
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::SetNextAVTransportURI(unsigned long InstanceID,
BSTR NextURI,
BSTR NextURIMetaData)
{
// Convert arguments for call
wstring strNextURI, strNextURIMetaData;
if(!strNextURI.assign(NextURI, SysStringLen(NextURI)))
return m_ErrReport.ReportError(ERROR_AV_OOM);
if(!strNextURIMetaData.assign(NextURIMetaData, SysStringLen(NextURIMetaData)))
return m_ErrReport.ReportError(ERROR_AV_OOM);
MAKE_INSTANCE_CALL_2(SetNextAVTransportURI, strNextURI, strNextURIMetaData);
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::GetMediaInfo(unsigned long InstanceID,
unsigned long* pNrTracks,
BSTR* pMediaDuration,
BSTR* pCurrentURI,
BSTR* pCurrentURIMetaData,
BSTR* pNextURI,
BSTR* pNextURIMetaData,
BSTR* pPlayMedium,
BSTR* pRecordMedium,
BSTR* pWriteStatus)
{
if(!pNrTracks || !pMediaDuration || !pCurrentURI || !pCurrentURIMetaData || !pNextURI
|| !pNextURIMetaData || !pPlayMedium || !pRecordMedium || !pWriteStatus)
return E_POINTER;
MediaInfo mediaInfo;
MAKE_INSTANCE_CALL_1(GetMediaInfo, &mediaInfo);
// Set out args
*pNrTracks = mediaInfo.nNrTracks;
if( !(*pMediaDuration = SysAllocString(mediaInfo.strMediaDuration))
|| !(*pCurrentURI = SysAllocString(mediaInfo.strCurrentURI))
|| !(*pCurrentURIMetaData = SysAllocString(mediaInfo.strCurrentURIMetaData))
|| !(*pNextURI = SysAllocString(mediaInfo.strNextURI))
|| !(*pCurrentURIMetaData = SysAllocString(mediaInfo.strNextURIMetaData))
|| !(*pPlayMedium = SysAllocString(mediaInfo.strPlayMedium))
|| !(*pRecordMedium = SysAllocString(mediaInfo.strRecordMedium))
|| !(*pWriteStatus = SysAllocString(mediaInfo.strWriteStatus)) )
return m_ErrReport.ReportError(ERROR_AV_OOM);
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::GetTransportInfo(unsigned long InstanceID,
BSTR* pCurrentTransportState,
BSTR* pCurrentTransportStatus,
BSTR* pCurrentSpeed)
{
if(!pCurrentTransportState || !pCurrentTransportStatus || !pCurrentSpeed)
return E_POINTER;
TransportInfo transportInfo;
MAKE_INSTANCE_CALL_1(GetTransportInfo, &transportInfo);
// Set out args
if( !(*pCurrentTransportState = SysAllocString(transportInfo.strCurrentTransportState))
|| !(*pCurrentTransportStatus = SysAllocString(transportInfo.strCurrentTransportStatus))
|| !(*pCurrentSpeed = SysAllocString(transportInfo.strCurrentSpeed)) )
return m_ErrReport.ReportError(ERROR_AV_OOM);
return S_OK;
}
STDMETHODIMP AVTransportServiceImpl::GetPositionInfo(unsigned long InstanceID,
unsigned long* pTrack,
BSTR* pTrackDuration,
BSTR* pTrackMetaData,
BSTR* pTrackURI,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -