audio.h
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:4k
源码类别:

Windows CE

开发平台:

C/C++

  1. /*****************************************************************************
  2.  *
  3.  * This program is free software ; you can redistribute it and/or modify
  4.  * it under the terms of the GNU General Public License as published by
  5.  * the Free Software Foundation; either version 2 of the License, or
  6.  * (at your option) any later version.
  7.  *
  8.  * This program is distributed in the hope that it will be useful,
  9.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11.  * GNU General Public License for more details.
  12.  *
  13.  * You should have received a copy of the GNU General Public License
  14.  * along with this program; if not, write to the Free Software
  15.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  16.  *
  17.  * $Id: audio.h 304 2005-10-20 11:02:59Z picard $
  18.  *
  19.  * The Core Pocket Media Player
  20.  * Copyright (c) 2004-2005 Gabor Kovacs
  21.  *
  22.  ****************************************************************************/
  23. #ifndef __AUDIO_H
  24. #define __AUDIO_H
  25. #define AUDIOFMT_PCM 0x01
  26. #define AUDIOFMT_ADPCM_MS 0x02
  27. #define AUDIOFMT_ALAW 0x06
  28. #define AUDIOFMT_MULAW 0x07
  29. #define AUDIOFMT_ADPCM_IMA 0x11
  30. #define AUDIOFMT_ADPCM_IMA_QT 0x10011
  31. #define AUDIOFMT_ADPCM_G726 0x45
  32. #define AUDIOFMT_MP2 0x50
  33. #define AUDIOFMT_MP3 0x55
  34. #define AUDIOFMT_MSA 0x160
  35. #define AUDIOFMT_WMA9 0x161
  36. #define AUDIOFMT_WMA9PRO 0x162
  37. #define AUDIOFMT_WMA9LL 0x163
  38. #define AUDIOFMT_WMA9V 0x0A
  39. #define AUDIOFMT_A52 0x2000
  40. #define AUDIOFMT_AAC 0xAAC0
  41. #define AUDIOFMT_QDESIGN2 0x450
  42. #define AUDIOFMT_TTA 0x77A1
  43. // not sure about this...
  44. #define AUDIOFMT_AMR_NB 0x57
  45. #define AUDIOFMT_AMR_WB 0x58
  46. #define AUDIOFMT_VORBIS_MODE1 0x674F
  47. #define AUDIOFMT_VORBIS_MODE1P 0x676F
  48. #define AUDIOFMT_VORBIS_MODE2 0x6750
  49. #define AUDIOFMT_VORBIS_MODE2P 0x6770
  50. #define AUDIOFMT_VORBIS_MODE3 0x6751
  51. #define AUDIOFMT_VORBIS_MODE3P 0x6771
  52. #define AUDIOFMT_VORBIS_PACKET 0x2674F
  53. #define AUDIOFMT_VORBIS_INTERNAL_VIDEO 0x1674F
  54. #define AUDIOFMT_VORBIS_INTERNAL_AUDIO 0x3674F
  55. // not official! just internal usage
  56. #define AUDIOFMT_QCELP 0xCC00
  57. #define AUDIOFMT_SPEEX 0xCD00
  58. #define SPEED_ONE (1<<16)
  59. // pcm flags
  60. #define PCM_SWAPPEDSTEREO 0x0001
  61. #define PCM_PLANES 0x0002
  62. #define PCM_UNSIGNED 0x0004
  63. #define PCM_ONLY_LEFT 0x0008
  64. #define PCM_ONLY_RIGHT 0x0010
  65. #define PCM_PACKET_BASED 0x0020
  66. #define PCM_SWAPEDBYTES 0x0040
  67. #define PCM_FLOAT 0x0080
  68. #define PCM_LIFEDRIVE_FIX 0x1000
  69. typedef struct audio
  70. {
  71. int Format;
  72. int Channels;
  73. int SampleRate;
  74. int BlockAlign;
  75. int Flags;
  76. int Bits;
  77. int FracBits;
  78. } audio;
  79. DLL void PCM_Init();
  80. DLL void PCM_Done();
  81. DLL struct pcm_soft* PCMCreate(const audio* DstFormat, const audio* SrcFormat, bool_t Dither, bool_t UseVolume);
  82. DLL void PCMReset(struct pcm_soft* Handle);
  83. DLL void PCMConvert(struct pcm_soft* Handle, const planes Dst, const constplanes Src, int* DstLength, int* SrcLength, int Speed, int Volume);
  84. DLL int PCMDstLength(struct pcm_soft* Handle, int SrcLength);
  85. DLL void PCMRelease(struct pcm_soft* Handle);
  86. //---------------------------------------------------------------
  87. // audio output (abstract)
  88. #define STEREO_NORMAL 0
  89. #define STEREO_SWAPPED 1
  90. #define STEREO_JOINED 2
  91. #define STEREO_LEFT 3
  92. #define STEREO_RIGHT 4
  93. #define AOUT_CLASS FOURCC('A','O','U','T')
  94. // output volume (int 0..100)
  95. #define AOUT_VOLUME 0x51
  96. // volume mute (bool_t)
  97. #define AOUT_MUTE 0x52
  98. // panning (int)
  99. #define AOUT_PAN 0x5C
  100. // preamp (int)
  101. #define AOUT_PREAMP 0x5D
  102. // quality (int enum string)
  103. #define AOUT_QUALITY 0x53
  104. // stereo mode (int enum string)
  105. #define AOUT_STEREO 0x59
  106. // video mode for buffer length (bool)
  107. #define AOUT_MODE 0x5A
  108. // audio device as timer
  109. #define AOUT_TIMER 0x5B
  110. void Audio_Init();
  111. void Audio_Done();
  112. DLL int AOutEnum(void* p, int* No, datadef* Param);
  113. #endif