mirror of
https://github.com/Evolution-X-Devices/device_xiaomi_rosemary
synced 2026-01-27 13:35:09 +00:00
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
|