Skip to content

Releases: sbooth/SFBAudioEngine

Version 0.10.0

29 Dec 23:50
196ffcc

Choose a tag to compare

What's Changed

  • Slight simplification to Render by @sbooth in #668
  • Improvements to SubmitDecodingErrorEvent by @sbooth in #669
  • Integrate with new AudioRingBuffer read behavior by @sbooth in #670
  • Remove Flags::ringBufferNeedsReset by @sbooth in #671
  • Simplify ring buffer reset logic by @sbooth in #672
  • Use a longer event semaphore timeout when idle by @sbooth in #676
  • Ensure error is set on short reads by @sbooth in #677
  • Use uint8_t for pointer arithmetic with known types by @sbooth in #678
  • Use unsigned char instead of uint8_t by @sbooth in #679
  • Return an error on decoding failure by @sbooth in #680
  • Fixes to SubmitDecodingErrorEvent() by @sbooth in #682
  • Ensure error object is created on failure by @sbooth in #683
  • Add -closeReturningError: to AudioConverter by @sbooth in #684
  • Don't read past DSF data chunk when decoding by @sbooth in #685
  • Add -description to decoder wrappers by @sbooth in #686
  • Fix warning about implicit conversion by @sbooth in #687
  • Use EINVAL instead of paramErr by @sbooth in #688
  • Replace SFBAudioPlayerNode with AVAudioSourceNode by @sbooth in #664
  • Replace -withEngine: with -modifyProcessingGraph: by @sbooth in #689
  • Add an assert after -audioPlayer:reconfigureProcessingGraph:withFormat: by @sbooth in #690
  • Improve logging in HandleAudioEngineConfigurationChange by @sbooth in #691
  • Add bool return to Pause and Resume by @sbooth in #694
  • Improvements to audio session interruption handling by @sbooth in #693
  • Update to C++17 if syntax by @sbooth in #695
  • Additional error checking in DSF and DFF parsers by @sbooth in #696
  • Update CXXCoreAudio and CXXRingBuffer by @sbooth in #698

Full Changelog: 0.9.1...0.10.0

Version 0.9.1

20 Dec 00:40
720933f

Choose a tag to compare

What's Changed

  • Remove use of GCD semaphores from real-time thread by @sbooth in #663
  • Update CXXRingBuffer to version 0.3.0 by @sbooth in #666
  • Update CXXCoreAudio and CXXAudioToolbox by @sbooth in #667

Full Changelog: 0.9.0...0.9.1

Version 0.9.0

10 Dec 20:49
124da31

Choose a tag to compare

What's Changed

  • Mark -init as designated initializer in SFBMutableDataOutputSource by @sbooth in #647
  • Increase CXXTagLib minimum version to 2.1.1 by @sbooth in #648
  • Ensure input source is open before sending -supportsSeeking by @sbooth in #649
  • Avoid logging a null decoder by @sbooth in #652
  • Refactor processing graph configuration by @sbooth in #654
  • Check if engine is running before sending startAndReturnError: by @sbooth in #655
  • Add a lock protecting enqueues and engine configuration changes by @sbooth in #653
  • Correct name of the player node getter method by @sbooth in #657
  • Additional comments by @sbooth in #658
  • Rename decoder managment methods by @sbooth in #659
  • Remove explicitly deleted move constructor and assignment operator by @sbooth in #660
  • Reset decoder state in -openReturningError: and -closeReturningError: by @sbooth in #578
  • Reset encoder state in -openReturningError: and -closeReturningError: by @sbooth in #661
  • Add a lock protecting the audio player node by @sbooth in #640
  • Add - to source code marks by @sbooth in #662

Full Changelog: 0.8.0...0.9.0

Version 0.8.0

30 Nov 12:53
b82066d

Choose a tag to compare

