Releases: sbooth/SFBAudioEngine
Releases · sbooth/SFBAudioEngine
Version 0.10.0
What's Changed
- Slight simplification to
Renderby @sbooth in #668 - Improvements to
SubmitDecodingErrorEventby @sbooth in #669 - Integrate with new
AudioRingBufferread behavior by @sbooth in #670 - Remove
Flags::ringBufferNeedsResetby @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
erroris set on short reads by @sbooth in #677 - Use
uint8_tfor pointer arithmetic with known types by @sbooth in #678 - Use
unsigned charinstead ofuint8_tby @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:toAudioConverterby @sbooth in #684 - Don't read past DSF
datachunk when decoding by @sbooth in #685 - Add
-descriptionto decoder wrappers by @sbooth in #686 - Fix warning about implicit conversion by @sbooth in #687
- Use
EINVALinstead ofparamErrby @sbooth in #688 - Replace
SFBAudioPlayerNodewithAVAudioSourceNodeby @sbooth in #664 - Replace
-withEngine:with-modifyProcessingGraph:by @sbooth in #689 - Add an
assertafter-audioPlayer:reconfigureProcessingGraph:withFormat:by @sbooth in #690 - Improve logging in
HandleAudioEngineConfigurationChangeby @sbooth in #691 - Add
boolreturn toPauseandResumeby @sbooth in #694 - Improvements to audio session interruption handling by @sbooth in #693
- Update to C++17
ifsyntax by @sbooth in #695 - Additional error checking in DSF and DFF parsers by @sbooth in #696
- Update
CXXCoreAudioandCXXRingBufferby @sbooth in #698
Full Changelog: 0.9.1...0.10.0
Version 0.9.1
Version 0.9.0
What's Changed
- Mark
-initas designated initializer inSFBMutableDataOutputSourceby @sbooth in #647 - Increase
CXXTagLibminimum version to 2.1.1 by @sbooth in #648 - Ensure input source is open before sending
-supportsSeekingby @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
What's Changed
- Fix VLA folding warnings by @sbooth in #593
- Avoid opening file handle unnecessarily by @sbooth in #594
- Mark
SFBInputSource.newandinitas unavailable by @sbooth in #596 - Mark
SFBOutputSource.newandinitas unavailable by @sbooth in #597 - Reconfigure the audio processing graph during enqueue if needed by @sbooth in #600
- Avoid unnecessary calls to
AVAudioChannelLayoutsAreEquivalentby @sbooth in #601 - Add permissions to workflow by @sbooth in #603
- Replace
std::threadwithstd::jthreadby @sbooth in #602 - Replace
SFB::DispatchSemaphorewithdispatch_semaphore_tby @sbooth in #604 - Add
noexceptto~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_guardby @sbooth in #610 - Call
request_stopandjoindirectly by @sbooth in #611 - Handle exceptions thrown by
jthread::joinby @sbooth in #612 - Refactor
SFBAudioPlayerC++ implementation by @sbooth in #608 - Add DEBUG guard by @sbooth in #614
- Add getter to
SFBAudioPlayerforaudioPlayerNodeproperty by @sbooth in #615 - Inline simple functions by @sbooth in #616
- Remove audio engine isolation queue by @sbooth in #618
- Increase log level to
faultif 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_allocinstead ofsystem_errorby @sbooth in #631 - Rename scoped enumeration enumerators by @sbooth in #632
- Remove
mprefix from data members by @sbooth in #633 - Reformat
elseandcatchby @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 benilby @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_reader64for large file support by @sbooth in #644 - Capture
wvecby reference in lambda by @sbooth in #645 - Use renamed
AudioRingBuffermethods by @sbooth in #646
Full Changelog: 0.7.2...0.8.0
Version 0.7.2
Summary of changes:
Metadata
- Shorten properties and metadata now provided by TagLib
Encoding
- Fixed a bug in the Monkey's Audio encoder
- Fixed a bug in the libsndfile encoder
Miscellaneous
- Renamed the
_implpointer inSFBAudioPlayerNodeto avoid conflict withAVAudioNode - Updated versions of FLAC, Monkey's Audio, WavPack, mpg123, and TagLib dependencies
Version 0.7.1
Summary of changes:
Metadata
- Handle C++ exceptions when reading/writing metadata
Version 0.7.0
Summary of changes:
Playback
SFBAudioPlayerNodechanges:
- 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
SFBAudioPlayerchanges:
- Changed
-audioPlayer:nowPlayingChanged:previouslyPlaying:
Miscellaneous
- Minor refactoring of
SFBPlaybackPositionandSFBPlaybackTime - Small changes to restore compatibility with older Swift and Xcode versions
Version 0.6.0
Summary of changes:
Playback
- Improved continuity of playback state when switching audio formats
- Improved handling of multichannel audio channel mapping
SFBAudioPlayerNodechanges:
- Added
-audioPlayerNode:renderingDecoder:willChangeToDecoder:atHostTime: - Removed
-audioPlayerNode:audioWillEndAtHostTime: - Changed
-audioPlayerNode:decoderCanceled:framesRendered: - Removed
-delegateQueue
SFBAudioPlayerchanges:
- Added
-audioPlayer:reconfigureProcessingGraph:withFormat: - Removed
audioPlayer:audioWillEndAtHostTime: - Changed
-audioPlayer:nowPlayingChanged: - Changed
-audioPlayer:playbackStateChanged: - Changed
-audioPlayer:decoderCanceled:framesRendered:
- Unified playback position and time structures across Objective-C and Swift
Encoding
- FLAC and Ogg FLAC encoders now work correctly for bit depths less than 32
- FLAC compression level 0 is now supported
Conversion
- Improved handling of conversion errors
Version 0.5.0
Numerous corrections to channel layouts for multichannel audio
Various other bug fixes
Version 0.4.0
Adds tvOS support
Increases version requirements to macOS 11.0+ and iOS 15.0+