pntypes.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:13k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /****************************************************************************
  2.  * 
  3.  *  $Id: pntypes.h,v 1.1 2003/05/30 02:17:36 gabest 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.  *  This file defines data types that are too be used in all cross-platform
  14.  *  Progressive Networks modules.
  15.  *
  16.  */
  17. #ifndef _PNTYPES_H_
  18. #define _PNTYPES_H_
  19. #if (defined(_MSC_VER) && (_MSC_VER > 1100) && defined(_BASETSD_H_))
  20. //#error For VC++ 6.0 or higher you must include pntypes.h before other windows header files.
  21. #endif
  22. #if defined _WINDOWS || defined _OSF1 || defined _ALPHA
  23. #ifndef RN_LITTLE_ENDIAN
  24. #define RN_LITTLE_ENDIAN 1
  25. #endif
  26. #ifndef RN_BIG_ENDIAN 
  27. #define RN_BIG_ENDIAN    0
  28. #endif
  29. #else
  30. #ifndef RN_LITTLE_ENDIAN
  31. #define RN_LITTLE_ENDIAN 0
  32. #endif
  33. #ifndef RN_BIG_ENDIAN 
  34. #define RN_BIG_ENDIAN    1
  35. #endif
  36. #endif /* !_WINDOWS || !_OSF1 || !_ALPHA */
  37. typedef signed char             INT8;   /* signed 8 bit value */
  38. typedef unsigned char           UINT8;  /* unsigned 8 bit value */
  39. typedef short int               INT16;  /* signed 16 bit value */
  40. typedef unsigned short int      UINT16; /* unsigned 16 bit value */
  41. typedef signed int              INT32;  /* signed 32 bit value */
  42. typedef unsigned int UINT32; /* unsigned 32 bit value */
  43. typedef unsigned int            UINT;
  44. #define __LONG_MAX__ 2147483647
  45. #ifndef TRUE
  46. #define TRUE 1
  47. #endif
  48. #ifndef FALSE
  49. #define FALSE 1
  50. #endif
  51. #ifndef BOOL
  52. typedef int     BOOL;                   /* signed int value (0 or 1) */
  53. #endif
  54. #endif /* _VXWORKS */
  55. #define ARE_BOOLS_EQUAL(a,b) (((a) && (b)) || (!(a) && !(b)))
  56. #ifndef PN_BITFIELD
  57. typedef unsigned char PN_BITFIELD;
  58. #endif
  59. #if defined __alpha__
  60. typedef long int                INT64;
  61. #elif defined _WINDOWS 
  62. typedef __int64 INT64;
  63. #else
  64. typedef long long INT64;
  65. #endif /* _WINDOWS */
  66. /*
  67.  * Added for ease of reading.
  68.  * Instead of using __MWERKS__ you can  now use _MACINTOSH
  69.  */
  70. #ifdef __MWERKS__
  71.     #if __dest_os==__macos
  72. #ifndef _MACINTOSH
  73. #define _MACINTOSH  1
  74. #ifdef powerc 
  75. #define _MACPPC
  76. #else
  77. #define _MAC68K
  78. #endif
  79. #endif
  80.     #endif
  81. #endif
  82. #if defined (_SCO_SV) && !defined (MAXPATHLEN)
  83. #include <limits.h>
  84. #define MAXPATHLEN    _POSIX_PATH_MAX
  85. #define PATH_MAX      _POSIX_PATH_MAX
  86. #endif
  87. #ifdef _SCO_UW
  88. #include <stdio.h> //for sprintf
  89. #endif
  90. #ifdef __cplusplus
  91. extern "C" {            /* Assume C declarations for C++ */
  92. #endif  /* __cplusplus */
  93. #define LANGUAGE_CODE "EN"
  94. #ifdef _WIN16
  95. #define MAX_PATH 260
  96. #define PRODUCT_ID "play16"
  97. #define PLUS_PRODUCT_ID "plus16"
  98. #else
  99. #define PRODUCT_ID "play32"
  100. #define PLUS_PRODUCT_ID "plus32"
  101. #endif
  102. #define MAX_DISPLAY_NAME        256
  103. #define PN_INVALID_VALUE (ULONG32)0xffffffff
  104. #define PN_DELETE(x) ((x) ? (delete (x), (x) = 0) : 0)
  105. #define PN_VECTOR_DELETE(x) ((x) ? (delete [] (x), (x) = 0) : 0)
  106. #define PN_RELEASE(x) ((x) ? ((x)->Release(), (x) = 0) : 0)
  107. #define RA_FILE_MAGIC_NUMBER    0x2E7261FDL /* RealAudio File Identifier */
  108. #define RM_FILE_MAGIC_NUMBER    0x2E524D46L /* RealMedia File Identifier */
  109. #define RIFF_FILE_MAGIC_NUMBER  0x52494646L /* RIFF (AVI etc.) File Identifier */
  110. typedef INT32   LONG32;                 /* signed 32 bit value */
  111. typedef UINT32  ULONG32;                /* unsigned 32 bit value */
  112. #ifndef _VXWORKS
  113. typedef UINT8   UCHAR;                  /* unsigned 8 bit value */
  114. #endif
  115. //typedef INT8    CHAR;                   /* signed 8 bit value */
  116. typedef UINT8   BYTE;
  117. typedef INT32   long32;
  118. typedef UINT32  u_long32;
  119. typedef INT8    Int8;
  120. typedef UINT8   u_Int8;
  121. typedef INT16   Int16;
  122. typedef UINT16  u_Int16;
  123. typedef INT32   Int32;
  124. typedef UINT32  u_Int32;
  125. typedef ULONG32                 UFIXED32;           /* FIXED point value  */
  126. #define FLOAT_TO_FIXED(x)   ((UFIXED32) ((x) * (1L << 16) + 0.5))
  127. #define FIXED_TO_FLOAT(x)   ((float) ((((float)x)/ (float)(1L <<16))))
  128. /* 
  129.  * UFIXED32 is a 32 value where the upper 16 bits are the unsigned integer 
  130.  * portion of value, and the lower 16 bits are the fractional part of the 
  131.  * value 
  132.  */
  133. typedef const char*             PCSTR;
  134. /*
  135.  *  FOURCC's are 32bit codes used in Tagged File formats like
  136.  *  the RealMedia file format.
  137.  */
  138. #ifndef PN_FOURCC
  139. #define PN_FOURCC( ch0, ch1, ch2, ch3 )                                    
  140.                 ( (UINT32)(UINT8)(ch0) | ( (UINT32)(UINT8)(ch1) << 8 ) |        
  141.                 ( (UINT32)(UINT8)(ch2) << 16 ) | ( (UINT32)(UINT8)(ch3) << 24 ) )
  142. #endif
  143. typedef UINT16 PrefKey;
  144. #ifdef __cplusplus
  145. }
  146. #endif  /* __cplusplus */
  147. /*--------------------------------------------------------------------------
  148. |   ZeroInit - initializes a block of memory with zeros
  149. --------------------------------------------------------------------------*/
  150. #define ZeroInit(pb)    memset((void *)pb,0,sizeof(*(pb))) 
  151. #ifndef __MACTYPES__
  152. typedef unsigned char   Byte;
  153. #endif
  154. /*
  155. /////////////////////////////////////////////////////////////////////////////
  156. // PNEXPORT needed for RA.H and RAGUI.H, should be able to be defined
  157. // and used in cross platform code...
  158. /////////////////////////////////////////////////////////////////////////////
  159. */
  160. #define PNEXPORT            __declspec(dllexport) __stdcall
  161. #define PNEXPORT_PTR        __stdcall *
  162. typedef void (*RANOTIFYPROC)( void* );
  163. #if defined(EXPORT_CLASSES) && defined(_WINDOWS)     
  164. #ifdef _WIN32
  165. #define PNEXPORT_CLASS __declspec(dllexport)
  166. #else
  167. #define PNEXPORT_CLASS __export
  168. #endif // _WIN32
  169. #else
  170. #define PNEXPORT_CLASS
  171. #endif // EXPORT_CLASSES 
  172. /*
  173.  *  STDMETHODCALLTYPE
  174.  */
  175. #ifndef STDMETHODCALLTYPE
  176. #if defined(_WIN32) || defined(_MPPC_)
  177. #ifdef _MPPC_
  178. #define STDMETHODCALLTYPE       __cdecl
  179. #else
  180. #define STDMETHODCALLTYPE       __stdcall
  181. #endif
  182. #elif defined(_WIN16)
  183. // XXXTW I made the change below on 5/18/98.  The __export was causing 
  184. //       conflicts with duplicate CPNBuffer methods in being linked into
  185. //       rpupgrd and rpdestpn.  Also, the warning was "export imported".
  186. //       This was fixed by removing the __export.  The __export is also
  187. //       causing the same problem in pndebug methods.
  188. //#define STDMETHODCALLTYPE       __export far _cdecl
  189. #define STDMETHODCALLTYPE       far _cdecl
  190. #else
  191. #define STDMETHODCALLTYPE
  192. #endif
  193. #endif
  194. /*
  195.  *  STDMETHODVCALLTYPE  (V is for variable number of arguments)
  196.  */
  197. #ifndef STDMETHODVCALLTYPE
  198. #if defined(_WINDOWS) || defined(_MPPC_)
  199. #define STDMETHODVCALLTYPE      __cdecl
  200. #else
  201. #define STDMETHODVCALLTYPE
  202. #endif
  203. #endif
  204. /*
  205.  *  STDAPICALLTYPE
  206.  */
  207. #ifndef STDAPICALLTYPE
  208. #if defined(_WIN32) || defined(_MPPC_)
  209. #define STDAPICALLTYPE          __stdcall
  210. #elif defined(_WIN16)
  211. #define STDAPICALLTYPE          __export FAR PASCAL
  212. #else
  213. #define STDAPICALLTYPE
  214. #endif
  215. #endif
  216. /*
  217.  *  STDAPIVCALLTYPE (V is for variable number of arguments)
  218.  */
  219. #ifndef STDAPIVCALLTYPE
  220. #if defined(_WINDOWS) || defined(_MPPC_)
  221. #define STDAPIVCALLTYPE         __cdecl
  222. #else
  223. #define STDAPIVCALLTYPE
  224. #endif
  225. #endif
  226. /*
  227. /////////////////////////////////////////////////////////////////////////////
  228. //
  229. //  Macro:
  230. //
  231. //      PN_GET_MAJOR_VERSION()
  232. //
  233. //  Purpose:
  234. //
  235. //      Returns the Major version portion of the encoded product version 
  236. //      of the RealAudio application interface DLL previously returned from
  237. //      a call to RaGetProductVersion().
  238. //
  239. //  Parameters:
  240. //
  241. //      prodVer
  242. //      The encoded product version of the RealAudio application interface 
  243. //      DLL previously returned from a call to RaGetProductVersion().
  244. //
  245. //  Return:
  246. //
  247. //      The major version number of the RealAudio application interface DLL
  248. //
  249. //
  250. */
  251. #define PN_GET_MAJOR_VERSION(prodVer)   ((prodVer >> 28) & 0xF)
  252. /*
  253. /////////////////////////////////////////////////////////////////////////////
  254. //
  255. //  Macro:
  256. //
  257. //      PN_GET_MINOR_VERSION()
  258. //
  259. //  Purpose:
  260. //
  261. //      Returns the minor version portion of the encoded product version 
  262. //      of the RealAudio application interface DLL previously returned from
  263. //      a call to RaGetProductVersion().
  264. //
  265. //  Parameters:
  266. //
  267. //      prodVer
  268. //      The encoded product version of the RealAudio application interface 
  269. //      DLL previously returned from a call to RaGetProductVersion().
  270. //
  271. //  Return:
  272. //
  273. //      The minor version number of the RealAudio application interface DLL
  274. //
  275. //
  276. */
  277. #define PN_GET_MINOR_VERSION(prodVer)   ((prodVer >> 20) & 0xFF)
  278. /*
  279. /////////////////////////////////////////////////////////////////////////////
  280. //
  281. //  Macro:
  282. //
  283. //      PN_GET_RELEASE_NUMBER()
  284. //
  285. //  Purpose:
  286. //
  287. //      Returns the release number portion of the encoded product version 
  288. //      of the RealAudio application interface DLL previously returned from
  289. //      a call to RaGetProductVersion().
  290. //
  291. //  Parameters:
  292. //
  293. //      prodVer
  294. //      The encoded product version of the RealAudio application interface 
  295. //      DLL previously returned from a call to RaGetProductVersion().
  296. //
  297. //  Return:
  298. //
  299. //      The release number of the RealAudio application interface DLL
  300. //
  301. //
  302. */
  303. #define PN_GET_RELEASE_NUMBER(prodVer)  ((prodVer >> 12) & 0xFF)
  304. /*
  305. /////////////////////////////////////////////////////////////////////////////
  306. //
  307. //  Macro:
  308. //
  309. //      PN_GET_BUILD_NUMBER()
  310. //
  311. //  Purpose:
  312. //
  313. //      Returns the build number portion of the encoded product version 
  314. //      of the RealAudio application interface DLL previously returned from
  315. //      a call to RaGetProductVersion().
  316. //
  317. //  Parameters:
  318. //
  319. //      prodVer
  320. //      The encoded product version of the RealAudio application interface 
  321. //      DLL previously returned from a call to RaGetProductVersion().
  322. //
  323. //  Return:
  324. //
  325. //      The build number of the RealAudio application interface DLL
  326. //
  327. //
  328. */
  329. #define PN_GET_BUILD_NUMBER(prodVer)    (prodVer & 0xFFF)
  330. /*
  331. /////////////////////////////////////////////////////////////////////////////
  332. //
  333. //  Macro:
  334. //
  335. //      PN_ENCODE_PROD_VERSION()
  336. //
  337. //  Purpose:
  338. //
  339. //      Encodes a major version, minor version, release number, and build
  340. //      number into a product version for testing against the product version
  341. //      of the RealAudio application interface DLL returned from a call to 
  342. //      RaGetProductVersion().
  343. //
  344. //  Parameters:
  345. //
  346. //      major
  347. //      The major version number to encode.
  348. //
  349. //      mimor
  350. //      The minor version number to encode.
  351. //
  352. //      release
  353. //      The release number to encode.
  354. //
  355. //      build
  356. //      The build number to encode.
  357. //
  358. //  Return:
  359. //
  360. //      The encoded product version.
  361. //
  362. //  NOTES:
  363. //      
  364. //      Macintosh DEVELOPERS especially, make sure when using the PN_ENCODE_PROD_VERSION
  365. //      that you are passing a ULONG32 or equivalent for each of the parameters. 
  366. //      By default a number passed in as a constant is a short unless it requires more room,
  367. //      so designate the constant as a long by appending a L to the end of it.  
  368. //      Example:
  369. //          WORKS:
  370. //              PN_ENCODE_VERSION(2L,1L,1L,0L);
  371. //
  372. //          DOES NOT WORK:
  373. //              PN_ENCODE_VERSION(2,1,1,0);
  374. //
  375. */
  376. #define PN_ENCODE_PROD_VERSION(major,minor,release,build)   
  377.             ((ULONG32)((ULONG32)major << 28) | ((ULONG32)minor << 20) | 
  378.             ((ULONG32)release << 12) | (ULONG32)build)
  379. #define PN_ENCODE_ADD_PRIVATE_FIELD(ulversion,ulprivate) 
  380. ((ULONG32)((ULONG32)(ulversion) & (UINT32)0xFFFFFF00) | (ULONG32)(ulprivate) )
  381. #define PN_EXTRACT_PRIVATE_FIELD(ulversion)(ulversion & (UINT32)0xFF)
  382. #define PN_EXTRACT_MAJOR_VERSION(ulversion) ((ulversion)>>28)
  383. #define PN_EXTRACT_MINOR_VERSION(ulversion) (((ulversion)>>20) & (UINT32)0xFF)
  384. #ifdef _AIX
  385.     typedef int                 tv_sec_t;
  386.     typedef int                 tv_usec_t;
  387. #elif (defined _HPUX)
  388.     typedef UINT32              tv_sec_t;
  389.     typedef INT32               tv_usec_t;
  390. #else
  391.     typedef INT32               tv_sec_t;
  392.     typedef INT32               tv_usec_t;
  393. #endif /* _AIX */
  394. #ifndef VOLATILE
  395. #define VOLATILE volatile
  396. #endif
  397. #ifdef __GNUC__
  398. #define PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME friend class SilenceGCCWarnings;
  399. #else
  400. #define PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME
  401. #endif
  402. typedef ULONG32 PNXRESOURCE;
  403. typedef ULONG32 PNXHANDLE;
  404. typedef ULONG32 PNXIMAGE;
  405. // Macro which indicates that a particular variable is unused. Use this to
  406. // avoid compiler warnings.
  407. //#define UNUSED(x)
  408. /*
  409.  * For VC++ 6.0 and higher we need to include this substitute header file
  410.  * in place of the standard header file basetsd.h, since this standard 
  411.  * header file conflicts with our definitions.
  412.  */
  413. #if defined(_MSC_VER) && (_MSC_VER > 1100)
  414. #include "pnbastsd.h"
  415. #ifdef _WINCE
  416. #define _TYPES_H_
  417. #endif
  418. #endif
  419. #ifdef _VXWORKS
  420. /* throw in some defines for VXWORKS */
  421. #define MAXPATHLEN 255
  422. #endif /* _PNTYPES_H_ */