legacy.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:7k
源码类别:

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. /*
  36.  * This is generated code, do not modify. Look in legacy.pm to
  37.  * make modifications
  38.  */
  39. #ifndef PMC_PREDEFINED_TYPES
  40. #define PMC_PREDEFINED_TYPES
  41. typedef char* pmc_string;
  42. struct buffer {
  43.  UINT32 len;
  44.  INT8* data;
  45. };
  46. #endif/*PMC_PREDEFINED_TYPES*/
  47. #ifndef _LEGACY_
  48. #define _LEGACY_
  49. #include "hxtypes.h"
  50. #if (!defined(_BEOS))
  51. #define int8    char
  52. #define int16   INT16
  53. #define int32   LONG32
  54. #endif
  55. #define u_int8  UCHAR
  56. #define u_int16 UINT16
  57. #define u_int32 ULONG32
  58. #define AUDIO_PCMHEADER_MAGIC_NUMBER    0x4350
  59. #define AUDIO_WAVHEADER_MAGIC_NUMBER    0x7677
  60. //This is the structure expected in the stream header for
  61. // the x-pn-wav renderer (and now in aurendr, too, to which
  62. // RTP-payload PCM audio gets sent):
  63. //
  64. class AudioPCMHEADER
  65. {
  66. public:
  67.     UINT8* pack(UINT8* buf, UINT32 &len);
  68.     UINT8* unpack(UINT8* buf, UINT32 len);
  69.     const UINT32 static_size() {return 16;}
  70.     UINT16 usVersion;
  71.     UINT16 usMagicNumberTag;
  72.     UINT16 usFormatTag;
  73.     UINT16 usChannels;
  74.     UINT32 ulSamplesPerSec;
  75.     UINT16 usBitsPerSample;
  76.     UINT16 usSampleEndianness;
  77. };
  78. inline UINT8*
  79. AudioPCMHEADER::pack(UINT8* buf, UINT32 &len)
  80. {
  81.     UINT8* off = buf;
  82.     {*off++ = (UINT8) (usVersion>>8); *off++ = (UINT8) (usVersion);}
  83.     {*off++ = (UINT8) (usMagicNumberTag>>8); *off++ = (UINT8) (usMagicNumberTag);}
  84.     {*off++ = (UINT8) (usFormatTag>>8); *off++ = (UINT8) (usFormatTag);}
  85.     {*off++ = (UINT8) (usChannels>>8); *off++ = (UINT8) (usChannels);}
  86.     {
  87. *off++ = (UINT8) (ulSamplesPerSec>>24); *off++ = (UINT8) (ulSamplesPerSec>>16);
  88. *off++ = (UINT8) (ulSamplesPerSec>>8); *off++ = (UINT8) (ulSamplesPerSec);
  89.     }
  90.     {*off++ = (UINT8) (usBitsPerSample>>8); *off++ = (UINT8) (usBitsPerSample);}
  91.     {*off++ = (UINT8) (usSampleEndianness>>8); *off++ = (UINT8) (usSampleEndianness);}
  92.     len = off-buf;
  93.     return off;
  94. }
  95. inline UINT8*
  96. AudioPCMHEADER::unpack(UINT8* buf, UINT32 len)
  97. {
  98.     if (len <= 0)
  99. return 0;
  100.     UINT8* off = buf;
  101.     {usVersion = *off++<<8; usVersion |= *off++;}
  102.     {usMagicNumberTag = *off++<<8; usMagicNumberTag |= *off++;}
  103.     {usFormatTag = *off++<<8; usFormatTag |= *off++;}
  104.     {usChannels = *off++<<8; usChannels |= *off++;}
  105.     {
  106. ulSamplesPerSec = ((UINT32)*off++)<<24; ulSamplesPerSec |= ((UINT32)*off++)<<16;
  107. ulSamplesPerSec |= ((UINT32)*off++)<<8; ulSamplesPerSec |= ((UINT32)*off++);
  108.     }
  109.     {usBitsPerSample = *off++<<8; usBitsPerSample |= *off++;}
  110.     {usSampleEndianness = *off++<<8; usSampleEndianness |= *off++;}
  111.     return off;
  112. }
  113. //This is essentially a windows WAVEFORMATEX structure.  It is
  114. // expected by the x-pn-windows-acm renderer.
  115. //
  116. class AudioWAVEHEADER
  117. {
  118. public:
  119.     UINT8* pack(UINT8* buf, UINT32 &len);
  120.     UINT8* unpack(UINT8* buf, UINT32 len);
  121.     const UINT32 static_size() {return 22;}
  122.     UINT16 usVersion;
  123.     UINT16 usMagicNumberTag;
  124.     UINT16 usFormatTag;
  125.     UINT16 usChannels;
  126.     UINT32 ulSamplesPerSec;
  127.     UINT32 ulAvgBytesPerSec;
  128.     UINT16 usBlockAlign;
  129.     UINT16 usBitsPerSample;
  130.     UINT16 usCbSize;
  131. };
  132. inline UINT8*
  133. AudioWAVEHEADER::pack(UINT8* buf, UINT32 &len)
  134. {
  135.     UINT8* off = buf;
  136.     {*off++ = (UINT8) (usVersion>>8); *off++ = (UINT8) (usVersion);}
  137.     {*off++ = (UINT8) (usMagicNumberTag>>8); *off++ = (UINT8) (usMagicNumberTag);}
  138.     {*off++ = (UINT8) (usFormatTag>>8); *off++ = (UINT8) (usFormatTag);}
  139.     {*off++ = (UINT8) (usChannels>>8); *off++ = (UINT8) (usChannels);}
  140.     {
  141. *off++ = (UINT8) (ulSamplesPerSec>>24); *off++ = (UINT8) (ulSamplesPerSec>>16);
  142. *off++ = (UINT8) (ulSamplesPerSec>>8); *off++ = (UINT8) (ulSamplesPerSec);
  143.     }
  144.     {
  145. *off++ = (UINT8) (ulAvgBytesPerSec>>24); *off++ = (UINT8) (ulAvgBytesPerSec>>16);
  146. *off++ = (UINT8) (ulAvgBytesPerSec>>8); *off++ = (UINT8) (ulAvgBytesPerSec);
  147.     }
  148.     {*off++ = (UINT8) (usBlockAlign>>8); *off++ = (UINT8) (usBlockAlign);}
  149.     {*off++ = (UINT8) (usBitsPerSample>>8); *off++ = (UINT8) (usBitsPerSample);}
  150.     {*off++ = (UINT8) (usCbSize>>8); *off++ = (UINT8) (usCbSize);}
  151.     len = off-buf;
  152.     return off;
  153. }
  154. inline UINT8*
  155. AudioWAVEHEADER::unpack(UINT8* buf, UINT32 len)
  156. {
  157.     if (len <= 0)
  158. return 0;
  159.     UINT8* off = buf;
  160.     {usVersion = *off++<<8; usVersion |= *off++;}
  161.     {usMagicNumberTag = *off++<<8; usMagicNumberTag |= *off++;}
  162.     {usFormatTag = *off++<<8; usFormatTag |= *off++;}
  163.     {usChannels = *off++<<8; usChannels |= *off++;}
  164.     {
  165. ulSamplesPerSec = ((UINT32)*off++)<<24; ulSamplesPerSec |= ((UINT32)*off++)<<16;
  166. ulSamplesPerSec |= ((UINT32)*off++)<<8; ulSamplesPerSec |= ((UINT32)*off++);
  167.     }
  168.     {
  169. ulAvgBytesPerSec = ((UINT32)*off++)<<24; ulAvgBytesPerSec |= ((UINT32)*off++)<<16;
  170. ulAvgBytesPerSec |= ((UINT32)*off++)<<8; ulAvgBytesPerSec |= ((UINT32)*off++);
  171.     }
  172.     {usBlockAlign = *off++<<8; usBlockAlign |= *off++;}
  173.     {usBitsPerSample = *off++<<8; usBitsPerSample |= *off++;}
  174.     {usCbSize = *off++<<8; usCbSize |= *off++;}
  175.     return off;
  176. }
  177. #endif