What's Changed

  • Fix VLA folding warnings by @sbooth in #593
  • Avoid opening file handle unnecessarily by @sbooth in #594
  • Mark SFBInputSource.new and init as unavailable by @sbooth in #596
  • Mark SFBOutputSource.new and init as unavailable by @sbooth in #597
  • Reconfigure the audio processing graph during enqueue if needed by @sbooth in #600
  • Avoid unnecessary calls to AVAudioChannelLayoutsAreEquivalent by @sbooth in #601
  • Add permissions to workflow by @sbooth in #603
  • Replace std::thread with std::jthread by @sbooth in #602
  • Replace SFB::DispatchSemaphore with dispatch_semaphore_t by @sbooth in #604
  • Add noexcept to ~AudioPlayerNode() by @sbooth in #605
  • Small improvements to host time functions by @sbooth in #606
  • Use scoped enumerations for flags by @sbooth in #607
  • CTAD for std::lock_guard by @sbooth in #610
  • Call request_stop and join directly by @sbooth in #611
  • Handle exceptions thrown by jthread::join by @sbooth in #612
  • Refactor SFBAudioPlayer C++ implementation by @sbooth in #608
  • Add DEBUG guard by @sbooth in #614
  • Add getter to SFBAudioPlayer for audioPlayerNode property by @sbooth in #615
  • Inline simple functions by @sbooth in #616
  • Remove audio engine isolation queue by @sbooth in #618
  • Increase log level to fault if mpg123 fails to initialize by @sbooth in #624
  • Refactor package dependencies by @sbooth in #621
  • Skip junk in MP3 files when performing content type detection by @sbooth in #626
  • Update to Monkey's Audio SDK version 11.82 by @sbooth in #627
  • Bump actions/checkout from 5 to 6 by @dependabot[bot] in #628
  • Add explicit memory ordering by @sbooth in #629
  • Throw bad_alloc instead of system_error by @sbooth in #631
  • Rename scoped enumeration enumerators by @sbooth in #632
  • Remove m prefix from data members by @sbooth in #633
  • Reformat else and catch by @sbooth in #634
  • Refactor audio engine setup and player node creation by @sbooth in #635
  • Remove unnecessary assertion by @sbooth in #636
  • Update data member name by @sbooth in #637
  • Update audio player log name by @sbooth in #638
  • Simplify code since playerNode_ will not be nil by @sbooth in #639
  • Update CXXAudioToolbox to version 0.1.1 by @sbooth in #641
  • Update mpg123 to version 1.33.3 by @sbooth in #642
  • Update ogg to version 1.3.6 by @sbooth in #643
  • Use mpg123_reader64 for large file support by @sbooth in #644
  • Capture wvec by reference in lambda by @sbooth in #645
  • Use renamed AudioRingBuffer methods by @sbooth in #646

Full Changelog: 0.7.2...0.8.0

Version 0.7.2

01 Sep 13:10
e5b8fda

Choose a tag to compare

Summary of changes:

Metadata

  1. Shorten properties and metadata now provided by TagLib

Encoding

  1. Fixed a bug in the Monkey's Audio encoder
  2. Fixed a bug in the libsndfile encoder

Miscellaneous

  1. Renamed the _impl pointer in SFBAudioPlayerNode to avoid conflict with AVAudioNode
  2. Updated versions of FLAC, Monkey's Audio, WavPack, mpg123, and TagLib dependencies

Version 0.7.1

12 Mar 13:12
2c36bab

Choose a tag to compare

Summary of changes:

Metadata

  1. Handle C++ exceptions when reading/writing metadata

Version 0.7.0

05 Feb 15:51
3689649

Choose a tag to compare

Summary of changes:

Playback

  1. SFBAudioPlayerNode changes:
  • Added ability to seek backward in a rendering decoder after decoding has finished
  • Fixed race condition accessing active decoders
  • Decoding now uses a dedicated thread
  1. SFBAudioPlayer changes:
  • Changed -audioPlayer:nowPlayingChanged:previouslyPlaying:

Miscellaneous

  1. Minor refactoring of SFBPlaybackPosition and SFBPlaybackTime
  2. Small changes to restore compatibility with older Swift and Xcode versions

Version 0.6.0

17 Jan 22:34
02fa6a4

Choose a tag to compare

Summary of changes:

Playback

  1. Improved continuity of playback state when switching audio formats
  2. Improved handling of multichannel audio channel mapping
  3. SFBAudioPlayerNode changes:
  • Added -audioPlayerNode:renderingDecoder:willChangeToDecoder:atHostTime:
  • Removed -audioPlayerNode:audioWillEndAtHostTime:
  • Changed -audioPlayerNode:decoderCanceled:framesRendered:
  • Removed -delegateQueue
  1. SFBAudioPlayer changes:
  • Added -audioPlayer:reconfigureProcessingGraph:withFormat:
  • Removed audioPlayer:audioWillEndAtHostTime:
  • Changed -audioPlayer:nowPlayingChanged:
  • Changed -audioPlayer:playbackStateChanged:
  • Changed -audioPlayer:decoderCanceled:framesRendered:
  1. Unified playback position and time structures across Objective-C and Swift

Encoding

  1. FLAC and Ogg FLAC encoders now work correctly for bit depths less than 32
  2. FLAC compression level 0 is now supported

Conversion

  1. Improved handling of conversion errors

Version 0.5.0

10 Dec 16:30
0287258

Choose a tag to compare

Numerous corrections to channel layouts for multichannel audio

Various other bug fixes

Version 0.4.0

18 Nov 14:48
bf628d2

Choose a tag to compare

Adds tvOS support

Increases version requirements to macOS 11.0+ and iOS 15.0+