null_event_rend.cpp
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:6k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: RCSL 1.0/RPSL 1.0
  3.  *
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
  5.  *
  6.  * The contents of this file, and the files included with this file, are
  7.  * subject to the current version of the RealNetworks Public Source License
  8.  * Version 1.0 (the "RPSL") available at
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed
  10.  * the file under the RealNetworks Community Source License Version 1.0
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
  12.  * in which case the RCSL will apply. You may also obtain the license terms
  13.  * directly from RealNetworks.  You may not use this file except in
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or
  16.  * RCSL for the rights, obligations and limitations governing use of the
  17.  * contents of the file.
  18.  *
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the
  20.  * developer of the Original Code and owns the copyrights in the portions
  21.  * it created.
  22.  *
  23.  * This file, and the files included with this file, is distributed and made
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
  28.  *
  29.  * Technology Compatibility Kit Test Suite(s) Location:
  30.  *    http://www.helixcommunity.org/content/tck
  31.  *
  32.  * Contributor(s):
  33.  *
  34.  * ***** END LICENSE BLOCK ***** */
  35. #include "hxtypes.h"
  36. #include "hxcom.h"
  37. #include "ihxpckts.h"
  38. #include "hxfiles.h"
  39. #include "hxcore.h"
  40. #include "hxrendr.h"
  41. #include "hxplugn.h"
  42. #include "baseobj.h"
  43. #include "hxver.h"
  44. #include "rarender.ver"
  45. #include "null_event_rend.h"
  46. #include "hxheap.h"
  47. #ifdef _DEBUG
  48. #undef HX_THIS_FILE
  49. static const char HX_THIS_FILE[] = __FILE__;
  50. #endif
  51. const char* const CNullEventRenderer::m_pszDescription        = "Helix Null Event Renderer Plugin";
  52. const char* const CNullEventRenderer::m_pszCopyright          = HXVER_COPYRIGHT;
  53. const char* const CNullEventRenderer::m_pszMoreInfoURL        = HXVER_MOREINFO;
  54. const char* const CNullEventRenderer::m_ppszStreamMimeTypes[] = {"application/x-pn-realevent", NULL};
  55. CNullEventRenderer::CNullEventRenderer()
  56.     : m_lRefCount(0)
  57. {
  58. }
  59. CNullEventRenderer::~CNullEventRenderer()
  60. {
  61. }
  62. STDMETHODIMP_(ULONG32) CNullEventRenderer::AddRef()
  63. {
  64.     return InterlockedIncrement(&m_lRefCount);
  65. }
  66. STDMETHODIMP_(ULONG32) CNullEventRenderer::Release()
  67. {
  68.     if (InterlockedDecrement(&m_lRefCount) > 0)
  69.     {
  70.         return m_lRefCount;
  71.     }
  72.     delete this;
  73.     return 0;
  74. }
  75. STDMETHODIMP CNullEventRenderer::QueryInterface(REFIID riid, void** ppvObj)
  76. {
  77.     HX_RESULT retVal = HXR_FAIL;
  78.     if (ppvObj)
  79.     {
  80.         // Set defaults
  81.         retVal  = HXR_OK;
  82.         *ppvObj = NULL;
  83.         // Switch on iid
  84.         if (IsEqualIID(riid, IID_IUnknown))
  85.         {
  86.             AddRef();
  87.             *ppvObj = (IUnknown*)(IHXPlugin*)this;
  88.         }
  89.         else if (IsEqualIID(riid, IID_IHXPlugin))
  90.         {
  91.             AddRef();
  92.             *ppvObj = (IHXPlugin*)this;
  93.         }
  94.         else if (IsEqualIID(riid, IID_IHXRenderer))
  95.         {
  96.             AddRef();
  97.             *ppvObj = (IHXRenderer*)this;
  98.         }
  99.         else
  100.         {
  101.             retVal = HXR_NOINTERFACE;
  102.         }
  103.     }
  104.     return retVal;
  105. }
  106. STDMETHODIMP CNullEventRenderer::InitPlugin(IUnknown* pContext)
  107. {
  108.     return HXR_OK;
  109. }
  110. STDMETHODIMP CNullEventRenderer::GetPluginInfo(REF(BOOL)        bLoadMultiple,
  111.                                                REF(const char*) pDescription,
  112.                                                REF(const char*) pCopyright,
  113.                                                REF(const char*) pMoreInfoURL,
  114.                                                REF(ULONG32)     ulVersionNumber)
  115. {
  116.     bLoadMultiple   = TRUE;
  117.     pDescription    = (const char*) m_pszDescription;
  118.     pCopyright      = (const char*) m_pszCopyright;
  119.     pMoreInfoURL    = (const char*) m_pszMoreInfoURL;
  120.     ulVersionNumber = TARVER_ULONG32_VERSION;
  121.     return HXR_OK;
  122. }
  123. STDMETHODIMP CNullEventRenderer::GetRendererInfo(REF(const char**) pStreamMimeTypes,
  124.                                                  REF(UINT32)       unInitialGranularity)
  125. {
  126.     pStreamMimeTypes     = (const char**) m_ppszStreamMimeTypes;
  127.     unInitialGranularity = 100;
  128.     return HXR_OK;
  129. }
  130. STDMETHODIMP CNullEventRenderer::StartStream(IHXStream* pStream, IHXPlayer* pPlayer)
  131. {
  132.     return HXR_OK;
  133. }
  134. STDMETHODIMP CNullEventRenderer::EndStream()
  135. {
  136.     return HXR_OK;
  137. }
  138. STDMETHODIMP CNullEventRenderer::OnHeader(IHXValues* pHeader)
  139. {
  140.     return HXR_OK;
  141. }
  142. STDMETHODIMP CNullEventRenderer::OnPacket(IHXPacket* pPacket, LONG32 lTimeOffset)
  143. {
  144.     return HXR_OK;
  145. }
  146. STDMETHODIMP CNullEventRenderer::OnTimeSync(ULONG32 ulTime)
  147. {
  148.     return HXR_OK;
  149. }
  150. STDMETHODIMP CNullEventRenderer::OnPreSeek(ULONG32 ulOldTime, ULONG32 ulNewTime)
  151. {
  152.     return HXR_OK;
  153. }
  154. STDMETHODIMP CNullEventRenderer::OnPostSeek(ULONG32 ulOldTime, ULONG32 ulNewTime)
  155. {
  156.     return HXR_OK;
  157. }
  158. STDMETHODIMP CNullEventRenderer::OnPause(ULONG32 ulTime)
  159. {
  160.     return HXR_OK;
  161. }
  162. STDMETHODIMP CNullEventRenderer::OnBegin(ULONG32 ulTime)
  163. {
  164.     return HXR_OK;
  165. }
  166. STDMETHODIMP CNullEventRenderer::OnBuffering(ULONG32 ulFlags, UINT16 unPercentComplete)
  167. {
  168.     return HXR_OK;
  169. }
  170. STDMETHODIMP CNullEventRenderer::GetDisplayType(REF(HX_DISPLAY_TYPE) ulFlags,
  171.                                                 REF(IHXBuffer*)      pBuffer)
  172. {
  173.     ulFlags = HX_DISPLAY_NONE;
  174.     return HXR_OK;
  175. }
  176. STDMETHODIMP CNullEventRenderer::OnEndofPackets(void)
  177. {
  178.     return HXR_OK;
  179. }
  180. HX_RESULT STDAPICALLTYPE CNullEventRenderer::HXCreateInstance(IUnknown** ppUnk)
  181. {
  182.     HX_RESULT retVal = HXR_FAIL;
  183.     if (ppUnk)
  184.     {
  185.         CNullEventRenderer* pObj = new CNullEventRenderer();
  186.         if (pObj)
  187.         {
  188.             retVal = pObj->QueryInterface(IID_IUnknown, (void**) ppUnk);
  189.             if (FAILED(retVal))
  190.             {
  191.                 HX_DELETE(pObj);
  192.             }
  193.         }
  194.     }
  195.     return retVal;
  196. }