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

📄 baserend.cpp

📁 著名的 helix realplayer 基于手机 symbian 系统的 播放器全套源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        m_pStream->QueryInterface(IID_IHXASMStream, (void**) &m_pASMStream);
    }
    else
    {
        retVal = HXR_FAIL;
    }

    return retVal;
}

STDMETHODIMP CRNBaseRenderer::OnPreSeek(UINT32 ulOldTime, UINT32 ulNewTime)
{
    return HXR_OK;
}

STDMETHODIMP CRNBaseRenderer::OnPostSeek(UINT32 ulOldTime, UINT32 ulNewTime)
{
    return HXR_OK;
}

STDMETHODIMP CRNBaseRenderer::OnBegin(UINT32 ulTime)
{
    return HXR_OK;
}

STDMETHODIMP CRNBaseRenderer::OnPause(UINT32 ulTime)
{
    return HXR_OK;
}

STDMETHODIMP CRNBaseRenderer::OnBuffering(UINT32 ulFlags, UINT16 usPercentComplete)
{
    return HXR_OK;
}

STDMETHODIMP CRNBaseRenderer::OnEndofPackets(void)
{
    return HXR_OK;
}

STDMETHODIMP CRNBaseRenderer::SetPropertyULONG32(const char* pName, ULONG32 ulVal)
{
    HX_RESULT retVal = HXR_FAIL;

    if (m_pValues)
    {
        retVal = m_pValues->SetPropertyULONG32(pName, ulVal);
    }

    return retVal;
}

STDMETHODIMP CRNBaseRenderer::GetPropertyULONG32(const char* pName, REF(ULONG32) rulVal)
{
    HX_RESULT retVal = HXR_FAIL;

    if (m_pValues)
    {
        retVal = m_pValues->GetPropertyULONG32(pName, rulVal);
    }

    return retVal;
}

STDMETHODIMP CRNBaseRenderer::GetFirstPropertyULONG32(REF(const char*) rpName, REF(ULONG32) rulVal)
{
    HX_RESULT retVal = HXR_FAIL;

    if (m_pValues)
    {
        retVal = m_pValues->GetFirstPropertyULONG32(rpName, rulVal);
    }

    return retVal;
}

STDMETHODIMP CRNBaseRenderer::GetNextPropertyULONG32(REF(const char*) rpName, REF(ULONG32) rulVal)
{
    HX_RESULT retVal = HXR_FAIL;

    if (m_pValues)
    {
        retVal = m_pValues->GetNextPropertyULONG32(rpName, rulVal);
    }

    return retVal;
}

STDMETHODIMP CRNBaseRenderer::SetPropertyBuffer(const char* pName, IHXBuffer* pVal)
{
    HX_RESULT retVal = HXR_FAIL;

    if (m_pValues)
    {
        retVal = m_pValues->SetPropertyBuffer(pName, pVal);
    }

    return retVal;
}

STDMETHODIMP CRNBaseRenderer::GetPropertyBuffer(const char* pName, REF(IHXBuffer*) rpVal)
{
    HX_RESULT retVal = HXR_FAIL;

    if (m_pValues)
    {
        retVal = m_pValues->GetPropertyBuffer(pName, rpVal);
    }

    return retVal;
}

STDMETHODIMP CRNBaseRenderer::GetFirstPropertyBuffer(REF(const char*) rpName, REF(IHXBuffer*) rpVal)
{
    HX_RESULT retVal = HXR_FAIL;

    if (m_pValues)
    {
        retVal = m_pValues->GetFirstPropertyBuffer(rpName, rpVal);
    }

    return retVal;
}

STDMETHODIMP CRNBaseRenderer::GetNextPropertyBuffer(REF(const char*) rpName, REF(IHXBuffer*) rpVal)
{
    HX_RESULT retVal = HXR_FAIL;

    if (m_pValues)
    {
        retVal = m_pValues->GetNextPropertyBuffer(rpName, rpVal);
    }

    return retVal;
}

STDMETHODIMP CRNBaseRenderer::SetPropertyCString(const char* pName, IHXBuffer* pVal)
{
    HX_RESULT retVal = HXR_FAIL;

    if (m_pValues)
    {
        retVal = m_pValues->SetPropertyCString(pName, pVal);
    }

    return retVal;
}

STDMETHODIMP CRNBaseRenderer::GetPropertyCString(const char* pName, REF(IHXBuffer*) rpVal)
{
    HX_RESULT retVal = HXR_FAIL;

    if (m_pValues)
    {
        retVal = m_pValues->GetPropertyCString(pName, rpVal);
    }

    return retVal;
}

STDMETHODIMP CRNBaseRenderer::GetFirstPropertyCString(REF(const char*) rpName, REF(IHXBuffer*) rpVal)
{
    HX_RESULT retVal = HXR_FAIL;

    if (m_pValues)
    {
        retVal = m_pValues->GetFirstPropertyCString(rpName, rpVal);
    }

    return retVal;
}

STDMETHODIMP CRNBaseRenderer::GetNextPropertyCString(REF(const char*) rpName, REF(IHXBuffer*) rpVal)
{
    HX_RESULT retVal = HXR_FAIL;

    if (m_pValues)
    {
        retVal = m_pValues->GetNextPropertyCString(rpName, rpVal);
    }

    return retVal;
}

STDMETHODIMP CRNBaseRenderer::UpdatePacketTimeOffset(INT32 lTimeOffset)
{
    HX_RESULT retVal = HXR_OK;

    // Save the offset time
    m_lTimeOffset = -lTimeOffset;

    return retVal;
}

STDMETHODIMP
CRNBaseRenderer::UpdatePlayTimes(IHXValues* pProps)
{
    return HXR_OK;
}

