From 2e85cebfc9b08fb26f903ca7e60e3f5579c4c47d Mon Sep 17 00:00:00 2001 From: bengris32 Date: Sun, 18 Sep 2022 12:06:14 +0100 Subject: [PATCH] rosemary: libshim_vtservice: Call AudioTrack constructor directly * Also compile shim only for 32bit since the constructors symbol changes between 32bit and 64bit and our IMS stack is 32bit only anyway. Signed-off-by: bengris32 --- libshims/Android.bp | 1 + libshims/libshim_vtservice.cpp | 30 ++++++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/libshims/Android.bp b/libshims/Android.bp index 134370a..7d65bab 100644 --- a/libshims/Android.bp +++ b/libshims/Android.bp @@ -42,6 +42,7 @@ cc_library_shared { cc_library_shared { name: "libshim_vtservice", srcs: ["libshim_vtservice.cpp"], + compile_multilib: "32", shared_libs: [ "libaudioclient", "libgui", diff --git a/libshims/libshim_vtservice.cpp b/libshims/libshim_vtservice.cpp index ab8faf9..45739c4 100644 --- a/libshims/libshim_vtservice.cpp +++ b/libshims/libshim_vtservice.cpp @@ -4,7 +4,28 @@ using namespace android; extern "C" { +void _ZN7android10AudioTrackC1E19audio_stream_type_tj14audio_format_t20audio_channel_mask_tj20audio_output_flags_tPFviPvS5_ES5_i15audio_session_tNS0_13transfer_typeEPK20audio_offload_info_tRKNS_7content22AttributionSourceStateEPK18audio_attributes_tbfi( + void* thisptr, + audio_stream_type_t streamType, + uint32_t sampleRate, + audio_format_t format, + audio_channel_mask_t channelMask, + size_t frameCount, + audio_output_flags_t flags, + android::AudioTrack::callback_t cbf, + void* user, + int32_t notificationFrames, + audio_session_t sessionId, + android::AudioTrack::transfer_type transferType, + const audio_offload_info_t *offloadInfo, + const AttributionSourceState& attributionSource, + const audio_attributes_t* pAttributes, + bool doNotReconnect, + float maxRequiredSpeed, + audio_port_handle_t selectedDeviceId); + void _ZN7android10AudioTrackC1E19audio_stream_type_tj14audio_format_tjj20audio_output_flags_tPFviPvS4_ES4_i15audio_session_tNS0_13transfer_typeEPK20audio_offload_info_tjiPK18audio_attributes_tbfi( + void* thisptr, audio_stream_type_t streamType, uint32_t sampleRate, audio_format_t format, @@ -24,10 +45,11 @@ void _ZN7android10AudioTrackC1E19audio_stream_type_tj14audio_format_tjj20audio_o float maxRequiredSpeed, audio_port_handle_t selectedDeviceId) { const AttributionSourceState& attributionSource = AttributionSourceState(); - new android::AudioTrack(streamType, sampleRate, format, channelMask, frameCount, flags, cbf, - user, notificationFrames, sessionId, transferType, offloadInfo, attributionSource, - pAttributes, doNotReconnect, maxRequiredSpeed, selectedDeviceId); - } + _ZN7android10AudioTrackC1E19audio_stream_type_tj14audio_format_t20audio_channel_mask_tj20audio_output_flags_tPFviPvS5_ES5_i15audio_session_tNS0_13transfer_typeEPK20audio_offload_info_tRKNS_7content22AttributionSourceStateEPK18audio_attributes_tbfi( + thisptr, streamType, sampleRate, format, channelMask, frameCount, flags, cbf, + user, notificationFrames, sessionId, transferType, offloadInfo, + attributionSource, pAttributes, doNotReconnect, maxRequiredSpeed, selectedDeviceId); +} void _ZN7android7SurfaceC1ERKNS_2spINS_22IGraphicBufferProducerEEEbRKNS1_INS_7IBinderEEE( void* thisptr, const sp& bufferProducer, bool controlledByApp, const sp& surfaceControlHandle);