types64.h
上传用户: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. #ifndef _XDVDCOMMON_H_
  36. #define _XDVDCOMMON_H_
  37. #include "hxcom.h"
  38. #include "hxthread.h"
  39. typedef enum
  40. {
  41.     eErrorNone,             // Success
  42.     eErrorNoData,           // Not enough data to decode
  43.     eErrorInvalidArg,       // Invalid argument
  44.     eErrorInvalidSource,    // Can not decode this stream
  45.     eErrorBadSequence,      // Command issued in an illegal sequence
  46.     eErrorUnknown,          // Generic error
  47.     eErrorNoClock = -1      // Clock not available (yet)
  48. } eXDvdError;
  49. typedef enum
  50. {
  51.     eVideo,
  52.     eAudio,
  53.     eSubpicture,
  54.     eNavigation
  55. } ePacketType;
  56. typedef enum
  57. {
  58.     eMPEG1,
  59.     eMPEG2,
  60.     eAC3,
  61.     eLPCM,
  62.     eDTS
  63. } ePacketSubType;
  64. typedef enum
  65. {
  66.     eIsPlaying = 0,
  67.     eIsStopped = 1,
  68.     eIsPaused = 2
  69. } eXDvdState;
  70. typedef enum
  71. {
  72.     eXDvdScanNone,
  73.     eXDvdScanI,
  74.     eXDvdScanIP,
  75.     eXDvdScanSlowMotion
  76. } eXDvdScanMode;
  77. typedef enum
  78. {
  79.     eDimNormal,
  80.     eDimWide,
  81.     eDimFullScreen
  82. } eDimensionType;
  83. typedef enum
  84. {
  85.     eFormatLetterbox,
  86.     eFormatPanScan,
  87.     eFormatSameAsInput
  88. } eDisplayFormatType;
  89. // Packets
  90. typedef struct
  91. {
  92.     UINT8       *pData;         // Pointer to the compressed data
  93.     UINT32      lBytes;         // Size of the packet data
  94.     UINT8       *pHeader;       // Pointer to the packet header
  95.     UINT32      lHeaderBytes;   // Size of the packet including the header
  96.     UINT8       *pPrivateData;  // Optional private data for packet
  97.     UINT32      lPrivBytes;     // Size of private data
  98.     
  99.     ePacketType ePacket;        // Packet type
  100.     ePacketSubType eSubtype;    // Packet data type
  101.     INT64       llDts;          // Decode time stamp
  102.     INT64       llPts;          // Display time stamp
  103.     INT64       llDelta;        // Delta to mod the timestamps    
  104.     
  105.     char        cStreamId;      // Stream id from the packet header
  106.     char        cHasDts;        // Packet has a valid decode time stamp
  107.     char        cHasPts;        // Packet has a valid display time stamp
  108. } Packet;
  109. // Highlight stuff
  110. typedef struct _XDVD_DVD_YUV
  111. {
  112. UINT8   Reserved;
  113. UINT8   Y;
  114. UINT8   U;
  115. UINT8   V;
  116. } XDVD_DVD_YUV, *PXDVD_DVD_YUV;
  117. typedef struct _XDVD_PROPERTY_SPPAL
  118. {
  119. XDVD_DVD_YUV sppal[16];
  120. } XDVD_PROPERTY_SPPAL, *PXDVD_PROPERTY_SPPAL;
  121. typedef struct _XDVD_COLCON
  122. {
  123. UINT8 emph1col:4;
  124. UINT8 emph2col:4;
  125. UINT8 backcol:4;
  126. UINT8 patcol:4;
  127. UINT8 emph1con:4;
  128. UINT8 emph2con:4;
  129. UINT8 backcon:4;
  130. UINT8 patcon:4;
  131. } XDVD_COLCON, *PXDVD_COLCON;
  132. typedef struct _XDVD_PROPERTY_SPHLI
  133. {
  134. UINT16      HLISS;      //
  135. UINT16      Reserved;
  136. UINT32      StartPTM;   // start presentation time in x/90000
  137. UINT32      EndPTM;     // end PTM in x/90000
  138. UINT16      StartX;
  139. UINT16      StartY;
  140. UINT16      StopX;
  141. UINT16      StopY;
  142. XDVD_COLCON ColCon;   // color contrast description (4 bytes as given in HLI)
  143. } XDVD_PROPERTY_SPHLI, *PXDVD_PROPERTY_SPHLI;
  144. // Helper classes
  145. class CCritSec
  146. {
  147. public:
  148.     CCritSec()  {HXMutex::MakeMutex(m_pMutex);}    
  149.     ~CCritSec() {HX_DELETE(m_pMutex);}
  150.     void        Lock(){m_pMutex->Lock();}
  151.     void        Unlock(){m_pMutex->Unlock();}
  152. protected:
  153.     HXMutex    *m_pMutex;
  154. };
  155. // Locks a critical section, and unlocks it automatically
  156. // when the lock goes out of scope
  157. class CAutoLock
  158. {
  159.     // Make copy constructor and assignment operator inaccessible
  160.     CAutoLock(const CAutoLock &refAutoLock);
  161.     CAutoLock &operator=(const CAutoLock &refAutoLock);
  162. protected:
  163.     CCritSec *m_pLock;
  164. public:
  165.     CAutoLock(CCritSec * plock)
  166.     {
  167.         m_pLock = plock;
  168.         m_pLock->Lock();
  169.     }
  170.     ~CAutoLock() {m_pLock->Unlock();}
  171. };
  172. // Basic clock.  Must implement GetTime_dw();
  173. class CClock
  174. {
  175. public:
  176.     CClock() {
  177.                 m_dwStartTime =
  178.                 m_dwStartPts = 0;
  179.                 m_lClockDelta = 0;
  180.              };
  181.     virtual ~CClock() {};
  182.     virtual UINT32  GetTime_dw()=0;
  183.     virtual void    ResetClock_v()=0;
  184.     UINT32  GetStartPts_dw() {return m_dwStartPts;};
  185.     UINT32  GetStartTime_dw() {return m_dwStartTime;};
  186.     void    SetStartTime_v(UINT32 dwTime, UINT32 dwPts) {m_dwStartTime = dwTime;
  187.                                                          m_dwStartPts = dwPts;
  188.                                                          m_lClockDelta = 0;};
  189. protected:
  190.     UINT32  m_dwStartTime,
  191.             m_dwStartPts;
  192.     INT32   m_lClockDelta;
  193. };
  194. #endif