qtpktasmstub.cpp
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:3k
源码类别:

Symbian

开发平台:

Visual C++

  1. /****************************************************************************
  2.  * 
  3.  *  $Id: qtpktasmstub.cpp,v 1.5 2003/08/01 22:36:56 jbloedow Exp $
  4.  *
  5.  *  Copyright (C) 1995-1999 RealNetworks, Inc. All rights reserved.
  6.  *  
  7.  *  http://www.real.com/devzone
  8.  *
  9.  *  This program contains proprietary 
  10.  *  information of Progressive Networks, Inc, and is licensed
  11.  *  subject to restrictions on use and distribution.
  12.  *
  13.  *
  14.  *  Packet Assembler
  15.  *
  16.  */
  17. /****************************************************************************
  18.  *  Includes
  19.  */
  20. #define QTASM_MAX_SEGMENT_FRAG   20
  21. /****************************************************************************
  22.  *  Includes
  23.  */
  24. #include "qtffplin.h"
  25. #include "qtpktasm.h"
  26. #include "qtffrefcounter.h"
  27. /****************************************************************************
  28.  *  Class CQTPacketAssembler
  29.  */
  30. /****************************************************************************
  31.  *  Constructor/Destructor
  32.  */
  33. CQTPacketAssembler::CQTPacketAssembler(void)
  34.     : m_lRefCount(0)
  35.     , m_pSample(NULL)
  36.     , m_pHintTrack(NULL)
  37.     , m_pDataTrack(NULL)
  38.     , m_pClassFactory(NULL)
  39.     , m_pFileFormat(NULL)
  40.     , m_pPacket(NULL)
  41.     , m_pCurrentSegmentStart(NULL)
  42.     , m_ulCurrentSegmentSize(0)
  43.     , m_ulCurrentSegmentIdx(0)
  44.     , m_ulSegmentFragments(0)
  45. {
  46.     g_nRefCount_qtff++;
  47. }
  48. CQTPacketAssembler::~CQTPacketAssembler()
  49. {
  50.     g_nRefCount_qtff--;
  51. }
  52. /****************************************************************************
  53.  *  Main Interface
  54.  */
  55. /****************************************************************************
  56.  *  Init
  57.  */
  58. HX_RESULT CQTPacketAssembler::Init(CQTFileFormat* pFileFormat)
  59. {
  60.     return HXR_OK;
  61. }
  62. /****************************************************************************
  63.  *  SegmentReady
  64.  */
  65. HX_RESULT CQTPacketAssembler::SegmentReady(HX_RESULT status,
  66.    IHXBuffer *pBuffer,
  67.    ULONG32 ulOffset,
  68.    ULONG32 ulSize)
  69. {
  70.     return HXR_NOTIMPL;
  71. }
  72. /****************************************************************************
  73.  *  IUnknown methods
  74.  */
  75. /////////////////////////////////////////////////////////////////////////
  76. //  Method:
  77. // IUnknown::QueryInterface
  78. //
  79. STDMETHODIMP CQTPacketAssembler::QueryInterface(REFIID riid, void** ppvObj)
  80. {
  81.     if (IsEqualIID(riid, IID_IUnknown))
  82.     {
  83. AddRef();
  84. *ppvObj = this;
  85. return HXR_OK;
  86.     }
  87.     *ppvObj = NULL;
  88.     return HXR_NOINTERFACE;
  89. }
  90. /////////////////////////////////////////////////////////////////////////
  91. //  Method:
  92. // IUnknown::AddRef
  93. //
  94. STDMETHODIMP_(ULONG32) CQTPacketAssembler::AddRef()
  95. {
  96.     return InterlockedIncrement(&m_lRefCount);
  97. }
  98. /////////////////////////////////////////////////////////////////////////
  99. //  Method:
  100. // IUnknown::Release
  101. //
  102. STDMETHODIMP_(ULONG32) CQTPacketAssembler::Release()
  103. {
  104.     if (InterlockedDecrement(&m_lRefCount) > 0)
  105.     {
  106.         return m_lRefCount;
  107.     }
  108.     delete this;
  109.     return 0;
  110. }