⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avtransportservice.cpp

📁 Windows CE 6.0 Server 源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//
// 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 + -