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,92 @@
1
+ /*
2
+ extract_frams: utlize the framebyframe API and mpg123_framedata to extract the MPEG frames out of a stream (strip off anything else).
3
+
4
+ copyright 2011 by the mpg123 project - free software under the terms of the LGPL 2.1
5
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
6
+ initially written by Thomas Orgis
7
+ */
8
+
9
+ #include <mpg123.h>
10
+
11
+ /* unistd.h is not available under MSVC,
12
+ io.h defines the read and write functions */
13
+ #ifndef _MSC_VER
14
+ #include <unistd.h>
15
+ #else
16
+ #include <io.h>
17
+ #endif
18
+
19
+ #include <stdio.h>
20
+
21
+ int do_work(mpg123_handle *m);
22
+
23
+ int main(int argc, char **argv)
24
+ {
25
+ int ret = 0;
26
+ mpg123_handle *m;
27
+
28
+ mpg123_init();
29
+ m = mpg123_new(NULL, &ret);
30
+
31
+ if(m == NULL)
32
+ {
33
+ fprintf(stderr, "Cannot create handle: %s", mpg123_plain_strerror(ret));
34
+ }
35
+ else
36
+ {
37
+ fprintf(stderr, "I'll take your dirty MPEG audio from standard input and will write the extrated pure MPEG data to stadard output.\n");
38
+ if(argc > 1 && strcmp(argv[1], "--noinfo") == 0)
39
+ {
40
+ fprintf(stderr, "Enabling parsing/consuming of the Info frame so that it will not appear in output.\n");
41
+ ret = mpg123_param(m, MPG123_REMOVE_FLAGS, MPG123_IGNORE_INFOFRAME, 0.);
42
+ }
43
+ else
44
+ {
45
+ fprintf(stderr, "If you'd have given --noinfo as argument, I would omit a LAME/Xing info frame.\n");
46
+ ret = mpg123_param(m, MPG123_ADD_FLAGS, MPG123_IGNORE_INFOFRAME, 0.);
47
+ }
48
+ if(ret == 0) ret = do_work(m);
49
+
50
+ if(ret != 0) fprintf(stderr, "Some error occured: %s\n", mpg123_strerror(m));
51
+
52
+
53
+ mpg123_delete(m); /* Closes, too. */
54
+ }
55
+ mpg123_exit();
56
+
57
+ return ret;
58
+ }
59
+
60
+ int do_work(mpg123_handle *m)
61
+ {
62
+ int ret;
63
+ size_t count = 0;
64
+ ret = mpg123_open_fd(m, STDIN_FILENO);
65
+ if(ret != MPG123_OK) return ret;
66
+
67
+ while( (ret = mpg123_framebyframe_next(m)) == MPG123_OK || ret == MPG123_NEW_FORMAT )
68
+ {
69
+ unsigned long header;
70
+ unsigned char *bodydata;
71
+ size_t bodybytes;
72
+ if(mpg123_framedata(m, &header, &bodydata, &bodybytes) == MPG123_OK)
73
+ {
74
+ /* Need to extract the 4 header bytes from the native storage in the correct order. */
75
+ unsigned char hbuf[4];
76
+ int i;
77
+ for(i=0; i<4; ++i) hbuf[i] = (unsigned char) ((header >> ((3-i)*8)) & 0xff);
78
+
79
+ /* Now write out both header and data, fire and forget. */
80
+ write(STDOUT_FILENO, hbuf, 4);
81
+ write(STDOUT_FILENO, bodydata, bodybytes);
82
+ fprintf(stderr, "%zu: header 0x%08x, %zu body bytes\n", ++count, header, bodybytes);
83
+ }
84
+ }
85
+
86
+ if(ret != MPG123_DONE)
87
+ fprintf(stderr, "Some error occured (non-fatal?): %s\n", mpg123_strerror(m));
88
+
89
+ fprintf(stderr, "Done with %zu MPEG frames.\n", count);
90
+
91
+ return 0;
92
+ }
@@ -0,0 +1,238 @@
1
+ /*
2
+ feedseek: test program for libmpg123, showing how to use fuzzy seeking in feeder mode
3
+ copyright 2008 by the mpg123 project - free software under the terms of the LGPL 2.1
4
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
5
+ */
6
+
7
+ #include <mpg123.h>
8
+ #include <stdio.h>
9
+
10
+ #define INBUFF 16384 * 2 * 2
11
+ #define WAVE_FORMAT_PCM 0x0001
12
+ #define WAVE_FORMAT_IEEE_FLOAT 0x0003
13
+
14
+ FILE *out;
15
+ size_t totaloffset, dataoffset;
16
+ long rate;
17
+ int channels, enc;
18
+ unsigned short bitspersample, wavformat;
19
+
20
+ // write wav header
21
+ void initwav()
22
+ {
23
+ unsigned int tmp32 = 0;
24
+ unsigned short tmp16 = 0;
25
+
26
+ fwrite("RIFF", 1, 4, out);
27
+ totaloffset = ftell(out);
28
+
29
+ fwrite(&tmp32, 1, 4, out); // total size
30
+ fwrite("WAVE", 1, 4, out);
31
+ fwrite("fmt ", 1, 4, out);
32
+ tmp32 = 16;
33
+ fwrite(&tmp32, 1, 4, out); // format length
34
+ tmp16 = wavformat;
35
+ fwrite(&tmp16, 1, 2, out); // format
36
+ tmp16 = channels;
37
+ fwrite(&tmp16, 1, 2, out); // channels
38
+ tmp32 = rate;
39
+ fwrite(&tmp32, 1, 4, out); // sample rate
40
+ tmp32 = rate * bitspersample/8 * channels;
41
+ fwrite(&tmp32, 1, 4, out); // bytes / second
42
+ tmp16 = bitspersample/8 * channels; // float 16 or signed int 16
43
+ fwrite(&tmp16, 1, 2, out); // block align
44
+ tmp16 = bitspersample;
45
+ fwrite(&tmp16, 1, 2, out); // bits per sample
46
+ fwrite("data ", 1, 4, out);
47
+ tmp32 = 0;
48
+ dataoffset = ftell(out);
49
+ fwrite(&tmp32, 1, 4, out); // data length
50
+ }
51
+
52
+ // rewrite wav header with final length infos
53
+ void closewav()
54
+ {
55
+ unsigned int tmp32 = 0;
56
+ unsigned short tmp16 = 0;
57
+
58
+ long total = ftell(out);
59
+ fseek(out, totaloffset, SEEK_SET);
60
+ tmp32 = total - (totaloffset + 4);
61
+ fwrite(&tmp32, 1, 4, out);
62
+ fseek(out, dataoffset, SEEK_SET);
63
+ tmp32 = total - (dataoffset + 4);
64
+
65
+ fwrite(&tmp32, 1, 4, out);
66
+ }
67
+
68
+ // determine correct wav format and bits per sample
69
+ // from mpg123 enc value
70
+ void initwavformat()
71
+ {
72
+ if(enc & MPG123_ENC_FLOAT_64)
73
+ {
74
+ bitspersample = 64;
75
+ wavformat = WAVE_FORMAT_IEEE_FLOAT;
76
+ }
77
+ else if(enc & MPG123_ENC_FLOAT_32)
78
+ {
79
+ bitspersample = 32;
80
+ wavformat = WAVE_FORMAT_IEEE_FLOAT;
81
+ }
82
+ else if(enc & MPG123_ENC_16)
83
+ {
84
+ bitspersample = 16;
85
+ wavformat = WAVE_FORMAT_PCM;
86
+ }
87
+ else
88
+ {
89
+ bitspersample = 8;
90
+ wavformat = WAVE_FORMAT_PCM;
91
+ }
92
+ }
93
+
94
+ int main(int argc, char **argv)
95
+ {
96
+ unsigned char buf[INBUFF];
97
+ unsigned char *audio;
98
+ FILE *in;
99
+ mpg123_handle *m;
100
+ int ret, state;
101
+ size_t inc, outc;
102
+ off_t len, num;
103
+ size_t bytes;
104
+ off_t inoffset;
105
+ inc = outc = 0;
106
+
107
+ if(argc < 3)
108
+ {
109
+ fprintf(stderr,"Please supply in and out filenames\n");
110
+ return -1;
111
+ }
112
+
113
+ mpg123_init();
114
+
115
+ m = mpg123_new(NULL, &ret);
116
+ if(m == NULL)
117
+ {
118
+ fprintf(stderr,"Unable to create mpg123 handle: %s\n", mpg123_plain_strerror(ret));
119
+ return -1;
120
+ }
121
+
122
+ mpg123_param(m, MPG123_VERBOSE, 2, 0);
123
+
124
+ ret = mpg123_param(m, MPG123_FLAGS, MPG123_FUZZY | MPG123_SEEKBUFFER | MPG123_GAPLESS, 0);
125
+ if(ret != MPG123_OK)
126
+ {
127
+ fprintf(stderr,"Unable to set library options: %s\n", mpg123_plain_strerror(ret));
128
+ return -1;
129
+ }
130
+
131
+ // Let the seek index auto-grow and contain an entry for every frame
132
+ ret = mpg123_param(m, MPG123_INDEX_SIZE, -1, 0);
133
+ if(ret != MPG123_OK)
134
+ {
135
+ fprintf(stderr,"Unable to set index size: %s\n", mpg123_plain_strerror(ret));
136
+ return -1;
137
+ }
138
+
139
+ ret = mpg123_format_none(m);
140
+ if(ret != MPG123_OK)
141
+ {
142
+ fprintf(stderr,"Unable to disable all output formats: %s\n", mpg123_plain_strerror(ret));
143
+ return -1;
144
+ }
145
+
146
+ // Use float output
147
+ ret = mpg123_format(m, 44100, MPG123_MONO | MPG123_STEREO, MPG123_ENC_FLOAT_32);
148
+ if(ret != MPG123_OK)
149
+ {
150
+ fprintf(stderr,"Unable to set float output formats: %s\n", mpg123_plain_strerror(ret));
151
+ return -1;
152
+ }
153
+
154
+ ret = mpg123_open_feed(m);
155
+ if(ret != MPG123_OK)
156
+ {
157
+ fprintf(stderr,"Unable open feed: %s\n", mpg123_plain_strerror(ret));
158
+ return -1;
159
+ }
160
+
161
+ in = fopen(argv[1], "rb");
162
+ if(in == NULL)
163
+ {
164
+ fprintf(stderr,"Unable to open input file %s\n", argv[1]);
165
+ return -1;
166
+ }
167
+
168
+ out = fopen(argv[2], "wb");
169
+ if(out == NULL)
170
+ {
171
+ fclose(in);
172
+ fprintf(stderr,"Unable to open output file %s\n", argv[2]);
173
+ return -1;
174
+ }
175
+
176
+ fprintf(stderr, "Seeking...\n");
177
+ /* That condition is tricky... parentheses are crucial... */
178
+ while((ret = mpg123_feedseek(m, 95000, SEEK_SET, &inoffset)) == MPG123_NEED_MORE)
179
+ {
180
+ len = fread(buf, sizeof(unsigned char), INBUFF, in);
181
+ if(len <= 0)
182
+ break;
183
+ inc += len;
184
+
185
+ state = mpg123_feed(m, buf, len);
186
+ if(state == MPG123_ERR)
187
+ {
188
+ fprintf(stderr, "Error: %s", mpg123_strerror(m));
189
+ return -1;
190
+ }
191
+ }
192
+ if(ret == MPG123_ERR)
193
+ {
194
+ fprintf(stderr, "Feedseek failed: %s\n", mpg123_strerror(m));
195
+ return -1;
196
+ }
197
+
198
+ fseek(in, inoffset, SEEK_SET);
199
+
200
+ fprintf(stderr, "Starting decode...\n");
201
+ while(1)
202
+ {
203
+ len = fread(buf, sizeof(unsigned char), INBUFF, in);
204
+ if(len <= 0)
205
+ break;
206
+ inc += len;
207
+ ret = mpg123_feed(m, buf, len);
208
+
209
+ while(ret != MPG123_ERR && ret != MPG123_NEED_MORE)
210
+ {
211
+ ret = mpg123_decode_frame(m, &num, &audio, &bytes);
212
+ if(ret == MPG123_NEW_FORMAT)
213
+ {
214
+ mpg123_getformat(m, &rate, &channels, &enc);
215
+ initwavformat();
216
+ initwav();
217
+ fprintf(stderr, "New format: %li Hz, %i channels, encoding value %i\n", rate, channels, enc);
218
+ }
219
+ fwrite(audio, sizeof(unsigned char), bytes, out);
220
+ outc += bytes;
221
+ }
222
+
223
+ if(ret == MPG123_ERR)
224
+ {
225
+ fprintf(stderr, "Error: %s", mpg123_strerror(m));
226
+ break;
227
+ }
228
+ }
229
+
230
+ fprintf(stderr, "Finished\n", (unsigned long)inc, (unsigned long)outc);
231
+
232
+ closewav();
233
+ fclose(out);
234
+ fclose(in);
235
+ mpg123_delete(m);
236
+ mpg123_exit();
237
+ return 0;
238
+ }
@@ -0,0 +1,178 @@
1
+ /*
2
+ id3dump: Print ID3 tags of files, scanned using libmpg123.
3
+
4
+ copyright 2007 by the mpg123 project - free software under the terms of the LGPL 2.1
5
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
6
+ initially written by Thomas Orgis
7
+ */
8
+
9
+ #include "mpg123.h"
10
+ #include <string.h>
11
+ #include "stdio.h"
12
+ #include "sys/types.h"
13
+
14
+ /* Helper for v1 printing, get these strings their zero byte. */
15
+ void safe_print(char* name, char *data, size_t size)
16
+ {
17
+ char safe[31];
18
+ if(size>30) return;
19
+
20
+ memcpy(safe, data, size);
21
+ safe[size] = 0;
22
+ printf("%s: %s\n", name, safe);
23
+ }
24
+
25
+ /* Print out ID3v1 info. */
26
+ void print_v1(mpg123_id3v1 *v1)
27
+ {
28
+ safe_print("Title", v1->title, sizeof(v1->title));
29
+ safe_print("Artist", v1->artist, sizeof(v1->artist));
30
+ safe_print("Album", v1->album, sizeof(v1->album));
31
+ safe_print("Year", v1->year, sizeof(v1->year));
32
+ safe_print("Comment", v1->comment, sizeof(v1->comment));
33
+ printf("Genre: %i", v1->genre);
34
+ }
35
+
36
+ /* Split up a number of lines separated by \n, \r, both or just zero byte
37
+ and print out each line with specified prefix. */
38
+ void print_lines(const char* prefix, mpg123_string *inlines)
39
+ {
40
+ size_t i;
41
+ int hadcr = 0, hadlf = 0;
42
+ char *lines = NULL;
43
+ char *line = NULL;
44
+ size_t len = 0;
45
+
46
+ if(inlines != NULL && inlines->fill)
47
+ {
48
+ lines = inlines->p;
49
+ len = inlines->fill;
50
+ }
51
+ else return;
52
+
53
+ line = lines;
54
+ for(i=0; i<len; ++i)
55
+ {
56
+ if(lines[i] == '\n' || lines[i] == '\r' || lines[i] == 0)
57
+ {
58
+ char save = lines[i]; /* saving, changing, restoring a byte in the data */
59
+ if(save == '\n') ++hadlf;
60
+ if(save == '\r') ++hadcr;
61
+ if((hadcr || hadlf) && hadlf % 2 == 0 && hadcr % 2 == 0) line = "";
62
+
63
+ if(line)
64
+ {
65
+ lines[i] = 0;
66
+ printf("%s%s\n", prefix, line);
67
+ line = NULL;
68
+ lines[i] = save;
69
+ }
70
+ }
71
+ else
72
+ {
73
+ hadlf = hadcr = 0;
74
+ if(line == NULL) line = lines+i;
75
+ }
76
+ }
77
+ }
78
+
79
+ /* Print out the named ID3v2 fields. */
80
+ void print_v2(mpg123_id3v2 *v2)
81
+ {
82
+ print_lines("Title: ", v2->title);
83
+ print_lines("Artist: ", v2->artist);
84
+ print_lines("Album: ", v2->album);
85
+ print_lines("Year: ", v2->year);
86
+ print_lines("Comment: ", v2->comment);
87
+ print_lines("Genre: ", v2->genre);
88
+ }
89
+
90
+ /* Print out all stored ID3v2 fields with their 4-character IDs. */
91
+ void print_raw_v2(mpg123_id3v2 *v2)
92
+ {
93
+ size_t i;
94
+ for(i=0; i<v2->texts; ++i)
95
+ {
96
+ char id[5];
97
+ char lang[4];
98
+ memcpy(id, v2->text[i].id, 4);
99
+ id[4] = 0;
100
+ memcpy(lang, v2->text[i].lang, 3);
101
+ lang[3] = 0;
102
+ if(v2->text[i].description.fill)
103
+ printf("%s language(%s) description(%s)\n", id, lang, v2->text[i].description.p);
104
+ else printf("%s language(%s)\n", id, lang);
105
+
106
+ print_lines(" ", &v2->text[i].text);
107
+ }
108
+ for(i=0; i<v2->extras; ++i)
109
+ {
110
+ char id[5];
111
+ memcpy(id, v2->extra[i].id, 4);
112
+ id[4] = 0;
113
+ printf( "%s description(%s)\n",
114
+ id,
115
+ v2->extra[i].description.fill ? v2->extra[i].description.p : "" );
116
+ print_lines(" ", &v2->extra[i].text);
117
+ }
118
+ for(i=0; i<v2->comments; ++i)
119
+ {
120
+ char id[5];
121
+ char lang[4];
122
+ memcpy(id, v2->comment_list[i].id, 4);
123
+ id[4] = 0;
124
+ memcpy(lang, v2->comment_list[i].lang, 3);
125
+ lang[3] = 0;
126
+ printf( "%s description(%s) language(%s): \n",
127
+ id,
128
+ v2->comment_list[i].description.fill ? v2->comment_list[i].description.p : "",
129
+ lang );
130
+ print_lines(" ", &v2->comment_list[i].text);
131
+ }
132
+ }
133
+
134
+ int main(int argc, char **argv)
135
+ {
136
+ int i;
137
+ mpg123_handle* m;
138
+ if(argc < 2)
139
+ {
140
+ fprintf(stderr, "\nI will print some ID3 tag fields of MPEG audio files.\n");
141
+ fprintf(stderr, "\nUsage: %s <mpeg audio file list>\n\n", argv[0]);
142
+ return -1;
143
+ }
144
+ mpg123_init();
145
+ m = mpg123_new(NULL, NULL);
146
+
147
+ for(i=1; i < argc; ++i)
148
+ {
149
+ mpg123_id3v1 *v1;
150
+ mpg123_id3v2 *v2;
151
+ int meta;
152
+ if(mpg123_open(m, argv[i]) != MPG123_OK)
153
+ {
154
+ fprintf(stderr, "Cannot open %s: %s\n", argv[i], mpg123_strerror(m));
155
+ continue;
156
+ }
157
+ mpg123_scan(m);
158
+ meta = mpg123_meta_check(m);
159
+ if(meta & MPG123_ID3 && mpg123_id3(m, &v1, &v2) == MPG123_OK)
160
+ {
161
+ printf("Tag data on %s:\n", argv[i]);
162
+ printf("\n==== ID3v1 ====\n");
163
+ if(v1 != NULL) print_v1(v1);
164
+
165
+ printf("\n==== ID3v2 ====\n");
166
+ if(v2 != NULL) print_v2(v2);
167
+
168
+ printf("\n==== ID3v2 Raw frames ====\n");
169
+ if(v2 != NULL) print_raw_v2(v2);
170
+ }
171
+ else printf("Nothing found for %s.\n", argv[i]);
172
+
173
+ mpg123_close(m);
174
+ }
175
+ mpg123_delete(m);
176
+ mpg123_exit();
177
+ return 0;
178
+ }