seal 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. data/.yardopts +1 -0
  2. data/LICENSE +13 -0
  3. data/README.md +265 -0
  4. data/ext/seal/extconf.rb +45 -0
  5. data/include/al/al.h +724 -0
  6. data/include/al/alc.h +277 -0
  7. data/include/al/efx-presets.h +402 -0
  8. data/include/al/efx.h +758 -0
  9. data/include/mpg123/mpg123.h +1034 -0
  10. data/include/ogg/config_types.h +25 -0
  11. data/include/ogg/ogg.h +210 -0
  12. data/include/ogg/os_types.h +147 -0
  13. data/include/seal.h +23 -0
  14. data/include/seal/buf.h +143 -0
  15. data/include/seal/core.h +95 -0
  16. data/include/seal/efs.h +112 -0
  17. data/include/seal/err.h +93 -0
  18. data/include/seal/fmt.h +58 -0
  19. data/include/seal/listener.h +103 -0
  20. data/include/seal/raw.h +86 -0
  21. data/include/seal/rvb.h +520 -0
  22. data/include/seal/src.h +413 -0
  23. data/include/seal/stream.h +81 -0
  24. data/include/vorbis/codec.h +243 -0
  25. data/include/vorbis/vorbisfile.h +206 -0
  26. data/mpg123/AUTHORS +150 -0
  27. data/mpg123/COPYING +773 -0
  28. data/mpg123/ChangeLog +3 -0
  29. data/mpg123/INSTALL +111 -0
  30. data/mpg123/Makefile.am +99 -0
  31. data/mpg123/Makefile.in +1043 -0
  32. data/mpg123/NEWS +1200 -0
  33. data/mpg123/NEWS.libmpg123 +133 -0
  34. data/mpg123/README +203 -0
  35. data/mpg123/TODO +38 -0
  36. data/mpg123/aclocal.m4 +1168 -0
  37. data/mpg123/build/config.guess +1530 -0
  38. data/mpg123/build/config.sub +1782 -0
  39. data/mpg123/build/depcomp +707 -0
  40. data/mpg123/build/install-sh +527 -0
  41. data/mpg123/build/ltmain.sh +9655 -0
  42. data/mpg123/build/missing +330 -0
  43. data/mpg123/configure +20267 -0
  44. data/mpg123/configure.ac +2178 -0
  45. data/mpg123/doc/ACCURACY +2 -0
  46. data/mpg123/doc/BENCHMARKING +110 -0
  47. data/mpg123/doc/BUGS +3 -0
  48. data/mpg123/doc/CONTACT +17 -0
  49. data/mpg123/doc/LICENSE +22 -0
  50. data/mpg123/doc/Makefile.am +32 -0
  51. data/mpg123/doc/Makefile.in +490 -0
  52. data/mpg123/doc/PATENTS +39 -0
  53. data/mpg123/doc/README.3DNOW +56 -0
  54. data/mpg123/doc/README.gain +171 -0
  55. data/mpg123/doc/README.remote +218 -0
  56. data/mpg123/doc/ROAD_TO_LGPL +270 -0
  57. data/mpg123/doc/THANKS +13 -0
  58. data/mpg123/doc/TODO +63 -0
  59. data/mpg123/doc/doxy_examples.c +21 -0
  60. data/mpg123/doc/doxygen.conf +41 -0
  61. data/mpg123/doc/doxyhead.xhtml +12 -0
  62. data/mpg123/doc/examples/dump_seekindex.c +41 -0
  63. data/mpg123/doc/examples/extract_frames.c +92 -0
  64. data/mpg123/doc/examples/feedseek.c +238 -0
  65. data/mpg123/doc/examples/id3dump.c +178 -0
  66. data/mpg123/doc/examples/mpg123_to_wav.c +118 -0
  67. data/mpg123/doc/examples/mpglib.c +92 -0
  68. data/mpg123/doc/examples/scan.c +47 -0
  69. data/mpg123/doc/libmpg123_speed.txt +84 -0
  70. data/mpg123/equalize.dat +37 -0
  71. data/mpg123/libmpg123.pc.in +11 -0
  72. data/mpg123/m4/addrconfig.m4 +34 -0
  73. data/mpg123/m4/libtool.m4 +7982 -0
  74. data/mpg123/m4/ltoptions.m4 +384 -0
  75. data/mpg123/m4/ltsugar.m4 +123 -0
  76. data/mpg123/m4/ltversion.m4 +23 -0
  77. data/mpg123/m4/lt~obsolete.m4 +98 -0
  78. data/mpg123/makedll.sh +19 -0
  79. data/mpg123/man1/mpg123.1 +512 -0
  80. data/mpg123/mpg123.spec +68 -0
  81. data/mpg123/mpg123.spec.in +68 -0
  82. data/mpg123/ports/MSVC++/2005/libmpg123/libmpg123.vcproj +741 -0
  83. data/mpg123/ports/MSVC++/2008/dump_seekindex/dump_seekindex.vcproj +194 -0
  84. data/mpg123/ports/MSVC++/2008/feedseek/feedseek.vcproj +195 -0
  85. data/mpg123/ports/MSVC++/2008/libmpg123/libmpg123.vcproj +1357 -0
  86. data/mpg123/ports/MSVC++/2008/mpg123.sln +44 -0
  87. data/mpg123/ports/MSVC++/2008/mpglib/mpglib.vcproj +191 -0
  88. data/mpg123/ports/MSVC++/2008/scan/scan.vcproj +195 -0
  89. data/mpg123/ports/MSVC++/2008clr/2008clr.sln +81 -0
  90. data/mpg123/ports/MSVC++/2008clr/examples/ReplaceReaderclr/Program.cs +435 -0
  91. data/mpg123/ports/MSVC++/2008clr/examples/ReplaceReaderclr/Properties/AssemblyInfo.cs +36 -0
  92. data/mpg123/ports/MSVC++/2008clr/examples/ReplaceReaderclr/ReplaceReaderclr.csproj +72 -0
  93. data/mpg123/ports/MSVC++/2008clr/examples/feedseekclr/Program.cs +331 -0
  94. data/mpg123/ports/MSVC++/2008clr/examples/feedseekclr/Properties/AssemblyInfo.cs +36 -0
  95. data/mpg123/ports/MSVC++/2008clr/examples/feedseekclr/feedseekclr.csproj +71 -0
  96. data/mpg123/ports/MSVC++/2008clr/examples/scanclr/Program.cs +79 -0
  97. data/mpg123/ports/MSVC++/2008clr/examples/scanclr/Properties/AssemblyInfo.cs +36 -0
  98. data/mpg123/ports/MSVC++/2008clr/examples/scanclr/scanclr.csproj +70 -0
  99. data/mpg123/ports/MSVC++/2008clr/mpg123clr/AssemblyInfo.cpp +76 -0
  100. data/mpg123/ports/MSVC++/2008clr/mpg123clr/ReadMe.txt +165 -0
  101. data/mpg123/ports/MSVC++/2008clr/mpg123clr/advanced.cpp +91 -0
  102. data/mpg123/ports/MSVC++/2008clr/mpg123clr/advanced.h +130 -0
  103. data/mpg123/ports/MSVC++/2008clr/mpg123clr/dllmain.cpp +19 -0
  104. data/mpg123/ports/MSVC++/2008clr/mpg123clr/enum.h +218 -0
  105. data/mpg123/ports/MSVC++/2008clr/mpg123clr/error.cpp +48 -0
  106. data/mpg123/ports/MSVC++/2008clr/mpg123clr/error.h +134 -0
  107. data/mpg123/ports/MSVC++/2008clr/mpg123clr/id3v1.cpp +92 -0
  108. data/mpg123/ports/MSVC++/2008clr/mpg123clr/id3v1.h +132 -0
  109. data/mpg123/ports/MSVC++/2008clr/mpg123clr/id3v2.cpp +138 -0
  110. data/mpg123/ports/MSVC++/2008clr/mpg123clr/id3v2.h +152 -0
  111. data/mpg123/ports/MSVC++/2008clr/mpg123clr/mpg123clr.cpp +896 -0
  112. data/mpg123/ports/MSVC++/2008clr/mpg123clr/mpg123clr.h +953 -0
  113. data/mpg123/ports/MSVC++/2008clr/mpg123clr/mpg123clr.rc +102 -0
  114. data/mpg123/ports/MSVC++/2008clr/mpg123clr/mpg123clr.vcproj +328 -0
  115. data/mpg123/ports/MSVC++/2008clr/mpg123clr/resource.h +14 -0
  116. data/mpg123/ports/MSVC++/2008clr/mpg123clr/stdafx.cpp +8 -0
  117. data/mpg123/ports/MSVC++/2008clr/mpg123clr/stdafx.h +38 -0
  118. data/mpg123/ports/MSVC++/2008clr/mpg123clr/string.cpp +166 -0
  119. data/mpg123/ports/MSVC++/2008clr/mpg123clr/string.h +265 -0
  120. data/mpg123/ports/MSVC++/2008clr/mpg123clr/targetver.h +24 -0
  121. data/mpg123/ports/MSVC++/2008clr/mpg123clr/text.cpp +67 -0
  122. data/mpg123/ports/MSVC++/2008clr/mpg123clr/text.h +111 -0
  123. data/mpg123/ports/MSVC++/2010/dump_seekindex/dump_seekindex.vcxproj +90 -0
  124. data/mpg123/ports/MSVC++/2010/dump_seekindex/dump_seekindex.vcxproj.filters +6 -0
  125. data/mpg123/ports/MSVC++/2010/feedseek/feedseek.vcxproj +95 -0
  126. data/mpg123/ports/MSVC++/2010/feedseek/feedseek.vcxproj.filters +6 -0
  127. data/mpg123/ports/MSVC++/2010/libmpg123/libmpg123.vcxproj +960 -0
  128. data/mpg123/ports/MSVC++/2010/libmpg123/libmpg123.vcxproj.user +3 -0
  129. data/mpg123/ports/MSVC++/2010/libmpg123/yasm.exe +0 -0
  130. data/mpg123/ports/MSVC++/2010/mpg123.sln +38 -0
  131. data/mpg123/ports/MSVC++/2010/scan/scan.vcxproj +93 -0
  132. data/mpg123/ports/MSVC++/2010/scan/scan.vcxproj.filters +6 -0
  133. data/mpg123/ports/MSVC++/CMP3Stream/INCLUDE/CORE/CORE_FileIn.H +15 -0
  134. data/mpg123/ports/MSVC++/CMP3Stream/INCLUDE/CORE/SourceFilter_MP3.H +139 -0
  135. data/mpg123/ports/MSVC++/CMP3Stream/INCLUDE/IIEP_Def.H +206 -0
  136. data/mpg123/ports/MSVC++/CMP3Stream/INCLUDE/IIEP_FileIn.H +167 -0
  137. data/mpg123/ports/MSVC++/CMP3Stream/README +4 -0
  138. data/mpg123/ports/MSVC++/CMP3Stream/SOURCE/CORE_FileIn.CPP +462 -0
  139. data/mpg123/ports/MSVC++/CMP3Stream/SOURCE/CORE_Log.CPP +122 -0
  140. data/mpg123/ports/MSVC++/CMP3Stream/SOURCE/CORE_Mutex.CPP +35 -0
  141. data/mpg123/ports/MSVC++/CMP3Stream/SOURCE/SourceFilter_MP3Stream.CPP +586 -0
  142. data/mpg123/ports/MSVC++/CMP3Stream/libMPG123/PLACE_LIBMPG123_SOURCES_HERE +0 -0
  143. data/mpg123/ports/MSVC++/CMP3Stream/libMPG123/libMPG123.vcproj +245 -0
  144. data/mpg123/ports/MSVC++/config.h +35 -0
  145. data/mpg123/ports/MSVC++/examples/feedseek.c +240 -0
  146. data/mpg123/ports/MSVC++/examples/scan.c +47 -0
  147. data/mpg123/ports/MSVC++/mpg123.h +46 -0
  148. data/mpg123/ports/MSVC++/msvc.c +59 -0
  149. data/mpg123/ports/README +26 -0
  150. data/mpg123/ports/Sony_PSP/Makefile.psp +38 -0
  151. data/mpg123/ports/Sony_PSP/README +11 -0
  152. data/mpg123/ports/Sony_PSP/config.h +368 -0
  153. data/mpg123/ports/Sony_PSP/readers.c.patch +2 -0
  154. data/mpg123/ports/Xcode/config.h +197 -0
  155. data/mpg123/ports/Xcode/mpg123.h +17 -0
  156. data/mpg123/ports/Xcode/mpg123.xcodeproj/project.pbxproj +670 -0
  157. data/mpg123/ports/mpg123_.pas +478 -0
  158. data/mpg123/scripts/benchmark-cpu.pl +56 -0
  159. data/mpg123/scripts/tag_lyrics.py +76 -0
  160. data/mpg123/src/Makefile.am +186 -0
  161. data/mpg123/src/Makefile.in +1097 -0
  162. data/mpg123/src/audio.c +725 -0
  163. data/mpg123/src/audio.h +106 -0
  164. data/mpg123/src/buffer.c +312 -0
  165. data/mpg123/src/buffer.h +45 -0
  166. data/mpg123/src/common.c +240 -0
  167. data/mpg123/src/common.h +29 -0
  168. data/mpg123/src/config.h.in +436 -0
  169. data/mpg123/src/control_generic.c +809 -0
  170. data/mpg123/src/equalizer.c +48 -0
  171. data/mpg123/src/genre.c +271 -0
  172. data/mpg123/src/genre.h +15 -0
  173. data/mpg123/src/getlopt.c +148 -0
  174. data/mpg123/src/getlopt.h +77 -0
  175. data/mpg123/src/httpget.c +700 -0
  176. data/mpg123/src/httpget.h +66 -0
  177. data/mpg123/src/legacy_module.c +74 -0
  178. data/mpg123/src/libmpg123/Makefile.am +141 -0
  179. data/mpg123/src/libmpg123/Makefile.in +919 -0
  180. data/mpg123/src/libmpg123/compat.c +138 -0
  181. data/mpg123/src/libmpg123/compat.h +178 -0
  182. data/mpg123/src/libmpg123/dct36_3dnow.S +505 -0
  183. data/mpg123/src/libmpg123/dct36_3dnowext.S +512 -0
  184. data/mpg123/src/libmpg123/dct64.c +174 -0
  185. data/mpg123/src/libmpg123/dct64_3dnow.S +712 -0
  186. data/mpg123/src/libmpg123/dct64_3dnowext.S +714 -0
  187. data/mpg123/src/libmpg123/dct64_altivec.c +315 -0
  188. data/mpg123/src/libmpg123/dct64_i386.c +336 -0
  189. data/mpg123/src/libmpg123/dct64_i486.c +342 -0
  190. data/mpg123/src/libmpg123/dct64_mmx.S +811 -0
  191. data/mpg123/src/libmpg123/dct64_neon.S +297 -0
  192. data/mpg123/src/libmpg123/dct64_neon_float.S +270 -0
  193. data/mpg123/src/libmpg123/dct64_sse.S +454 -0
  194. data/mpg123/src/libmpg123/dct64_sse_float.S +401 -0
  195. data/mpg123/src/libmpg123/dct64_x86_64.S +464 -0
  196. data/mpg123/src/libmpg123/dct64_x86_64_float.S +426 -0
  197. data/mpg123/src/libmpg123/debug.h +171 -0
  198. data/mpg123/src/libmpg123/decode.h +268 -0
  199. data/mpg123/src/libmpg123/dither.c +119 -0
  200. data/mpg123/src/libmpg123/dither.h +23 -0
  201. data/mpg123/src/libmpg123/equalizer.c +17 -0
  202. data/mpg123/src/libmpg123/equalizer_3dnow.S +70 -0
  203. data/mpg123/src/libmpg123/feature.c +106 -0
  204. data/mpg123/src/libmpg123/format.c +521 -0
  205. data/mpg123/src/libmpg123/frame.c +1046 -0
  206. data/mpg123/src/libmpg123/frame.h +410 -0
  207. data/mpg123/src/libmpg123/gapless.h +119 -0
  208. data/mpg123/src/libmpg123/getbits.h +100 -0
  209. data/mpg123/src/libmpg123/getcpuflags.S +91 -0
  210. data/mpg123/src/libmpg123/getcpuflags.h +47 -0
  211. data/mpg123/src/libmpg123/huffman.h +340 -0
  212. data/mpg123/src/libmpg123/icy.c +32 -0
  213. data/mpg123/src/libmpg123/icy.h +38 -0
  214. data/mpg123/src/libmpg123/icy2utf8.c +438 -0
  215. data/mpg123/src/libmpg123/icy2utf8.h +10 -0
  216. data/mpg123/src/libmpg123/id3.c +999 -0
  217. data/mpg123/src/libmpg123/id3.h +43 -0
  218. data/mpg123/src/libmpg123/index.c +134 -0
  219. data/mpg123/src/libmpg123/index.h +59 -0
  220. data/mpg123/src/libmpg123/intsym.h +256 -0
  221. data/mpg123/src/libmpg123/l12_integer_tables.h +278 -0
  222. data/mpg123/src/libmpg123/l2tables.h +164 -0
  223. data/mpg123/src/libmpg123/l3_integer_tables.h +1002 -0
  224. data/mpg123/src/libmpg123/layer1.c +155 -0
  225. data/mpg123/src/libmpg123/layer2.c +371 -0
  226. data/mpg123/src/libmpg123/layer3.c +2053 -0
  227. data/mpg123/src/libmpg123/lfs_alias.c +252 -0
  228. data/mpg123/src/libmpg123/lfs_wrap.c +751 -0
  229. data/mpg123/src/libmpg123/libmpg123.c +1607 -0
  230. data/mpg123/src/libmpg123/mangle.h +74 -0
  231. data/mpg123/src/libmpg123/mpeghead.h +87 -0
  232. data/mpg123/src/libmpg123/mpg123.h.in +1075 -0
  233. data/mpg123/src/libmpg123/mpg123lib_intern.h +338 -0
  234. data/mpg123/src/libmpg123/ntom.c +148 -0
  235. data/mpg123/src/libmpg123/optimize.c +964 -0
  236. data/mpg123/src/libmpg123/optimize.h +219 -0
  237. data/mpg123/src/libmpg123/parse.c +1179 -0
  238. data/mpg123/src/libmpg123/parse.h +25 -0
  239. data/mpg123/src/libmpg123/reader.h +137 -0
  240. data/mpg123/src/libmpg123/readers.c +1235 -0
  241. data/mpg123/src/libmpg123/sample.h +152 -0
  242. data/mpg123/src/libmpg123/stringbuf.c +163 -0
  243. data/mpg123/src/libmpg123/synth.c +816 -0
  244. data/mpg123/src/libmpg123/synth.h +196 -0
  245. data/mpg123/src/libmpg123/synth_3dnow.S +318 -0
  246. data/mpg123/src/libmpg123/synth_3dnowext.S +6 -0
  247. data/mpg123/src/libmpg123/synth_8bit.c +142 -0
  248. data/mpg123/src/libmpg123/synth_8bit.h +86 -0
  249. data/mpg123/src/libmpg123/synth_altivec.c +1057 -0
  250. data/mpg123/src/libmpg123/synth_arm.S +271 -0
  251. data/mpg123/src/libmpg123/synth_arm_accurate.S +287 -0
  252. data/mpg123/src/libmpg123/synth_i486.c +252 -0
  253. data/mpg123/src/libmpg123/synth_i586.S +336 -0
  254. data/mpg123/src/libmpg123/synth_i586_dither.S +375 -0
  255. data/mpg123/src/libmpg123/synth_mmx.S +125 -0
  256. data/mpg123/src/libmpg123/synth_mono.h +64 -0
  257. data/mpg123/src/libmpg123/synth_neon.S +123 -0
  258. data/mpg123/src/libmpg123/synth_neon_accurate.S +173 -0
  259. data/mpg123/src/libmpg123/synth_neon_float.S +149 -0
  260. data/mpg123/src/libmpg123/synth_neon_s32.S +168 -0
  261. data/mpg123/src/libmpg123/synth_ntom.h +213 -0
  262. data/mpg123/src/libmpg123/synth_real.c +404 -0
  263. data/mpg123/src/libmpg123/synth_s32.c +411 -0
  264. data/mpg123/src/libmpg123/synth_sse.S +6 -0
  265. data/mpg123/src/libmpg123/synth_sse3d.h +246 -0
  266. data/mpg123/src/libmpg123/synth_sse_accurate.S +294 -0
  267. data/mpg123/src/libmpg123/synth_sse_float.S +241 -0
  268. data/mpg123/src/libmpg123/synth_sse_s32.S +306 -0
  269. data/mpg123/src/libmpg123/synth_stereo_neon.S +175 -0
  270. data/mpg123/src/libmpg123/synth_stereo_neon_accurate.S +262 -0
  271. data/mpg123/src/libmpg123/synth_stereo_neon_float.S +220 -0
  272. data/mpg123/src/libmpg123/synth_stereo_neon_s32.S +247 -0
  273. data/mpg123/src/libmpg123/synth_stereo_sse_accurate.S +508 -0
  274. data/mpg123/src/libmpg123/synth_stereo_sse_float.S +416 -0
  275. data/mpg123/src/libmpg123/synth_stereo_sse_s32.S +540 -0
  276. data/mpg123/src/libmpg123/synth_stereo_x86_64.S +335 -0
  277. data/mpg123/src/libmpg123/synth_stereo_x86_64_accurate.S +454 -0
  278. data/mpg123/src/libmpg123/synth_stereo_x86_64_float.S +396 -0
  279. data/mpg123/src/libmpg123/synth_stereo_x86_64_s32.S +473 -0
  280. data/mpg123/src/libmpg123/synth_x86_64.S +244 -0
  281. data/mpg123/src/libmpg123/synth_x86_64_accurate.S +301 -0
  282. data/mpg123/src/libmpg123/synth_x86_64_float.S +259 -0
  283. data/mpg123/src/libmpg123/synth_x86_64_s32.S +312 -0
  284. data/mpg123/src/libmpg123/synths.h +52 -0
  285. data/mpg123/src/libmpg123/tabinit.c +294 -0
  286. data/mpg123/src/libmpg123/tabinit_mmx.S +210 -0
  287. data/mpg123/src/libmpg123/testcpu.c +35 -0
  288. data/mpg123/src/libmpg123/true.h +14 -0
  289. data/mpg123/src/local.c +63 -0
  290. data/mpg123/src/local.h +21 -0
  291. data/mpg123/src/metaprint.c +373 -0
  292. data/mpg123/src/metaprint.h +17 -0
  293. data/mpg123/src/module.c +306 -0
  294. data/mpg123/src/module.h +48 -0
  295. data/mpg123/src/mpg123.c +1405 -0
  296. data/mpg123/src/mpg123app.h +171 -0
  297. data/mpg123/src/output/Makefile.am +213 -0
  298. data/mpg123/src/output/Makefile.in +1238 -0
  299. data/mpg123/src/output/aix.c +300 -0
  300. data/mpg123/src/output/alib.c +209 -0
  301. data/mpg123/src/output/alsa.c +297 -0
  302. data/mpg123/src/output/arts.c +117 -0
  303. data/mpg123/src/output/coreaudio.c +370 -0
  304. data/mpg123/src/output/dummy.c +78 -0
  305. data/mpg123/src/output/esd.c +167 -0
  306. data/mpg123/src/output/hp.c +184 -0
  307. data/mpg123/src/output/jack.c +450 -0
  308. data/mpg123/src/output/mint.c +197 -0
  309. data/mpg123/src/output/nas.c +335 -0
  310. data/mpg123/src/output/openal.c +197 -0
  311. data/mpg123/src/output/os2.c +665 -0
  312. data/mpg123/src/output/oss.c +319 -0
  313. data/mpg123/src/output/portaudio.c +255 -0
  314. data/mpg123/src/output/pulse.c +164 -0
  315. data/mpg123/src/output/sdl.c +206 -0
  316. data/mpg123/src/output/sgi.c +213 -0
  317. data/mpg123/src/output/sndio.c +161 -0
  318. data/mpg123/src/output/sun.c +281 -0
  319. data/mpg123/src/output/win32.c +229 -0
  320. data/mpg123/src/playlist.c +596 -0
  321. data/mpg123/src/playlist.h +52 -0
  322. data/mpg123/src/resolver.c +319 -0
  323. data/mpg123/src/resolver.h +25 -0
  324. data/mpg123/src/sfifo.c +146 -0
  325. data/mpg123/src/sfifo.h +95 -0
  326. data/mpg123/src/streamdump.c +74 -0
  327. data/mpg123/src/streamdump.h +20 -0
  328. data/mpg123/src/term.c +479 -0
  329. data/mpg123/src/term.h +81 -0
  330. data/mpg123/src/tests/noise.c +52 -0
  331. data/mpg123/src/tests/plain_id3.c +109 -0
  332. data/mpg123/src/tests/seek_accuracy.c +261 -0
  333. data/mpg123/src/tests/seek_whence.c +56 -0
  334. data/mpg123/src/tests/testtext.h +34 -0
  335. data/mpg123/src/tests/text.c +80 -0
  336. data/mpg123/src/wav.c +464 -0
  337. data/mpg123/src/wavhead.h +68 -0
  338. data/mpg123/src/win32_net.c +599 -0
  339. data/mpg123/src/win32_support.c +191 -0
  340. data/mpg123/src/win32_support.h +152 -0
  341. data/mpg123/src/xfermem.c +321 -0
  342. data/mpg123/src/xfermem.h +74 -0
  343. data/mpg123/windows-builds.sh +137 -0
  344. data/msvc/lib/OpenAL32.lib +0 -0
  345. data/spec/fixtures/heal.ogg +0 -0
  346. data/spec/fixtures/tone_up.wav +0 -0
  347. data/spec/seal/buffer_spec.rb +37 -0
  348. data/spec/seal/core_spec.rb +29 -0
  349. data/spec/seal/effect_slot_spec.rb +38 -0
  350. data/spec/seal/listener_spec.rb +33 -0
  351. data/spec/seal/reverb_spec.rb +51 -0
  352. data/spec/seal/source_spec.rb +370 -0
  353. data/spec/seal/stream_spec.rb +38 -0
  354. data/spec/spec_helper.rb +45 -0
  355. data/spec/support/attribute_examples.rb +75 -0
  356. data/spec/support/audio_object_with_format.rb +27 -0
  357. data/spec/support/movable_object.rb +22 -0
  358. data/src/libogg/bitwise.c +857 -0
  359. data/src/libogg/framing.c +2093 -0
  360. data/src/libvorbis/backends.h +144 -0
  361. data/src/libvorbis/bitrate.c +253 -0
  362. data/src/libvorbis/bitrate.h +59 -0
  363. data/src/libvorbis/block.c +1046 -0
  364. data/src/libvorbis/codebook.c +484 -0
  365. data/src/libvorbis/codebook.h +119 -0
  366. data/src/libvorbis/codec_internal.h +167 -0
  367. data/src/libvorbis/envelope.c +375 -0
  368. data/src/libvorbis/envelope.h +80 -0
  369. data/src/libvorbis/floor0.c +221 -0
  370. data/src/libvorbis/floor1.c +1100 -0
  371. data/src/libvorbis/highlevel.h +58 -0
  372. data/src/libvorbis/info.c +668 -0
  373. data/src/libvorbis/lookup.c +94 -0
  374. data/src/libvorbis/lookup.h +32 -0
  375. data/src/libvorbis/lookup_data.h +192 -0
  376. data/src/libvorbis/lpc.c +160 -0
  377. data/src/libvorbis/lpc.h +29 -0
  378. data/src/libvorbis/lsp.c +456 -0
  379. data/src/libvorbis/lsp.h +28 -0
  380. data/src/libvorbis/mapping0.c +816 -0
  381. data/src/libvorbis/masking.h +785 -0
  382. data/src/libvorbis/mdct.c +563 -0
  383. data/src/libvorbis/mdct.h +71 -0
  384. data/src/libvorbis/misc.h +57 -0
  385. data/src/libvorbis/os.h +186 -0
  386. data/src/libvorbis/psy.c +1206 -0
  387. data/src/libvorbis/psy.h +154 -0
  388. data/src/libvorbis/registry.c +45 -0
  389. data/src/libvorbis/registry.h +32 -0
  390. data/src/libvorbis/res0.c +889 -0
  391. data/src/libvorbis/scales.h +90 -0
  392. data/src/libvorbis/sharedbook.c +579 -0
  393. data/src/libvorbis/smallft.c +1255 -0
  394. data/src/libvorbis/smallft.h +34 -0
  395. data/src/libvorbis/synthesis.c +184 -0
  396. data/src/libvorbis/vorbisfile.c +2337 -0
  397. data/src/libvorbis/window.c +2135 -0
  398. data/src/libvorbis/window.h +26 -0
  399. data/src/rubyext.c +2329 -0
  400. data/src/seal/buf.c +124 -0
  401. data/src/seal/core.c +283 -0
  402. data/src/seal/efs.c +74 -0
  403. data/src/seal/err.c +118 -0
  404. data/src/seal/fmt.c +86 -0
  405. data/src/seal/listener.c +111 -0
  406. data/src/seal/mpg.c +174 -0
  407. data/src/seal/mpg.h +24 -0
  408. data/src/seal/ov.c +180 -0
  409. data/src/seal/ov.h +22 -0
  410. data/src/seal/raw.c +59 -0
  411. data/src/seal/reader.c +102 -0
  412. data/src/seal/reader.h +59 -0
  413. data/src/seal/rvb.c +368 -0
  414. data/src/seal/src.c +654 -0
  415. data/src/seal/stream.c +109 -0
  416. data/src/seal/threading.c +66 -0
  417. data/src/seal/threading.h +20 -0
  418. data/src/seal/wav.c +297 -0
  419. data/src/seal/wav.h +23 -0
  420. data/src/win32api.rb +29 -0
  421. metadata +563 -0
