Releases: google/oboe
1.4.2
We fixed issue #535, which caused an intermittent crash in releaseBuffer() when a headset was plugged in. This mostly affected OpenSL ES. But it could affect AAudio if you called stream->getFramesRead() or stream->getTimeStamp() from an output stream callback. This was a serious crash that affected many apps. So we strongly recommend upgrading to Oboe 1.4.2. Here is a Tech Note that describes the issue in more detail.
We fixed issue #820, which could cause a stream to get deleted while it was in use by an onError callback. We now use a std::shared_ptr to hold the stream and strongly recommend using the following technique to open a stream:
std::shared_ptr<oboe::AudioStream> oboeStream; // hold onto this, maybe in an instance variable
Result result = builder.openStream(oboeStream);
Oboe error, warning and information log messages are now enabled in release builds.
We updated QuirksManager to handle specific device requirements. Some devices, for example, may require a different minimum number of bursts in their buffer. #734
Added “DrumThumper”, an interactive drum pad sample app. It demonstrates how to load drum sounds from WAV files, and how to mix multiple drums to one stream. See samples/DrumThumper.
For OpenSL ES, we now scale the buffer size by the sample rate so that it will better match the internal buffer sizes. The default is based on a 20 msec period common on Android. This will reduce glitching when using OpenSL ES.
#762
The LiveEffect sample app now handles a failure to open the stream. It used to crash. #796
1.3.0
Oboe now features resampling and format conversion so you can request a stream with a specific sample rate, channel count or format and still receive a low latency stream. Do this using the following methods:
AudioStreamBuilder builder;
builder.setSampleRateConversionQuality(SampleRateConversionQuality::Medium);
builder.setChannelConversionAllowed(true);
builder.setFormatConversionAllowed(true);`
The new ManagedStream class takes care of a stream lifecycle for you. Open one using the following code:
ManagedStream myStream;
AudioStreamBuilder builder;
b.openManagedStream(myStream);
Many other bug fixes.
Full list of changes: 1.2.0...1.3-stable
1.2.0
New features
- When creating a stream with
PerformanceMode::LowLatencythe buffer size is now set automatically to twice the burst size.
Behaviour changes
AudioStream::waitForStateChangenow returnsResult::ErrorTimeoutif a timeout of zero is specified and the stream's state does not change. Previously it would returnResult::OK.AudioStream::getTimestampnow returnsResult::ErrorInvalidStateif called when the stream is not in theStartedstate. Previously the timestamp would continue to advance resulting in inaccurate latency measurements.
Bug fixes/workarounds
- Fix crash caused caused by error callback running on a blocking read/write stream that does not use a data callback. #364
- Avoid issue with recursive locking in
AudioOutputStreamOpenSLES::requestFlush(). #378 - Stop the stream when callback returns
DataCallbackResult::Stop. Workaround for some AAudio bugs. #323 - #406 Crash when headset plugs in/out
- After opening an AAudio stream the stream state would stuck in the
Startingstate. Oboe now includes a workaround for this. - Many other bug fixes (see: https://github.com/google/oboe/issues?q=is%3Aclosed+milestone%3Av1.2)
Code samples
- Codebase updated to use floats throughout
- Added
sharedfolder which contains shared code used by samples (for Oscillator, Mixer objects etc) - RhythmGame sample updated with ability to extract compressed audio assets using NDK media codec and FFmpeg
Plus many improvements in OboeTester.
1.1.1
1.1.0
Bug fixes:
- Fix readNow buffer pointer. Fixes #233 #154
- Fix memory leak if
AudioStreamBuilder::openStream()fails - AAudioLoader: cleanup destructor
- opensles: fix getBufferSizeInFrames()
New features:
- Allow user to define maximum buffer size when using
LatencyTuner - Add LoadStabilizer class - See updated MegaDrone sample app for usage.
- Add OboeTester, a test app for manually experimenting with various parameters, measuring latency and playing back recorded audio. It is useful for debugging Oboe.
1.0.0
API changes:
- Remove AudioStream::setNativeFormat
- Remove AudioStream::isPlaying.
- Add AudioStream::getTimestamp(clockid_t).
- Deprecate AudioStream::getTimestamp(clockid_t, int64_t, int64_t). Same commit as above.
- Add Android P functions
Other changes:
- Add API reference
- Add unit tests