diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fe9ece9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +libs/ +.DS_Store diff --git a/AudioLib.xcodeproj/project.pbxproj b/AudioLib.xcodeproj/project.pbxproj new file mode 100644 index 0000000..cb46864 --- /dev/null +++ b/AudioLib.xcodeproj/project.pbxproj @@ -0,0 +1,536 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 420794F42B817ECA0077507F /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 420794F32B817ECA0077507F /* main.c */; }; + 420794FC2B8182940077507F /* libao.4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 420794FB2B8182940077507F /* libao.4.dylib */; }; + 420795182B8184300077507F /* audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 420795172B8184300077507F /* audio.c */; }; + 4207951A2B8185280077507F /* audio_sink_libao.c in Sources */ = {isa = PBXBuildFile; fileRef = 420795192B8185280077507F /* audio_sink_libao.c */; }; + 4207951D2B818C500077507F /* audio_source_testtone.c in Sources */ = {isa = PBXBuildFile; fileRef = 4207951C2B818C500077507F /* audio_source_testtone.c */; }; + 422D25C32B892E3F00552952 /* resample.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25C02B892E3F00552952 /* resample.c */; }; + 422D25C82B8939DF00552952 /* audio_filter_resample.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25C72B8939DF00552952 /* audio_filter_resample.c */; }; + 422D25CA2B89493100552952 /* audio_internal.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25C92B89493100552952 /* audio_internal.c */; }; + 422D25CE2B89668F00552952 /* audio_source_file.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25CD2B89668F00552952 /* audio_source_file.c */; }; + 422D25D02B896B1200552952 /* audio_decoder_mp3.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25CF2B896B1200552952 /* audio_decoder_mp3.c */; }; + 422D25ED2B896D9A00552952 /* timer.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25D22B896D9A00552952 /* timer.c */; }; + 422D25EE2B896D9A00552952 /* huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25DC2B896D9A00552952 /* huffman.c */; }; + 422D25EF2B896D9A00552952 /* fixed.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25E12B896D9A00552952 /* fixed.c */; }; + 422D25F02B896D9A00552952 /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25E22B896D9A00552952 /* version.c */; }; + 422D25F12B896D9A00552952 /* bit.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25E32B896D9A00552952 /* bit.c */; }; + 422D25F22B896D9A00552952 /* frame.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25E52B896D9A00552952 /* frame.c */; }; + 422D25F42B896D9A00552952 /* synth.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25E72B896D9A00552952 /* synth.c */; }; + 422D25F52B896D9A00552952 /* layer12.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25E92B896D9A00552952 /* layer12.c */; }; + 422D25F62B896D9A00552952 /* stream.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25EB2B896D9A00552952 /* stream.c */; }; + 422D25F72B896D9A00552952 /* layer3.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25EC2B896D9A00552952 /* layer3.c */; }; + 422D25FC2B8CE1FA00552952 /* audio_demuxer_mp3.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25FB2B8CE1FA00552952 /* audio_demuxer_mp3.c */; }; + 422D25FF2B8D2B3600552952 /* audio_sink_file.c in Sources */ = {isa = PBXBuildFile; fileRef = 422D25FE2B8D2B3600552952 /* audio_sink_file.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 420794EE2B817ECA0077507F /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 420794F02B817ECA0077507F /* AudioLib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = AudioLib; sourceTree = BUILT_PRODUCTS_DIR; }; + 420794F32B817ECA0077507F /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + 420794FB2B8182940077507F /* libao.4.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libao.4.dylib; path = ../../../../opt/homebrew/Cellar/libao/1.2.2/lib/libao.4.dylib; sourceTree = ""; }; + 420794FF2B8184300077507F /* audio_sink_libao.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_sink_libao.h; sourceTree = ""; }; + 420795012B8184300077507F /* audio_decoder_vorbis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_decoder_vorbis.h; sourceTree = ""; }; + 420795022B8184300077507F /* audio_source_icecast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_source_icecast.h; sourceTree = ""; }; + 420795032B8184300077507F /* audio_filter_resample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_filter_resample.h; sourceTree = ""; }; + 420795042B8184300077507F /* audio_source_file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_source_file.h; sourceTree = ""; }; + 420795052B8184300077507F /* audio_filter_channelmixer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_filter_channelmixer.h; sourceTree = ""; }; + 420795062B8184300077507F /* audio_source_http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_source_http.h; sourceTree = ""; }; + 420795072B8184300077507F /* audio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio.h; sourceTree = ""; }; + 420795082B8184300077507F /* audio_source_sd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_source_sd.h; sourceTree = ""; }; + 420795092B8184300077507F /* audio_filter_volume.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_filter_volume.h; sourceTree = ""; }; + 4207950A2B8184300077507F /* audio_demuxer_mp4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_demuxer_mp4.h; sourceTree = ""; }; + 4207950B2B8184300077507F /* audio_demuxer_ogg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_demuxer_ogg.h; sourceTree = ""; }; + 4207950C2B8184300077507F /* audio_decoder_flac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_decoder_flac.h; sourceTree = ""; }; + 4207950D2B8184300077507F /* audio_filter_eq.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_filter_eq.h; sourceTree = ""; }; + 4207950E2B8184300077507F /* audio_decoder_aac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_decoder_aac.h; sourceTree = ""; }; + 4207950F2B8184300077507F /* audio_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_internal.h; sourceTree = ""; }; + 420795102B8184300077507F /* audio_encoder_wav.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_encoder_wav.h; sourceTree = ""; }; + 420795112B8184300077507F /* audio_sink_i2s.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_sink_i2s.h; sourceTree = ""; }; + 420795122B8184300077507F /* audio_decoder_opus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_decoder_opus.h; sourceTree = ""; }; + 420795142B8184300077507F /* audio_decoder_wav.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_decoder_wav.h; sourceTree = ""; }; + 420795152B8184300077507F /* audio_decoder_mp3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_decoder_mp3.h; sourceTree = ""; }; + 420795162B8184300077507F /* audio_sink_sd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_sink_sd.h; sourceTree = ""; }; + 420795172B8184300077507F /* audio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = audio.c; sourceTree = ""; }; + 420795192B8185280077507F /* audio_sink_libao.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_sink_libao.c; sourceTree = ""; }; + 4207951B2B818C230077507F /* audio_source_testtone.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_source_testtone.h; sourceTree = ""; }; + 4207951C2B818C500077507F /* audio_source_testtone.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_source_testtone.c; sourceTree = ""; }; + 422D25B72B892CF900552952 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 422D25B82B892E3F00552952 /* resample_neon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resample_neon.h; sourceTree = ""; }; + 422D25BA2B892E3F00552952 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + 422D25BB2B892E3F00552952 /* fixed_arm5e.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fixed_arm5e.h; sourceTree = ""; }; + 422D25BC2B892E3F00552952 /* speex_resampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_resampler.h; sourceTree = ""; }; + 422D25BD2B892E3F00552952 /* fixed_debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fixed_debug.h; sourceTree = ""; }; + 422D25BE2B892E3F00552952 /* fixed_generic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fixed_generic.h; sourceTree = ""; }; + 422D25C02B892E3F00552952 /* resample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = resample.c; sourceTree = ""; }; + 422D25C22B892E3F00552952 /* fixed_arm4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fixed_arm4.h; sourceTree = ""; }; + 422D25C42B89306B00552952 /* os_support.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = os_support.h; sourceTree = ""; }; + 422D25C52B8930B000552952 /* arch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arch.h; sourceTree = ""; }; + 422D25C62B8930F200552952 /* speexdsp_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = speexdsp_types.h; sourceTree = ""; }; + 422D25C72B8939DF00552952 /* audio_filter_resample.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_filter_resample.c; sourceTree = ""; }; + 422D25C92B89493100552952 /* audio_internal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_internal.c; sourceTree = ""; }; + 422D25CC2B89570C00552952 /* audio_muxer_wav.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_muxer_wav.h; sourceTree = ""; }; + 422D25CD2B89668F00552952 /* audio_source_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_source_file.c; sourceTree = ""; }; + 422D25CF2B896B1200552952 /* audio_decoder_mp3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_decoder_mp3.c; sourceTree = ""; }; + 422D25D22B896D9A00552952 /* timer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = timer.c; sourceTree = ""; }; + 422D25D32B896D9A00552952 /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; + 422D25D42B896D9A00552952 /* fixed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fixed.h; sourceTree = ""; }; + 422D25D52B896D9A00552952 /* synth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = synth.h; sourceTree = ""; }; + 422D25D62B896D9A00552952 /* frame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = frame.h; sourceTree = ""; }; + 422D25D82B896D9A00552952 /* bit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bit.h; sourceTree = ""; }; + 422D25D92B896D9A00552952 /* layer3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = layer3.h; sourceTree = ""; }; + 422D25DA2B896D9A00552952 /* stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stream.h; sourceTree = ""; }; + 422D25DB2B896D9A00552952 /* layer12.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = layer12.h; sourceTree = ""; }; + 422D25DC2B896D9A00552952 /* huffman.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = huffman.c; sourceTree = ""; }; + 422D25DD2B896D9A00552952 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 422D25DE2B896D9A00552952 /* timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = timer.h; sourceTree = ""; }; + 422D25E02B896D9A00552952 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + 422D25E12B896D9A00552952 /* fixed.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fixed.c; sourceTree = ""; }; + 422D25E22B896D9A00552952 /* version.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = version.c; sourceTree = ""; }; + 422D25E32B896D9A00552952 /* bit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bit.c; sourceTree = ""; }; + 422D25E42B896D9A00552952 /* COPYRIGHT */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = COPYRIGHT; sourceTree = ""; }; + 422D25E52B896D9A00552952 /* frame.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frame.c; sourceTree = ""; }; + 422D25E72B896D9A00552952 /* synth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = synth.c; sourceTree = ""; }; + 422D25E82B896D9A00552952 /* huffman.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + 422D25E92B896D9A00552952 /* layer12.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = layer12.c; sourceTree = ""; }; + 422D25EA2B896D9A00552952 /* CREDITS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CREDITS; sourceTree = ""; }; + 422D25EB2B896D9A00552952 /* stream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stream.c; sourceTree = ""; }; + 422D25EC2B896D9A00552952 /* layer3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = layer3.c; sourceTree = ""; }; + 422D25F82B896DF800552952 /* global.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = global.h; sourceTree = ""; }; + 422D25F92B896FB800552952 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + 422D25FA2B8CE1FA00552952 /* audio_demuxer_mp3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_demuxer_mp3.h; sourceTree = ""; }; + 422D25FB2B8CE1FA00552952 /* audio_demuxer_mp3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_demuxer_mp3.c; sourceTree = ""; }; + 422D25FD2B8D2B3600552952 /* audio_sink_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_sink_file.h; sourceTree = ""; }; + 422D25FE2B8D2B3600552952 /* audio_sink_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_sink_file.c; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 420794ED2B817ECA0077507F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 420794FC2B8182940077507F /* libao.4.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 420794E72B817ECA0077507F = { + isa = PBXGroup; + children = ( + 420794FD2B8184300077507F /* audio */, + 420794F22B817ECA0077507F /* AudioLib */, + 420794F12B817ECA0077507F /* Products */, + 420794FA2B8182940077507F /* Frameworks */, + ); + sourceTree = ""; + }; + 420794F12B817ECA0077507F /* Products */ = { + isa = PBXGroup; + children = ( + 420794F02B817ECA0077507F /* AudioLib */, + ); + name = Products; + sourceTree = ""; + }; + 420794F22B817ECA0077507F /* AudioLib */ = { + isa = PBXGroup; + children = ( + 420794F32B817ECA0077507F /* main.c */, + ); + path = AudioLib; + sourceTree = ""; + }; + 420794FA2B8182940077507F /* Frameworks */ = { + isa = PBXGroup; + children = ( + 420794FB2B8182940077507F /* libao.4.dylib */, + ); + name = Frameworks; + sourceTree = ""; + }; + 420794FD2B8184300077507F /* audio */ = { + isa = PBXGroup; + children = ( + 422D25B52B89297900552952 /* deps */, + 420794FE2B8184300077507F /* include */, + 420795172B8184300077507F /* audio.c */, + 422D25C92B89493100552952 /* audio_internal.c */, + 4207951C2B818C500077507F /* audio_source_testtone.c */, + 422D25CD2B89668F00552952 /* audio_source_file.c */, + 422D25C72B8939DF00552952 /* audio_filter_resample.c */, + 420795192B8185280077507F /* audio_sink_libao.c */, + 422D25FE2B8D2B3600552952 /* audio_sink_file.c */, + 422D25CF2B896B1200552952 /* audio_decoder_mp3.c */, + 422D25FB2B8CE1FA00552952 /* audio_demuxer_mp3.c */, + ); + path = audio; + sourceTree = ""; + }; + 420794FE2B8184300077507F /* include */ = { + isa = PBXGroup; + children = ( + 422D25CB2B8956D800552952 /* todo */, + 420795072B8184300077507F /* audio.h */, + 4207950F2B8184300077507F /* audio_internal.h */, + 422D25FA2B8CE1FA00552952 /* audio_demuxer_mp3.h */, + 420795152B8184300077507F /* audio_decoder_mp3.h */, + 4207951B2B818C230077507F /* audio_source_testtone.h */, + 420795042B8184300077507F /* audio_source_file.h */, + 420795032B8184300077507F /* audio_filter_resample.h */, + 420794FF2B8184300077507F /* audio_sink_libao.h */, + 422D25FD2B8D2B3600552952 /* audio_sink_file.h */, + ); + path = include; + sourceTree = ""; + }; + 422D25B52B89297900552952 /* deps */ = { + isa = PBXGroup; + children = ( + 422D25D12B896D9A00552952 /* mp3 */, + 422D25B62B892CDA00552952 /* resampler */, + ); + path = deps; + sourceTree = ""; + }; + 422D25B62B892CDA00552952 /* resampler */ = { + isa = PBXGroup; + children = ( + 422D25C62B8930F200552952 /* speexdsp_types.h */, + 422D25C52B8930B000552952 /* arch.h */, + 422D25C42B89306B00552952 /* os_support.h */, + 422D25BA2B892E3F00552952 /* config.h */, + 422D25C22B892E3F00552952 /* fixed_arm4.h */, + 422D25BB2B892E3F00552952 /* fixed_arm5e.h */, + 422D25BD2B892E3F00552952 /* fixed_debug.h */, + 422D25BE2B892E3F00552952 /* fixed_generic.h */, + 422D25B82B892E3F00552952 /* resample_neon.h */, + 422D25C02B892E3F00552952 /* resample.c */, + 422D25BC2B892E3F00552952 /* speex_resampler.h */, + 422D25B72B892CF900552952 /* README.md */, + ); + path = resampler; + sourceTree = ""; + }; + 422D25CB2B8956D800552952 /* todo */ = { + isa = PBXGroup; + children = ( + 420795012B8184300077507F /* audio_decoder_vorbis.h */, + 420795022B8184300077507F /* audio_source_icecast.h */, + 420795052B8184300077507F /* audio_filter_channelmixer.h */, + 420795062B8184300077507F /* audio_source_http.h */, + 420795082B8184300077507F /* audio_source_sd.h */, + 420795092B8184300077507F /* audio_filter_volume.h */, + 4207950A2B8184300077507F /* audio_demuxer_mp4.h */, + 4207950B2B8184300077507F /* audio_demuxer_ogg.h */, + 4207950C2B8184300077507F /* audio_decoder_flac.h */, + 4207950D2B8184300077507F /* audio_filter_eq.h */, + 4207950E2B8184300077507F /* audio_decoder_aac.h */, + 420795102B8184300077507F /* audio_encoder_wav.h */, + 420795112B8184300077507F /* audio_sink_i2s.h */, + 420795122B8184300077507F /* audio_decoder_opus.h */, + 420795142B8184300077507F /* audio_decoder_wav.h */, + 420795162B8184300077507F /* audio_sink_sd.h */, + 422D25CC2B89570C00552952 /* audio_muxer_wav.h */, + ); + path = todo; + sourceTree = ""; + }; + 422D25D12B896D9A00552952 /* mp3 */ = { + isa = PBXGroup; + children = ( + 422D25F92B896FB800552952 /* config.h */, + 422D25F82B896DF800552952 /* global.h */, + 422D25D32B896D9A00552952 /* version.h */, + 422D25D42B896D9A00552952 /* fixed.h */, + 422D25E82B896D9A00552952 /* huffman.h */, + 422D25D82B896D9A00552952 /* bit.h */, + 422D25DE2B896D9A00552952 /* timer.h */, + 422D25DA2B896D9A00552952 /* stream.h */, + 422D25D62B896D9A00552952 /* frame.h */, + 422D25D52B896D9A00552952 /* synth.h */, + 422D25D92B896D9A00552952 /* layer3.h */, + 422D25DB2B896D9A00552952 /* layer12.h */, + 422D25E22B896D9A00552952 /* version.c */, + 422D25E12B896D9A00552952 /* fixed.c */, + 422D25DC2B896D9A00552952 /* huffman.c */, + 422D25E32B896D9A00552952 /* bit.c */, + 422D25D22B896D9A00552952 /* timer.c */, + 422D25EB2B896D9A00552952 /* stream.c */, + 422D25E52B896D9A00552952 /* frame.c */, + 422D25E72B896D9A00552952 /* synth.c */, + 422D25EC2B896D9A00552952 /* layer3.c */, + 422D25E92B896D9A00552952 /* layer12.c */, + 422D25DD2B896D9A00552952 /* README.md */, + 422D25E42B896D9A00552952 /* COPYRIGHT */, + 422D25EA2B896D9A00552952 /* CREDITS */, + 422D25E02B896D9A00552952 /* COPYING */, + ); + path = mp3; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 420794EF2B817ECA0077507F /* AudioLib */ = { + isa = PBXNativeTarget; + buildConfigurationList = 420794F72B817ECA0077507F /* Build configuration list for PBXNativeTarget "AudioLib" */; + buildPhases = ( + 420794EC2B817ECA0077507F /* Sources */, + 420794ED2B817ECA0077507F /* Frameworks */, + 420794EE2B817ECA0077507F /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = AudioLib; + productName = AudioLib; + productReference = 420794F02B817ECA0077507F /* AudioLib */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 420794E82B817ECA0077507F /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastUpgradeCheck = 1520; + TargetAttributes = { + 420794EF2B817ECA0077507F = { + CreatedOnToolsVersion = 15.2; + }; + }; + }; + buildConfigurationList = 420794EB2B817ECA0077507F /* Build configuration list for PBXProject "AudioLib" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 420794E72B817ECA0077507F; + productRefGroup = 420794F12B817ECA0077507F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 420794EF2B817ECA0077507F /* AudioLib */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 420794EC2B817ECA0077507F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 422D25F22B896D9A00552952 /* frame.c in Sources */, + 422D25F52B896D9A00552952 /* layer12.c in Sources */, + 422D25EF2B896D9A00552952 /* fixed.c in Sources */, + 422D25EE2B896D9A00552952 /* huffman.c in Sources */, + 4207951A2B8185280077507F /* audio_sink_libao.c in Sources */, + 420795182B8184300077507F /* audio.c in Sources */, + 420794F42B817ECA0077507F /* main.c in Sources */, + 422D25F42B896D9A00552952 /* synth.c in Sources */, + 422D25F12B896D9A00552952 /* bit.c in Sources */, + 422D25CA2B89493100552952 /* audio_internal.c in Sources */, + 422D25C82B8939DF00552952 /* audio_filter_resample.c in Sources */, + 422D25FC2B8CE1FA00552952 /* audio_demuxer_mp3.c in Sources */, + 422D25CE2B89668F00552952 /* audio_source_file.c in Sources */, + 422D25D02B896B1200552952 /* audio_decoder_mp3.c in Sources */, + 422D25ED2B896D9A00552952 /* timer.c in Sources */, + 422D25F02B896D9A00552952 /* version.c in Sources */, + 4207951D2B818C500077507F /* audio_source_testtone.c in Sources */, + 422D25FF2B8D2B3600552952 /* audio_sink_file.c in Sources */, + 422D25F72B896D9A00552952 /* layer3.c in Sources */, + 422D25F62B896D9A00552952 /* stream.c in Sources */, + 422D25C32B892E3F00552952 /* resample.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 420794F52B817ECA0077507F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MACOSX_DEPLOYMENT_TARGET = 14.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 420794F62B817ECA0077507F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MACOSX_DEPLOYMENT_TARGET = 14.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + }; + name = Release; + }; + 420794F82B817ECA0077507F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + GCC_C_LANGUAGE_STANDARD = c99; + HEADER_SEARCH_PATHS = /opt/homebrew/include; + LIBRARY_SEARCH_PATHS = /opt/homebrew/lib; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 420794F92B817ECA0077507F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + GCC_C_LANGUAGE_STANDARD = c99; + HEADER_SEARCH_PATHS = /opt/homebrew/include; + LIBRARY_SEARCH_PATHS = /opt/homebrew/lib; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 420794EB2B817ECA0077507F /* Build configuration list for PBXProject "AudioLib" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 420794F52B817ECA0077507F /* Debug */, + 420794F62B817ECA0077507F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 420794F72B817ECA0077507F /* Build configuration list for PBXNativeTarget "AudioLib" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 420794F82B817ECA0077507F /* Debug */, + 420794F92B817ECA0077507F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 420794E82B817ECA0077507F /* Project object */; +} diff --git a/AudioLib.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AudioLib.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/AudioLib.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/AudioLib.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/AudioLib.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/AudioLib.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/AudioLib.xcodeproj/project.xcworkspace/xcuserdata/dark.xcuserdatad/UserInterfaceState.xcuserstate b/AudioLib.xcodeproj/project.xcworkspace/xcuserdata/dark.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..e063bcf Binary files /dev/null and b/AudioLib.xcodeproj/project.xcworkspace/xcuserdata/dark.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/AudioLib.xcodeproj/xcuserdata/dark.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/AudioLib.xcodeproj/xcuserdata/dark.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..4922abb --- /dev/null +++ b/AudioLib.xcodeproj/xcuserdata/dark.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + diff --git a/AudioLib.xcodeproj/xcuserdata/dark.xcuserdatad/xcschemes/xcschememanagement.plist b/AudioLib.xcodeproj/xcuserdata/dark.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..5f12d2d --- /dev/null +++ b/AudioLib.xcodeproj/xcuserdata/dark.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + AudioLib.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/AudioLib/main.c b/AudioLib/main.c new file mode 100644 index 0000000..050dc66 --- /dev/null +++ b/AudioLib/main.c @@ -0,0 +1,40 @@ +#include + +#include "audio.h" +#include "audio_source_file.h" +#include "audio_demuxer_mp3.h" +#include "audio_decoder_mp3.h" +#include "audio_filter_resample.h" +#include "audio_sink_libao.h" + +int main(int argc, char **argv) { + AudioPipeline *pipeline; + + pipeline = audio_pipeline_assemble( + audio_source_file("/Users/dark/test2.mp3", 512), + audio_demuxer_mp3(), + audio_decoder_mp3(), + // audio_filter_resample(48000), + audio_sink_libao(), + NULL + ); + + if (pipeline != NULL) { + /* Assembly worked, start the thing ! */ + AudioPipelineStatus result = pipeline->start(pipeline); + + if (result != PipelineFinished) { + fprintf(stderr, "Pipeline failed, status was %d\n", result); + } else { + fprintf(stderr, "Pipeline finished.\n"); + } + + /* We're done here, disassemble and free everything */ + audio_pipeline_destroy(pipeline); + } else { + fprintf(stderr, "Failed to assemble MP3 pipeline!\n"); + return 1; + } + + return 0; +}