@@ -0,0 +1,167 @@
1
+ //
2
+ // __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
3
+ // /_//_//_//_/\ /_//_//_//_/\ /_//_//_//_/\ /_//_//_//_/\
4
+ // \_/_//_/\\_\/ \_/_//_/\\_\//_/\\_\\_\\_\//_/\\_\\_/_/\/
5
+ // /_//_/\/ /_//_/\/ /_/\/ __ /_/\/ __ /_/\/
6
+ // /_//_/\/ /_//_/\/ /_//_//_/\ /_//_//_//_/\/
7
+ // /_//_/\/ /_//_/\/ /_/\\_\\_\/ /_/\\_\\_\\_\/
8
+ // __ /_//_/\/ __ /_//_/\/ /_/\/ __ __ /_/\/
9
+ // /_//_//_//_/\ /_//_//_//_/\ /_//_//_//_/\ /_/\/
10
+ // \_\\_\\_\\_\/ \_\\_\\_\\_\/ \_\\_\\_\\_\/ \_\/
11
+ //
12
+ //
13
+ // ..:: Interactive Internet Entertainment Platform ::..
14
+ //
15
+ // (C) 2000-2005, FAN YI PENG. ALL RIGHTS RESERVED
16
+ //
17
+ // ________________________________________________________________________________________________
18
+ //
19
+ /// @file IIEP_FileIn.H
20
+ /// @brief �ļ�����ӿ���
21
+ // ________________________________________________________________________________________________
22
+ //
23
+ //
24
+ // _____________________________________
25
+ // | |
26
+ // | DATA |
27
+ // _____________________________|_____________________________________|____________________________
28
+ //
29
+ // __________
30
+ // __________________________________________| CONFIG |__________________________________________
31
+
32
+ #pragma once
33
+
34
+ // ____________________________________________ CONFIG ____________________________________________
35
+ //
36
+ // __________
37
+ // __________________________________________| HEADER |__________________________________________
38
+
39
+ #include <stdio.h>
40
+ #include <string>
41
+
42
+ #include <IIEP_Def.H>
43
+
44
+ // ____________________________________________ HEADER ____________________________________________
45
+ //
46
+ // __________
47
+ // __________________________________________| DEFINE |__________________________________________
48
+ //
49
+ // ___________
50
+ // ____/ CFileIn \_______________________________________________________________________________
51
+
52
+ namespace IIEP
53
+ {
54
+ /// @brief �ļ�����ӿ���
55
+
56
+ class CFileIn
57
+ {
58
+ public:
59
+
60
+ CFileIn(void);
61
+ ~CFileIn(void);
62
+
63
+ bool Open(const char *pcszFileName);
64
+ bool Open(const WORD *pcwsFileName);
65
+
66
+ void Close(void);
67
+
68
+ DWORD GetFileSize(void) const;
69
+ DWORD GetReadPosition(void) const;
70
+
71
+ bool Seek(long nOffset, long nOrigin = 0); // SEEK_SET = 0 SEEK_CUR = 1 SEEK_END = 2
72
+
73
+ bool Skip(long nOffset) { return Seek(nOffset, 1); }
74
+
75
+ DWORD Read(PVOID pDataBuffer, DWORD dwReadSize);
76
+
77
+ bool ReadB(BYTE &ucData)
78
+ {
79
+ return (1 == Read(&ucData, 1));
80
+ }
81
+
82
+ bool ReadW(WORD &wData)
83
+ {
84
+ return (2 == Read(&wData, 2));
85
+ }
86
+
87
+ bool ReadDW(DWORD &dwData)
88
+ {
89
+ return (4 == Read(&dwData, 4));
90
+ }
91
+
92
+ bool ReadInverseW(WORD &wData)
93
+ {
94
+ if (2 == Read(&wData, 2))
95
+ {
96
+ _asm
97
+ {
98
+ MOV ECX, wData
99
+ MOV AX, [ECX]
100
+ XCHG AH, AL
101
+ MOV [ECX], AX
102
+ }
103
+
104
+ return true;
105
+ }
106
+
107
+ return false;
108
+ }
109
+
110
+ bool ReadInverseDW(DWORD &dwData)
111
+ {
112
+ if (4 == Read(&dwData, 4))
113
+ {
114
+ _asm
115
+ {
116
+ MOV ECX, dwData
117
+ MOV EAX, [ECX]
118
+ BSWAP EAX
119
+ MOV [ECX], EAX
120
+ }
121
+
122
+ return true;
123
+ }
124
+
125
+ return false;
126
+ }
127
+
128
+ // --------------------------------------------------------------------------------------------
129
+
130
+ bool ReadAnsiLine(std::string &strLine);
131
+ bool ReadUnicodeLine(std::wstring &wstrLine, bool bBigEndian);
132
+
133
+ bool ReadAnsiString (char *pszBuffer, DWORD dwBufferLength);
134
+ bool ReadUnicodeString(WORD *pwzBuffer, DWORD dwBufferLength);
135
+
136
+ // --------------------------------------------------------------------------------------------
137
+
138
+ private:
139
+
140
+ CFileIn(const CFileIn &); // forbidden
141
+ CFileIn & operator = (const CFileIn &); // forbidden
142
+
143
+ #include <CORE/CORE_FileIn.H>
144
+ };
145
+ }
146
+
147
+ // ______ CFileIn _________________________________________________________________________________
148
+ //
149
+ // _______________
150
+ // ____/ Memory File \___________________________________________________________________________
151
+
152
+ namespace IIEP
153
+ {
154
+ bool CreateMemoryFile(PVOID pMemory, DWORD dwLength, const char *pcszFileName);
155
+ bool CreateMemoryFile(PVOID pMemory, DWORD dwLength, const WORD *pcwsFileName);
156
+ bool RemoveMemoryFile(const char *pcszFileName);
157
+ bool RemoveMemoryFile(const WORD *pcwsFileName);
158
+ void RemoveMemoryFile(void);
159
+ }
160
+
161
+ // ______ Memory File _____________________________________________________________________________
162
+ //
163
+ // ____________________________________________ DEFINE ____________________________________________
164
+ //
165
+ // ____________________________________________________________________________________ DATA ______
166
+ //
167
+ // ___________________________________________ FILE END ___________________________________________
@@ -0,0 +1,4 @@
1
+ This is a MS Visual C++ project plus wrapper class for libmpg123, contributed by "Gates Fan" <gatesfan@gmail.com>.
2
+ You need to copy the stuff from mgp123-x.y.z/src/libmpg123 to the libMPG123 directory and also ensure that you produce a valid mpg123.h from the mpg123.h.in (replace the @BLABLA@ with the appropriate #includes).
3
+
4
+ Thomas.
@@ -0,0 +1,462 @@
1
+ // ------------------------------------------------------------------------------------------------
2
+
3
+ #include <windows.h>
4
+
5
+ #include <string>
6
+ #include <vector>
7
+
8
+ #include <IIEP_FileIn.H>
9
+ #include <IIEP_Hash.H>
10
+ #include <IIEP_String.H>
11
+
12
+ // ------------------------------------------------------------------------------------------------
13
+
14
+ struct MEM_FILE_IDX
15
+ {
16
+ MEM_FILE_IDX(void)
17
+ {
18
+ m_dwID = 0;
19
+ m_dwLength = 0;
20
+ m_pucData = 0;
21
+ }
22
+
23
+ DWORD m_dwID; // hash ID of filename
24
+ DWORD m_dwLength; // file length
25
+ PBYTE m_pucData; // memory pointer
26
+ };
27
+
28
+ static std::vector <MEM_FILE_IDX> s_vecMemFile;
29
+
30
+ // ------------------------------------------------------------------------------------------------
31
+ // name: SearchMemFile()
32
+ // desc:
33
+ // ------------------------------------------------------------------------------------------------
34
+
35
+ static std::vector <MEM_FILE_IDX> :: iterator SearchMemFile(PCWSTR pcwsFileName)
36
+ {
37
+ DWORD dwID = IIEP::HashFNV_1a(pcwsFileName);
38
+
39
+ std::vector <MEM_FILE_IDX>::iterator it;
40
+
41
+ for (it = s_vecMemFile.begin(); it < s_vecMemFile.end(); it ++)
42
+ {
43
+ if (it -> m_dwID == dwID) return it;
44
+ }
45
+
46
+ return s_vecMemFile.end();
47
+ }
48
+
49
+ // ------------------------------------------------------------------------------------------------
50
+
51
+ static std::vector <MEM_FILE_IDX> :: iterator SearchMemFile(const char *pcszFileName)
52
+ {
53
+ WORD wzNameBuffer[0x1000];
54
+
55
+ wzNameBuffer[0] = 0;
56
+
57
+ IIEP::StringFromANSI(pcszFileName, wzNameBuffer, 0x1000);
58
+
59
+ return SearchMemFile(wzNameBuffer);
60
+ }
61
+
62
+ // ------------------------------------------------------------------------------------------------
63
+ // name: CreateMemoryFile()
64
+ // desc:
65
+ // ------------------------------------------------------------------------------------------------
66
+
67
+ bool IIEP::CreateMemoryFile(PVOID pMemory, DWORD dwLength, PCWSTR pcwsFileName)
68
+ {
69
+ if (0 == pcwsFileName || 0 == *pcwsFileName) return false;
70
+
71
+ RemoveMemoryFile(pcwsFileName);
72
+
73
+ DWORD dwID = IIEP::HashFNV_1a(pcwsFileName);
74
+
75
+ MEM_FILE_IDX soIDX;
76
+
77
+ soIDX.m_dwID = dwID;
78
+ soIDX.m_dwLength = dwLength;
79
+ soIDX.m_pucData = (PBYTE) pMemory;
80
+
81
+ s_vecMemFile.push_back(soIDX);
82
+
83
+ return true;
84
+ }
85
+
86
+ // ------------------------------------------------------------------------------------------------
87
+
88
+ bool IIEP::CreateMemoryFile(PVOID pMemory, DWORD dwLength, const char *pcszFileName)
89
+ {
90
+ WORD wzNameBuffer[0x1000];
91
+
92
+ wzNameBuffer[0] = 0;
93
+
94
+ StringFromANSI(pcszFileName, wzNameBuffer, 0x1000);
95
+
96
+ return CreateMemoryFile(pMemory, dwLength, wzNameBuffer);
97
+ }
98
+
99
+ // ------------------------------------------------------------------------------------------------
100
+ // name: RemoveMemoryFile()
101
+ // desc:
102
+ // ------------------------------------------------------------------------------------------------
103
+
104
+ bool IIEP::RemoveMemoryFile(PCWSTR pcwsFileName)
105
+ {
106
+ if (0 == pcwsFileName || 0 == *pcwsFileName) return false;
107
+
108
+ std::vector <MEM_FILE_IDX>::iterator it = SearchMemFile(pcwsFileName);
109
+
110
+ if (it == s_vecMemFile.end()) return false;
111
+
112
+ s_vecMemFile.erase(it);
113
+
114
+ return true;
115
+ }
116
+
117
+ // ------------------------------------------------------------------------------------------------
118
+
119
+ bool IIEP::RemoveMemoryFile(const char *pcszFileName)
120
+ {
121
+ WORD wzNameBuffer[0x1000];
122
+
123
+ wzNameBuffer[0] = 0;
124
+
125
+ StringFromANSI(pcszFileName, wzNameBuffer, 0x1000);
126
+
127
+ return RemoveMemoryFile(wzNameBuffer);
128
+ }
129
+
130
+ // ------------------------------------------------------------------------------------------------
131
+
132
+ void IIEP::RemoveMemoryFile(void)
133
+ {
134
+ s_vecMemFile.clear();
135
+ }
136
+
137
+ // ------------------------------------------------------------------------------------------------
138
+ // name: CFileIn()
139
+ // desc:
140
+ // ------------------------------------------------------------------------------------------------
141
+
142
+ IIEP::CFileIn::CFileIn(void)
143
+ {
144
+ m_pFile = 0;
145
+ m_pucMemData = 0;
146
+ m_dwLength = 0;
147
+ m_dwReadPos = 0;
148
+ }
149
+
150
+ // ------------------------------------------------------------------------------------------------
151
+ // name: ~CFileIn()
152
+ // desc:
153
+ // ------------------------------------------------------------------------------------------------
154
+
155
+ IIEP::CFileIn::~CFileIn(void)
156
+ {
157
+ Close();
158
+ }
159
+
160
+ // ------------------------------------------------------------------------------------------------
161
+ // name: Open()
162
+ // desc:
163
+ // ------------------------------------------------------------------------------------------------
164
+
165
+ bool IIEP::CFileIn::Open(const char *pcszFileName)
166
+ {
167
+ WORD wzNameBuffer[0x1000];
168
+
169
+ wzNameBuffer[0] = 0;
170
+
171
+ StringFromANSI(pcszFileName, wzNameBuffer, 0x1000);
172
+
173
+ return Open(wzNameBuffer);
174
+ }
175
+
176
+ // ------------------------------------------------------------------------------------------------
177
+
178
+ bool IIEP::CFileIn::Open(const WORD *pcwsFileName)
179
+ {
180
+ Close();
181
+
182
+ if (0 == pcwsFileName || 0 == *pcwsFileName) return false;
183
+
184
+ std::vector <MEM_FILE_IDX>::iterator it = SearchMemFile(pcwsFileName);
185
+
186
+ if (it == s_vecMemFile.end()) // not found in memory
187
+ {
188
+ m_pFile = _wfopen(pcwsFileName, L"rb");
189
+
190
+ if (m_pFile)
191
+ {
192
+ return true; // found DOS file
193
+ }
194
+
195
+ return false;
196
+ }
197
+
198
+ if (s_vecMemFile.empty()) return false;
199
+
200
+ m_pucMemData = it -> m_pucData;
201
+ m_dwLength = it -> m_dwLength;
202
+
203
+ return true;
204
+ }
205
+
206
+ // ------------------------------------------------------------------------------------------------
207
+ // name: Close()
208
+ // desc:
209
+ // ------------------------------------------------------------------------------------------------
210
+
211
+ void IIEP::CFileIn::Close(void)
212
+ {
213
+ if (m_pFile)
214
+ {
215
+ fclose(m_pFile);
216
+
217
+ m_pFile = 0;
218
+ }
219
+
220
+ m_pucMemData = 0;
221
+ m_dwLength = 0;
222
+ m_dwReadPos = 0;
223
+ }
224
+
225
+ // ------------------------------------------------------------------------------------------------
226
+ // name: GetFileSize()
227
+ // desc:
228
+ // ------------------------------------------------------------------------------------------------
229
+
230
+ DWORD IIEP::CFileIn::GetFileSize(void) const
231
+ {
232
+ if (m_pFile)
233
+ {
234
+ DWORD dwPostion = ftell(m_pFile);
235
+
236
+ fseek(m_pFile, 0, SEEK_END);
237
+
238
+ DWORD dwFileSize = ftell(m_pFile);
239
+
240
+ fseek(m_pFile, dwPostion, SEEK_SET);
241
+
242
+ return dwFileSize;
243
+ }
244
+
245
+ return m_dwLength;
246
+ }
247
+
248
+ // ------------------------------------------------------------------------------------------------
249
+ // name: GetReadPosition()
250
+ // desc:
251
+ // ------------------------------------------------------------------------------------------------
252
+
253
+ DWORD IIEP::CFileIn::GetReadPosition(void) const
254
+ {
255
+ if (m_pFile)
256
+ {
257
+ return ftell(m_pFile);
258
+ }
259
+
260
+ return m_dwReadPos;
261
+ }
262
+
263
+ // ------------------------------------------------------------------------------------------------
264
+ // name: Seek()
265
+ // desc:
266
+ // ------------------------------------------------------------------------------------------------
267
+
268
+ bool IIEP::CFileIn::Seek(long nOffset, long nOrigin)
269
+ {
270
+ if (m_pFile)
271
+ {
272
+ return (0 == fseek(m_pFile, nOffset, nOrigin));
273
+ }
274
+
275
+ if (m_pucMemData)
276
+ {
277
+ switch (nOrigin)
278
+ {
279
+ case SEEK_SET:
280
+ if (nOffset < 0 || nOffset >= (long) m_dwLength) return false;
281
+ m_dwReadPos = nOffset;
282
+ return true;
283
+
284
+ case SEEK_CUR:
285
+ nOffset += m_dwReadPos;
286
+ if (nOffset < 0 || nOffset >= (long) m_dwLength) return false;
287
+ m_dwReadPos = nOffset;
288
+ return true;
289
+
290
+ case SEEK_END:
291
+ ASSERT(nOffset <= 0); // ��������Ǹ���
292
+ nOffset = m_dwLength - 1 + nOffset;
293
+ if (nOffset < 0 || nOffset >= (long) m_dwLength) return false;
294
+ m_dwReadPos = nOffset;
295
+ return true;
296
+ }
297
+ }
298
+
299
+ return false;
300
+ }
301
+
302
+ // ------------------------------------------------------------------------------------------------
303
+ // name: Read()
304
+ // desc:
305
+ // ------------------------------------------------------------------------------------------------
306
+
307
+ DWORD IIEP::CFileIn::Read(PVOID pDataBuffer, DWORD dwReadSize)
308
+ {
309
+ if (m_pFile)
310
+ {
311
+ return (DWORD) fread(pDataBuffer, 1, dwReadSize, m_pFile);
312
+ }
313
+
314
+ if (m_pucMemData)
315
+ {
316
+ if (m_dwReadPos + dwReadSize > m_dwLength) dwReadSize = m_dwLength - m_dwReadPos;
317
+
318
+ memcpy(pDataBuffer, m_pucMemData + m_dwReadPos, dwReadSize);
319
+
320
+ m_dwReadPos += dwReadSize;
321
+
322
+ return dwReadSize;
323
+ }
324
+
325
+ return 0;
326
+ }
327
+
328
+ // ------------------------------------------------------------------------------------------------
329
+ // name: ReadAnsiLine()
330
+ // desc:
331
+ // ------------------------------------------------------------------------------------------------
332
+
333
+ bool IIEP::CFileIn::ReadAnsiLine(std::string &strLine)
334
+ {
335
+ BYTE ucChar = 0;
336
+
337
+ strLine.clear();
338
+
339
+ while (ReadB(ucChar))
340
+ {
341
+ if (0x0D == ucChar)
342
+ {
343
+ }
344
+ else
345
+ if (0x0A == ucChar)
346
+ {
347
+ return true;
348
+ }
349
+ else
350
+ {
351
+ strLine.push_back(ucChar);
352
+ }
353
+ }
354
+
355
+ if (strLine.empty()) return false;
356
+
357
+ return true;
358
+ }
359
+
360
+ // ------------------------------------------------------------------------------------------------
361
+ // name: ReadUnicodeLine()
362
+ // desc:
363
+ // ------------------------------------------------------------------------------------------------
364
+
365
+ bool IIEP::CFileIn::ReadUnicodeLine(std::wstring &wstrLine, bool bBigEndian)
366
+ {
367
+ WORD wChar = 0;
368
+
369
+ wstrLine.clear();
370
+
371
+ while (bBigEndian ? ReadInverseW(wChar) : ReadW(wChar))
372
+ {
373
+ if (0x000D == wChar)
374
+ {
375
+ }
376
+ else
377
+ if (0x000A == wChar)
378
+ {
379
+ return true;
380
+ }
381
+ else
382
+ {
383
+ wstrLine.push_back(wChar);
384
+ }
385
+ }
386
+
387
+ if (wstrLine.empty()) return false;
388
+
389
+ return true;
390
+ }
391
+
392
+ // ------------------------------------------------------------------------------------------------
393
+ // name: ReadAnsiString()
394
+ // desc:
395
+ // ------------------------------------------------------------------------------------------------
396
+
397
+ bool IIEP::CFileIn::ReadAnsiString(char *pszBuffer, DWORD dwBufferLength)
398
+ {
399
+ DWORD dwIndex = 0;
400
+ BYTE ucChar;
401
+
402
+ while (ReadB(ucChar))
403
+ {
404
+ if (dwIndex >= dwBufferLength) return true;
405
+
406
+ pszBuffer[dwIndex ++] = ucChar;
407
+
408
+ if (0 == ucChar)
409
+ {
410
+ return true;
411
+ }
412
+ }
413
+
414
+ return false;
415
+ }
416
+
417
+ // ------------------------------------------------------------------------------------------------
418
+ // name: ReadUnicodeString()
419
+ // desc:
420
+ // ------------------------------------------------------------------------------------------------
421
+
422
+ bool IIEP::CFileIn::ReadUnicodeString(WORD *pwzBuffer, DWORD dwBufferLength)
423
+ {
424
+ DWORD dwIndex = 0;
425
+ WORD wChar;
426
+
427
+ ReadInverseW(wChar);
428
+
429
+ if (wChar == 0xFFFE) // Unicode
430
+ {
431
+ while (ReadW(wChar))
432
+ {
433
+ if (dwIndex >= dwBufferLength) return true;
434
+
435
+ pwzBuffer[dwIndex ++] = wChar;
436
+
437
+ if (0 == wChar)
438
+ {
439
+ return true;
440
+ }
441
+ }
442
+ }
443
+ else
444
+ if (wChar == 0xFEFF) // Unicode big endian
445
+ {
446
+ while (ReadInverseW(wChar))
447
+ {
448
+ if (dwIndex >= dwBufferLength) return true;
449
+
450
+ pwzBuffer[dwIndex ++] = wChar;
451
+
452
+ if (0 == wChar)
453
+ {
454
+ return true;
455
+ }
456
+ }
457
+ }
458
+
459
+ return false;
460
+ }
461
+
462
+ // ------------------------------------------------------------------------------------------------