STDMETHODIMP CRNBaseRenderer::EndStream()
{
    // Can't use IHXStream, IHXBackChannel, or IHXASMStream
    // after EndStream() is called.
    HX_RELEASE(m_pStream);
    HX_RELEASE(m_pBackChannel);
    HX_RELEASE(m_pASMStream);

    return HXR_OK;
}

STDMETHODIMP CRNBaseRenderer::OnPacket(IHXPacket *pPacket, INT32 lTimeOffset)
{
    // Save the offset time
    m_lTimeOffset = lTimeOffset;

    return OnPacketNoOffset(pPacket);
}

STDMETHODIMP CRNBaseRenderer::OnTimeSync(UINT32 ulTime)
{
    HX_RESULT retVal = HXR_OK;
    
    // Adjust the time
    UINT32 ulAdjustedTime = 0;
    if (m_lTimeOffset < 0 && ulTime < (UINT32)(-m_lTimeOffset))
    {
        ulAdjustedTime = 0;
    }
    else
    {
        ulAdjustedTime = ulTime + m_lTimeOffset;
    }

    // Save the last time sync
    m_ulLastTimeSync = ulAdjustedTime;

    if(_IsValidRendererSurface())
    {
        retVal = OnTimeSyncOffset(ulAdjustedTime);
    }
    
    return retVal;
}

STDMETHODIMP CRNBaseRenderer::CheckStreamVersions(IHXValues* pHeader)
{
    BOOL bVersionOK = TRUE;

    HX_RESULT retVal = pHeader->GetPropertyULONG32("StreamVersion", m_ulStreamVersion);
    if (SUCCEEDED(retVal))
    {
        UINT32 ulDataMajor = HX_GET_MAJOR_VERSION(m_ulStreamVersion);
        UINT32 ulDataMinor = HX_GET_MINOR_VERSION(m_ulStreamVersion);
        UINT32 ulRendMajor = HX_GET_MAJOR_VERSION(GetHighestSupportedStreamVersion());
        UINT32 ulRendMinor = HX_GET_MINOR_VERSION(GetHighestSupportedStreamVersion());

        if((ulDataMajor >  ulRendMajor) ||
           (ulDataMajor == ulRendMajor && ulDataMinor > ulRendMinor))
        {
            bVersionOK = FALSE;
        }
    }

    retVal = pHeader->GetPropertyULONG32("ContentVersion", m_ulContentVersion);
    if(bVersionOK && SUCCEEDED(retVal))
    {
        UINT32 ulDataMajor = HX_GET_MAJOR_VERSION(m_ulContentVersion);
        UINT32 ulDataMinor = HX_GET_MINOR_VERSION(m_ulContentVersion);
        UINT32 ulRendMajor = HX_GET_MAJOR_VERSION(GetHighestSupportedContentVersion());
        UINT32 ulRendMinor = HX_GET_MINOR_VERSION(GetHighestSupportedContentVersion());

        if((ulDataMajor >  ulRendMajor) ||
           (ulDataMajor == ulRendMajor && ulDataMinor > ulRendMinor))
        {
            bVersionOK = FALSE;
        }
    }

    if(bVersionOK)
    {
        retVal = HXR_OK;
    }
    else
    {
        retVal = HXR_FAIL;
    }

    return retVal;
}

STDMETHODIMP CRNBaseRenderer::AddMimeToUpgradeCollection(const char* pszMimeType)
{
    return AddToAutoUpgradeCollection(pszMimeType, m_pContext);
}

STDMETHODIMP CRNBaseRenderer::GetPreference(const char*      pszPrefName,
                                            REF(BOOL)        rbPresent,
                                            REF(IHXBuffer*) rpBuffer)
{
    HX_RESULT retVal  = HXR_OK;

    if (pszPrefName)
    {
        // Set defaults
        rbPresent = FALSE;
        rpBuffer  = NULL;

        if (m_pPreferences)
        {
            HX_RESULT rv = m_pPreferences->ReadPref(pszPrefName, rpBuffer);
            if (SUCCEEDED(rv))
            {
                rbPresent = TRUE;
            }
        }
        else
        {
            retVal = HXR_NOT_INITIALIZED;
        }
    }
    else
    {
        retVal = HXR_INVALID_PARAMETER;
    }

    return retVal;
}

BOOL CRNBaseRenderer::_IsValidRendererSurface()
{
    return TRUE;
}

STDMETHODIMP_(BOOL) CRNBaseRenderer::GetLoadMultiple()
{
    return TRUE;
}

STDMETHODIMP CRNBaseRenderer::GetCopyright(REF(const char*) rpszCopyright)
{
    rpszCopyright = (const char*) m_pszBaseCopyright;
    return HXR_OK;
}

STDMETHODIMP CRNBaseRenderer::GetMoreInfoURL(REF(const char*) rpszMoreInfoURL)
{
    rpszMoreInfoURL = (const char*) m_pszBaseMoreInfoURL;
    return HXR_OK;
}

STDMETHODIMP_(UINT32) CRNBaseRenderer::GetInitialGranularity()
{
    return 33;
}

STDMETHODIMP_(UINT32) CRNBaseRenderer::GetDisplayFlags()
{
    UINT32 ulRet = HX_DISPLAY_WINDOW          |
                   HX_DISPLAY_SUPPORTS_RESIZE |
                   HX_DISPLAY_SUPPORTS_FULLSCREEN;
    return ulRet;
}

STDMETHODIMP_(UINT32) CRNBaseRenderer::GetHighestSupportedContentVersion()
{
    return HX_ENCODE_PROD_VERSION(0, 0, 0, 0);
}

STDMETHODIMP_(UINT32) CRNBaseRenderer::GetHighestSupportedStreamVersion()
{
    return HX_ENCODE_PROD_VERSION(0, 0, 0, 0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -