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

📄 null_event_rend.cpp

📁 著名的 helix realplayer 基于手机 symbian 系统的 播放器全套源代码
💻 CPP
字号:
/* ***** BEGIN LICENSE BLOCK *****
 * Version: RCSL 1.0/RPSL 1.0
 *
 * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
 *
 * The contents of this file, and the files included with this file, are
 * subject to the current version of the RealNetworks Public Source License
 * Version 1.0 (the "RPSL") available at
 * http://www.helixcommunity.org/content/rpsl unless you have licensed
 * the file under the RealNetworks Community Source License Version 1.0
 * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
 * in which case the RCSL will apply. You may also obtain the license terms
 * directly from RealNetworks.  You may not use this file except in
 * compliance with the RPSL or, if you have a valid RCSL with RealNetworks
 * applicable to this file, the RCSL.  Please see the applicable RPSL or
 * RCSL for the rights, obligations and limitations governing use of the
 * contents of the file.
 *
 * This file is part of the Helix DNA Technology. RealNetworks is the
 * developer of the Original Code and owns the copyrights in the portions
 * it created.
 *
 * This file, and the files included with this file, is distributed and made
 * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
 * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 *
 * Technology Compatibility Kit Test Suite(s) Location:
 *    http://www.helixcommunity.org/content/tck
 *
 * Contributor(s):
 *
 * ***** END LICENSE BLOCK ***** */

#include "hxtypes.h"
#include "hxcom.h"
#include "ihxpckts.h"
#include "hxfiles.h"
#include "hxcore.h"
#include "hxrendr.h"
#include "hxplugn.h"
#include "baseobj.h"
#include "hxver.h"
#include "rarender.ver"
#include "null_event_rend.h"

#include "hxheap.h"
#ifdef _DEBUG
#undef HX_THIS_FILE
static const char HX_THIS_FILE[] = __FILE__;
#endif

const char* const CNullEventRenderer::m_pszDescription        = "Helix Null Event Renderer Plugin";
const char* const CNullEventRenderer::m_pszCopyright          = HXVER_COPYRIGHT;
const char* const CNullEventRenderer::m_pszMoreInfoURL        = HXVER_MOREINFO;
const char* const CNullEventRenderer::m_ppszStreamMimeTypes[] = {"application/x-pn-realevent", NULL};


CNullEventRenderer::CNullEventRenderer()
    : m_lRefCount(0)
{
}

CNullEventRenderer::~CNullEventRenderer()
{
}

STDMETHODIMP_(ULONG32) CNullEventRenderer::AddRef()
{
    return InterlockedIncrement(&m_lRefCount);
}

STDMETHODIMP_(ULONG32) CNullEventRenderer::Release()
{
    if (InterlockedDecrement(&m_lRefCount) > 0)
    {
        return m_lRefCount;
    }

    delete this;
    return 0;
}

STDMETHODIMP CNullEventRenderer::QueryInterface(REFIID riid, void** ppvObj)
{
    HX_RESULT retVal = HXR_FAIL;

    if (ppvObj)
    {
        // Set defaults
        retVal  = HXR_OK;
        *ppvObj = NULL;
        // Switch on iid
        if (IsEqualIID(riid, IID_IUnknown))
        {
            AddRef();
            *ppvObj = (IUnknown*)(IHXPlugin*)this;
        }
        else if (IsEqualIID(riid, IID_IHXPlugin))
        {
            AddRef();
            *ppvObj = (IHXPlugin*)this;
        }
        else if (IsEqualIID(riid, IID_IHXRenderer))
        {
            AddRef();
            *ppvObj = (IHXRenderer*)this;
        }
        else
        {
            retVal = HXR_NOINTERFACE;
        }
    }

    return retVal;
}

STDMETHODIMP CNullEventRenderer::InitPlugin(IUnknown* pContext)
{
    return HXR_OK;
}

STDMETHODIMP CNullEventRenderer::GetPluginInfo(REF(BOOL)        bLoadMultiple,
                                               REF(const char*) pDescription,
                                               REF(const char*) pCopyright,
                                               REF(const char*) pMoreInfoURL,
                                               REF(ULONG32)     ulVersionNumber)
{
    bLoadMultiple   = TRUE;
    pDescription    = (const char*) m_pszDescription;
    pCopyright      = (const char*) m_pszCopyright;
    pMoreInfoURL    = (const char*) m_pszMoreInfoURL;
    ulVersionNumber = TARVER_ULONG32_VERSION;

    return HXR_OK;
}

STDMETHODIMP CNullEventRenderer::GetRendererInfo(REF(const char**) pStreamMimeTypes,
                                                 REF(UINT32)       unInitialGranularity)
{
    pStreamMimeTypes     = (const char**) m_ppszStreamMimeTypes;
    unInitialGranularity = 100;

    return HXR_OK;
}

STDMETHODIMP CNullEventRenderer::StartStream(IHXStream* pStream, IHXPlayer* pPlayer)
{
    return HXR_OK;
}

STDMETHODIMP CNullEventRenderer::EndStream()
{
    return HXR_OK;
}

STDMETHODIMP CNullEventRenderer::OnHeader(IHXValues* pHeader)
{
    return HXR_OK;
}

STDMETHODIMP CNullEventRenderer::OnPacket(IHXPacket* pPacket, LONG32 lTimeOffset)
{
    return HXR_OK;
}

STDMETHODIMP CNullEventRenderer::OnTimeSync(ULONG32 ulTime)
{
    return HXR_OK;
}

STDMETHODIMP CNullEventRenderer::OnPreSeek(ULONG32 ulOldTime, ULONG32 ulNewTime)
{
    return HXR_OK;
}

STDMETHODIMP CNullEventRenderer::OnPostSeek(ULONG32 ulOldTime, ULONG32 ulNewTime)
{
    return HXR_OK;
}

STDMETHODIMP CNullEventRenderer::OnPause(ULONG32 ulTime)
{
    return HXR_OK;
}

STDMETHODIMP CNullEventRenderer::OnBegin(ULONG32 ulTime)
{
    return HXR_OK;
}

STDMETHODIMP CNullEventRenderer::OnBuffering(ULONG32 ulFlags, UINT16 unPercentComplete)
{
    return HXR_OK;
}

STDMETHODIMP CNullEventRenderer::GetDisplayType(REF(HX_DISPLAY_TYPE) ulFlags,
                                                REF(IHXBuffer*)      pBuffer)
{
    ulFlags = HX_DISPLAY_NONE;

    return HXR_OK;
}

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

HX_RESULT STDAPICALLTYPE CNullEventRenderer::HXCreateInstance(IUnknown** ppUnk)
{
    HX_RESULT retVal = HXR_FAIL;

    if (ppUnk)
    {
        CNullEventRenderer* pObj = new CNullEventRenderer();
        if (pObj)
        {
            retVal = pObj->QueryInterface(IID_IUnknown, (void**) ppUnk);
            if (FAILED(retVal))
            {
                HX_DELETE(pObj);
            }
        }
    }

    return retVal;
}

⌨️ 快捷键说明

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