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,413 @@
1
+ /*
2
+ * src.h is part of the Scorched End Audio Library (SEAL) and is licensed
3
+ * under the terms of the GNU Lesser General Public License. See COPYING
4
+ * attached with the library.
5
+ *
6
+ * src.h wraps up the abstract data type `seal_src_t'. Sources are abstract
7
+ * representations of sound sources which emit sound in Euclidean space.
8
+ */
9
+
10
+ #ifndef _SEAL_SRC_H_
11
+ #define _SEAL_SRC_H_
12
+
13
+ #include <stddef.h>
14
+ #include "buf.h"
15
+ #include "stream.h"
16
+ #include "err.h"
17
+
18
+ /*
19
+ * A just-initialized source is of the `SEAL_UNDETERMINED' type. A source that
20
+ * attaches a buffer through `seal_set_src_buf' will become the `SEAL_STATIC'
21
+ * type. A source that streams audio from file through `seal_set_src_stream'
22
+ * will become the `SEAL_STREAMING' type.
23
+ */
24
+ enum seal_src_type_t
25
+ {
26
+ SEAL_UNDETERMINED,
27
+ SEAL_STATIC,
28
+ SEAL_STREAMING
29
+ };
30
+
31
+ /*
32
+ * A just-initialized source is in the `SEAL_INITIAL' state. After a call to
33
+ * `seal_play_src', the source will enter the `SEAL_PLAYING' state. After a
34
+ * call to `seal_pause_src', the source will enter the `SEAL_PAUSED' state.
35
+ * After a call to `seal_stop_src', the source will enter the `SEAL_STOPPED'
36
+ * state.
37
+ */
38
+ enum seal_src_state_t
39
+ {
40
+ SEAL_INITIAL,
41
+ SEAL_PLAYING,
42
+ SEAL_PAUSED,
43
+ SEAL_STOPPED
44
+ };
45
+
46
+ typedef struct seal_src_t seal_src_t;
47
+ typedef enum seal_src_type_t seal_src_type_t;
48
+ typedef enum seal_src_state_t seal_src_state_t;
49
+
50
+ #ifdef __cplusplus
51
+ extern "C" {
52
+ #endif
53
+
54
+ /*
55
+ * Initializes a new source. If the source is no longer needed, call
56
+ * `seal_destroy_source' to release any resource used by the source.
57
+ *
58
+ * @param src the source to initialize
59
+ */
60
+ seal_err_t seal_init_src(seal_src_t*);
61
+
62
+ /*
63
+ * Destroys a source. Will not free the associated buffer or stream. Can
64
+ * be applied on sources in any state and will automatically stop any
65
+ * playback.
66
+ *
67
+ * @param src the source to destroy
68
+ */
69
+ seal_err_t seal_destroy_src(seal_src_t*);
70
+
71
+ /*
72
+ * Starts to play a source. Applying to a `SEAL_PLAYING' source will restart
73
+ * the playback from the beginning thus reset the sampling offset too. If the
74
+ * source is a streaming source, restarting the playback will automatically
75
+ * rewind the stream to the beginning. Applying to a `SEAL_INITIAL' or
76
+ * `SEAL_STOPPED' source will start start playing and change its state to
77
+ * `SEAL_PLAYING'. Applying to a `SEAL_PAUSED' source will resume playing and
78
+ * change its state to `SEAL_PLAYING'.
79
+ *
80
+ * @param src the source to play
81
+ */
82
+ seal_err_t seal_play_src(seal_src_t*);
83
+
84
+ /*
85
+ * Pauses the playing of a source. Applying to a `SEAL_PLAYING' source will
86
+ * change its state to `SEAL_PAUSED'. Applying to a `SEAL_INITIAL',
87
+ * `SEAL_PAUSED' or `SEAL_STOPPED' source has no effect.
88
+ *
89
+ * @param src the source to pause
90
+ */
91
+ seal_err_t seal_pause_src(seal_src_t*);
92
+
93
+ /*
94
+ * Stops the playing of a source. Applying to a `SEAL_PLAYING' or
95
+ * `SEAL_PAUSED' source will change its state to `SEAL_STOPPED'. Applying to a
96
+ * `SEAL_INITIAL' or `SEAL_STOPPED' source has no effect. Resets the sampling
97
+ * offset.
98
+ *
99
+ * @param src the source to stop
100
+ */
101
+ seal_err_t seal_stop_src(seal_src_t*);
102
+
103
+ /*
104
+ * Rewinds a source to the beginning. Applying to a `SEAL_PLAYING',
105
+ * `SEAL_PAUSED' or `SEAL_STOPPED' source will change its state to
106
+ * `SEAL_INITIAL'. Applying to a `SEAL_INITIAL' source has no effect. The
107
+ * sampling offset will be reset to the beginning. Other attributes are
108
+ * preserved.
109
+ *
110
+ * @param src the source to rewind
111
+ */
112
+ seal_err_t seal_rewind_src(seal_src_t*);
113
+
114
+ /*
115
+ * Associates a buffer with a source so that the source is ready to play the
116
+ * audio contained in the buffer. Can be applied only to sources in the
117
+ * `SEAL_INITIAL' or `SEAL_STOPPED' states and that are not of the
118
+ * `SEAL_STREAMING' type. If successful, the source will become or remain the
119
+ * `SEAL_STATIC' type.
120
+ *
121
+ * @param src the source to associate the buffer `buf' with
122
+ * @param buf the buffer to associate the source `src' with
123
+ */
124
+ seal_err_t seal_set_src_buf(seal_src_t*, seal_buf_t*);
125
+
126
+ /*
127
+ * Associates an opened stream with a source so that audio data can be
128
+ * continuously fetched from a file rather than loading everything to memory
129
+ * at once. Can be applied to sources in any playing state but not on the
130
+ * `SEAL_STATIC' type of source. When replacing an attached stream, the new
131
+ * stream must have the same audio format as the old one. Also be aware of the
132
+ * fact that in this case there could still be some chunks of the old stream
133
+ * at the front of the streaming queue waiting to be played. If successful,
134
+ * the source will become or remain the `SEAL_STREAMING' type. The streaming
135
+ * queue will be filled after this call returns; after the queue starts to be
136
+ * played, `seal_update_src' should be called to refill the queue.
137
+ *
138
+ * @param src the source to associate the stream `stream' with
139
+ * @param stream the stream to associate the source `src' with
140
+ */
141
+ seal_err_t seal_set_src_stream(seal_src_t*, seal_stream_t*);
142
+
143
+ /*
144
+ * Updates a streaming source. If the source is not up-to-date, the playback
145
+ * will end before the end of the stream is reached. Does nothing if the
146
+ * passed-in source is not a streaming source. Also does nothing if auto
147
+ * update is on.
148
+ *
149
+ * @param src the source to update
150
+ */
151
+ seal_err_t seal_update_src(seal_src_t*);
152
+
153
+ /*
154
+ * Releases the current buffer or stream from a source (hence empties the
155
+ * queue for streaming sources). Will reset the source type to
156
+ * `SEAL_UNDETERMINED' and the source state to `SEAL_STOPPED'. Will not free
157
+ * the associated buffer or stream.
158
+ *
159
+ * @param src the source to detach the audio of
160
+ */
161
+ seal_err_t seal_detach_src_audio(seal_src_t*);
162
+
163
+ /*
164
+ * Sets the size of the streaming queue internally used by a source. The queue
165
+ * maintains a multiple buffering mechanism when streaming the audio data.
166
+ * Multiple bufferring allows buffers in the queue to be processed while the
167
+ * one at the front of the queue is still being played. A queue of size 2
168
+ * (double buffering) may still be inefficient in CPU- and I/O-bound
169
+ * situations while triple, or even quad buffering generally produces better
170
+ * sound quality in non-memory-bound situations.
171
+ *
172
+ * @param src the source to set the queue size of
173
+ * @param size the queue size in the interval [2, 63]
174
+ */
175
+ seal_err_t seal_set_src_queue_size(seal_src_t*, size_t);
176
+
177
+ /*
178
+ * Sets the maximum size, in byte, of the audio chunk which buffers the audio
179
+ * data constantly fetched from an audio stream. Using small chunks may cause
180
+ * playback to occur before the required audio chunk is ready, which in turn
181
+ * causes unexpected stop of playback.
182
+ *
183
+ * @param src the source to set the chunk size of
184
+ * @param size the chunk size in the interval [9216, 16773120]; must be a
185
+ * multiple of 9216; non-multiple value will be adjusted to the
186
+ * closest smaller multiple automatically
187
+ */
188
+ seal_err_t seal_set_src_chunk_size(seal_src_t*, size_t);
189
+
190
+ /*
191
+ * Sets the position of a source in a right-handed Cartesian coordinate
192
+ * system. Use of NaN and infinity is undefined.
193
+ *
194
+ * @param src the source to set the position of
195
+ * @param x the x position to set
196
+ * @param y the y position to set
197
+ * @param z the z position to set
198
+ */
199
+ seal_err_t seal_set_src_pos(seal_src_t*, float /*x*/, float /*y*/,
200
+ float /*z*/);
201
+
202
+ /*
203
+ * Sets the velocity of a source in a right-handed Cartesian coordinate
204
+ * system. The velocity of the source does not affect its position but is a
205
+ * factor used during the Doppler effect emulation. Use of NaN is undefined.
206
+ *
207
+ * @param src the source to set the velocity of
208
+ * @param x the x velocity to set
209
+ * @param y the y velocity to set
210
+ * @param z the z velocity to set
211
+ */
212
+ seal_err_t seal_set_src_vel(seal_src_t*, float /*x*/, float /*y*/,
213
+ float /*z*/);
214
+
215
+ /*
216
+ * Sets the pitch shift multiplier of a source. 1.0f means identity; each
217
+ * reduction by 1/2 means a pitch shift of -12 semitones; each doubling means
218
+ * a pitch shift of 12 semitones. Use of 0.0f is undefined.
219
+ *
220
+ * @param src the source to set the pitch of
221
+ * @param pitch the pitch multiplier in the interval (0.0f, +inf.)
222
+ */
223
+ seal_err_t seal_set_src_pitch(seal_src_t*, float /*pitch*/);
224
+
225
+ /*
226
+ * Sets the scalar amplitude multiplier of a source. 1.0f means that the sound
227
+ * is unattenuated; 0.5f means an attenuation of 6 dB; 0.0f means silence.
228
+ *
229
+ * @param src the source to set the gain of
230
+ * @param gain the scalar amplitude multiplier in the interval [0.0f, +inf.)
231
+ */
232
+ seal_err_t seal_set_src_gain(seal_src_t*, float /*gain*/);
233
+
234
+ /*
235
+ * Sets whether a source should be automatically updated asynchronously by a
236
+ * background thread. If this thread is running, user calls to seal_update_src
237
+ * does nothing. If auto update is disabled after it is enabled, it will take
238
+ * effect the next time the source gets played.
239
+ *
240
+ * @param src the source to set the auto update flag of
241
+ * @param automatic 1 to set it auto update or otherwise 0
242
+ */
243
+ seal_err_t seal_set_src_auto(seal_src_t*, char /*automatic*/);
244
+
245
+ /*
246
+ * Sets whether a source's position, velocity, cone and direction are all
247
+ * relative to the listener position.
248
+ *
249
+ * @param src the source to set the relative flag of
250
+ * @param relative 1 to set it relative to the listener or otherwise 0
251
+ * @return nonzero if successful or otherwise 0
252
+ */
253
+ seal_err_t seal_set_src_relative(seal_src_t*, char /*relative*/);
254
+
255
+ /*
256
+ * Sets whether the playback of a source is looping. A looping source will
257
+ * never enter the `SEAL_STOPPED' state; it will immediate enter
258
+ * `SEAL_INITIAL' and then SEAL_PLAYING after it reaches the end of the last
259
+ * buffer.
260
+ *
261
+ * @param src the source to set the looping flag of
262
+ * @param looping 1 to set it looping or otherwise 0
263
+ */
264
+ seal_err_t seal_set_src_looping(seal_src_t*, char /*looping*/);
265
+
266
+ /*
267
+ * Gets the buffer of a source. The default is 0 (null pointer).
268
+ *
269
+ * @see seal_set_src_buffer
270
+ * @param src the source to get the buffer of
271
+ * @return the buffer
272
+ */
273
+ seal_buf_t* seal_get_src_buf(seal_src_t*);
274
+
275
+ /*
276
+ * Gets the stream of a source. The default is 0 (null pointer).
277
+ *
278
+ * @see seal_set_src_stream
279
+ * @param src the source to get the stream of
280
+ * @return the receiver of the stream
281
+ */
282
+ seal_stream_t* seal_get_src_stream(seal_src_t*);
283
+
284
+ /*
285
+ * Gets the size, in byte, of a source's streaming queue. The default is 3.
286
+ *
287
+ * @see seal_set_src_queue_size
288
+ * @param src the source to get the queue size of
289
+ * @param psize the receiver of the the queue size
290
+ */
291
+ seal_err_t seal_get_src_queue_size(seal_src_t*, size_t* /*psize*/);
292
+
293
+ /*
294
+ * Gets the size, in byte, of a source's streaming chunk. The default is
295
+ * 36864.
296
+ *
297
+ * @see seal_set_src_chunk_size
298
+ * @param src the source to get the chunk size of
299
+ * @param psize the receiver of the chunk size
300
+ */
301
+ seal_err_t seal_get_src_chunk_size(seal_src_t*, size_t* /*psize*/);
302
+
303
+ /*
304
+ * Gets the position of a source. The default is ( 0.0f, 0.0f, 0.0f ).
305
+ *
306
+ * @see seal_set_src_pos
307
+ * @param src the source to get the position of
308
+ * @param px the receiver of the x position
309
+ * @param py the receiver of the y position
310
+ * @param pz the receiver of the z position
311
+ */
312
+ seal_err_t seal_get_src_pos(seal_src_t*, float* /*px*/, float* /*py*/,
313
+ float* /*pz*/);
314
+
315
+ /*
316
+ * Gets the velocity of a source. The default is ( 0.0f, 0.0f, 0.0f ).
317
+ *
318
+ * @see seal_set_src_vel
319
+ * @param src the source to get the velocity of
320
+ * @param px the receiver of the x velocity
321
+ * @param py the receiver of the y velocity
322
+ * @param pz the receiver of the z velocity
323
+ */
324
+ seal_err_t seal_get_src_vel(seal_src_t*, float* /*px*/, float* /*py*/,
325
+ float* /*pz*/);
326
+
327
+ /*
328
+ * Gets the pitch of a source. The default is 1.0f.
329
+ *
330
+ * @see seal_set_src_pitch
331
+ * @param src the source to get the pitch of
332
+ * @param ppitch the receiver of the pitch
333
+ */
334
+ seal_err_t seal_get_src_pitch(seal_src_t*, float* /*ppitch*/);
335
+
336
+ /*
337
+ * Gets the gain of a source. The default is 1.0f.
338
+ *
339
+ * @see seal_set_src_gain
340
+ * @param src the source to get the gain of
341
+ * @param pgain the receiver of the gain
342
+ */
343
+ seal_err_t seal_get_src_gain(seal_src_t*, float* /*pgain*/);
344
+
345
+ /*
346
+ * Determines if a source is automatically updated. The default is true
347
+ * (nonzero).
348
+ *
349
+ * @see seal_set_src_auto
350
+ * @param src the source to determine
351
+ * @param pauto the receiver of the auto update flag
352
+ */
353
+ seal_err_t seal_is_src_auto(seal_src_t*, char* /*pauto*/);
354
+
355
+ /*
356
+ * Determines if a source is relative. The default is false (0).
357
+ *
358
+ * @see seal_set_src_relative
359
+ * @param src the source to determine
360
+ * @param prelative the receiver of the relative flag
361
+ */
362
+ seal_err_t seal_is_src_relative(seal_src_t*, char* /*prelative*/);
363
+
364
+ /*
365
+ * Determines if a source is looping. The default is false (0).
366
+ *
367
+ * @see seal_set_src_looping
368
+ * @param src the source to determine
369
+ * @param plooping the receiver of the looping flag
370
+ */
371
+ seal_err_t seal_is_src_looping(seal_src_t*, char* /*plooping*/);
372
+
373
+ /*
374
+ * Gets the type of a source.
375
+ *
376
+ * @see enum seal_src_type_t
377
+ * @param src the source to get the source type of
378
+ * @param ptype the receiver of the source type
379
+ */
380
+ seal_err_t seal_get_src_type(seal_src_t*, seal_src_type_t* /*ptype*/);
381
+
382
+ /*
383
+ * Gets the state of a source.
384
+ *
385
+ * @see enum seal_src_state_t
386
+ * @param src the source to get the state of
387
+ * @param pstate the receiver of the source state
388
+ */
389
+ seal_err_t seal_get_src_state(seal_src_t*, seal_src_state_t* /*pstate*/);
390
+
391
+ #ifdef __cplusplus
392
+ }
393
+ #endif
394
+
395
+ /*
396
+ *****************************************************************************
397
+ * Below are **implementation details**.
398
+ *****************************************************************************
399
+ */
400
+
401
+ struct seal_src_t
402
+ {
403
+ unsigned int id;
404
+ seal_buf_t* buf;
405
+ seal_stream_t* stream;
406
+ void* updater;
407
+ size_t chunk_size : 24;
408
+ size_t queue_size : 6;
409
+ unsigned int looping : 1;
410
+ unsigned int automatic : 1;
411
+ };
412
+
413
+ #endif /* _SEAL_SRC_H_ */
@@ -0,0 +1,81 @@
1
+ /*
2
+ * stream.h is part of the Scorched End Audio Library (SEAL) and is licensed
3
+ * under the terms of the GNU Lesser General Public License. See COPYING
4
+ * attached with the library.
5
+ *
6
+ * stream.h wraps up the `seal_stream_t' data type used by streaming sources.
7
+ * It is the front end for various decoders.
8
+ */
9
+
10
+ #ifndef _SEAL_STREAM_H_
11
+ #define _SEAL_STREAM_H_
12
+
13
+ #include <stddef.h>
14
+ #include "raw.h"
15
+ #include "fmt.h"
16
+
17
+ /* Audio stream data. */
18
+ typedef struct seal_stream_t seal_stream_t;
19
+
20
+ #ifdef __cplusplus
21
+ extern "C" {
22
+ #endif
23
+
24
+ /*
25
+ * Opens a stream from the passed-in file. If the stream is no longer needed,
26
+ * call `seal_close_stream' to release the resources used by the stream.
27
+ *
28
+ * @param stream the stream to open
29
+ * @param filename the filename of the audio
30
+ * @param fmt the format of the audio file; automatic recognition of the
31
+ * audio format will be attempted if the passed-in `fmt' is
32
+ * `SEAL_UNKNOWN_FMT'
33
+ */
34
+ seal_err_t seal_open_stream(seal_stream_t*, const char* /*filename*/,
35
+ seal_fmt_t);
36
+
37
+ /*
38
+ * Streams from an opened stream.
39
+ *
40
+ * @param stream the opened stream to stream from; will be left untouched
41
+ * if an error occurs
42
+ * @param raw the receiver of the streamed PCM data; if the size of the
43
+ * streamed data is not zero, `raw->data' will be dynamically
44
+ * allocated so the caller is responsible for deallocating
45
+ * it; `raw->size' should be set to the desired size, in
46
+ * bytes, of PCM data to stream prior to this call and will
47
+ * be adjusted to the actual size, if not zero, of streamed
48
+ * data; will be left untouched if an error occurs
49
+ * @param psize the receiver of the actual size, in bytes, of streamed
50
+ * data if successful or otherwise a negative integer
51
+ */
52
+ seal_err_t seal_stream(seal_stream_t*, seal_raw_t*, size_t* /*psize*/);
53
+
54
+ /*
55
+ * Rewinds a stream to the beginning.
56
+ *
57
+ * @param stream the stream to rewind
58
+ */
59
+ seal_err_t seal_rewind_stream(seal_stream_t*);
60
+
61
+ /*
62
+ * Closes a stream opened by `seal_open_stream'.
63
+ *
64
+ * @param stream the stream to close; will be left untouched if an error
65
+ * occurs
66
+ */
67
+ seal_err_t seal_close_stream(seal_stream_t*);
68
+
69
+ #ifdef __cplusplus
70
+ }
71
+ #endif
72
+
73
+ struct seal_stream_t
74
+ {
75
+ /* Tagged union of identifiers used by different decoder libraries. */
76
+ void* id;
77
+ seal_fmt_t fmt;
78
+ seal_raw_attr_t attr;
79
+ };
80
+
81
+ #endif /* _SEAL_STREAM_H_ */