mirror of
https://github.com/Evolution-X-Devices/device_xiaomi_rosemary
synced 2026-01-27 18:07:31 +00:00
* Since commit eb57617 [1], the legacy callback interfaces in the Android
AudioTrack system have been deprecated and replaced by a newer callback
interface. Consequently, the user parameter, which was previously part
of the constructor, has been incorporated into this new interface.
* To address the resulting build issues, update the function signatures
to match the new methods. Although AOSP provides a wrapper [2] for this
purpose, it's declared within an anonymous namespace, effectively making
it private to its own translation unit. To work around this limitation,
provide a local copy of the wrapper instead.
* Also format the shim with `clang-format`.
- [1]: eb57617e55
- [2]: https://cs.android.com/android/platform/superproject/main/+/main:frameworks/av/media/libaudioclient/AudioTrack.cpp;l=289;bpv=1
Change-Id: Ieae7df3f5f003538a0319cc77051322a989b93a8
48 lines
1.5 KiB
C++
48 lines
1.5 KiB
C++
#pragma once
|
|
|
|
using namespace android;
|
|
|
|
namespace {
|
|
class LegacyCallbackWrapper : public AudioTrack::IAudioTrackCallback {
|
|
const AudioTrack::legacy_callback_t mCallback;
|
|
void *const mData;
|
|
|
|
public:
|
|
LegacyCallbackWrapper(AudioTrack::legacy_callback_t callback, void *user)
|
|
: mCallback(callback), mData(user) {}
|
|
size_t onMoreData(const AudioTrack::Buffer &buffer) override {
|
|
AudioTrack::Buffer copy = buffer;
|
|
mCallback(AudioTrack::EVENT_MORE_DATA, mData, static_cast<void *>(©));
|
|
return copy.size();
|
|
}
|
|
void onUnderrun() override {
|
|
mCallback(AudioTrack::EVENT_UNDERRUN, mData, nullptr);
|
|
}
|
|
void onLoopEnd(int32_t loopsRemaining) override {
|
|
mCallback(AudioTrack::EVENT_LOOP_END, mData, &loopsRemaining);
|
|
}
|
|
void onMarker(uint32_t markerPosition) override {
|
|
mCallback(AudioTrack::EVENT_MARKER, mData, &markerPosition);
|
|
}
|
|
void onNewPos(uint32_t newPos) override {
|
|
mCallback(AudioTrack::EVENT_NEW_POS, mData, &newPos);
|
|
}
|
|
void onBufferEnd() override {
|
|
mCallback(AudioTrack::EVENT_BUFFER_END, mData, nullptr);
|
|
}
|
|
void onNewIAudioTrack() override {
|
|
mCallback(AudioTrack::EVENT_NEW_IAUDIOTRACK, mData, nullptr);
|
|
}
|
|
void onStreamEnd() override {
|
|
mCallback(AudioTrack::EVENT_STREAM_END, mData, nullptr);
|
|
}
|
|
size_t onCanWriteMoreData(const AudioTrack::Buffer &buffer) override {
|
|
AudioTrack::Buffer copy = buffer;
|
|
mCallback(AudioTrack::EVENT_CAN_WRITE_MORE_DATA, mData,
|
|
static_cast<void *>(©));
|
|
return copy.size();
|
|
}
|
|
};
|
|
|
|
} // namespace
|