From a3b88a8edaac121a64a4b1caed7dfc5af7c45c7d Mon Sep 17 00:00:00 2001 From: bengris32 Date: Tue, 25 Jul 2023 09:35:55 +0100 Subject: [PATCH] rosemary: Add shim for proprietary AudioTrack constructor Change-Id: Icc7a1f9c748578f5b58499e7a76213673c4bcf54 Signed-off-by: bengris32 --- BoardConfig.mk | 2 +- device.mk | 3 +++ extract-files.sh | 3 +++ libshims/Android.bp | 14 +++++++++++++ libshims/libshim_sink.cpp | 42 +++++++++++++++++++++++++++++++++++++++ proprietary-files.txt | 2 +- 6 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 libshims/libshim_sink.cpp diff --git a/BoardConfig.mk b/BoardConfig.mk index 1dc6f00..9a417f3 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -166,7 +166,7 @@ SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS += $(DEVICE_PATH)/sepolicy/private SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS += $(DEVICE_PATH)/sepolicy/public # SPL -VENDOR_SECURITY_PATCH := 2023-02-01 +VENDOR_SECURITY_PATCH := 2022-05-01 # Verified Boot BOARD_AVB_ENABLE := true diff --git a/device.mk b/device.mk index ca92391..d67842b 100644 --- a/device.mk +++ b/device.mk @@ -220,6 +220,9 @@ PRODUCT_BOOT_JARS += \ mediatek-telephony-base \ mediatek-telephony-common +PRODUCT_PACKAGES += \ + libshim_sink + PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/configs/permissions/privapp-permissions-com.mediatek.ims.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-com.mediatek.ims.xml diff --git a/extract-files.sh b/extract-files.sh index 995d9fc..f53ec78 100755 --- a/extract-files.sh +++ b/extract-files.sh @@ -87,6 +87,9 @@ function blob_fixup { vendor/lib64/hw/fingerprint.fpc.default.so) sed -i 's/\xff\x43\x01\xd1\xfd\x7b\x02\xa9/\xc0\x03\x5f\xd6\xfd\x7b\x02\xa9/g' "${2}" ;; + lib64/libsink.so) + "${PATCHELF}" --add-needed "libshim_sink.so" "$2" + ;; esac } diff --git a/libshims/Android.bp b/libshims/Android.bp index 20a4c80..25464e7 100644 --- a/libshims/Android.bp +++ b/libshims/Android.bp @@ -5,3 +5,17 @@ cc_library_shared { "libui", ] } + +cc_library_shared { + name: "libshim_sink", + srcs: ["libshim_sink.cpp"], + compile_multilib: "64", + shared_libs: [ + "libaudioclient", + ], + header_libs: [ + "libaudioclient_headers", + "libmedia_headers", + ], +} + diff --git a/libshims/libshim_sink.cpp b/libshims/libshim_sink.cpp new file mode 100644 index 0000000..3f490c7 --- /dev/null +++ b/libshims/libshim_sink.cpp @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2023 The LineageOS Project + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +using namespace android; + +extern "C" { +void _ZN7android10AudioTrackC1E19audio_stream_type_tj14audio_format_t20audio_channel_mask_tm20audio_output_flags_tRKNS_2wpINS0_19IAudioTrackCallbackEEEi15audio_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, + const wp &callback, + int32_t notificationFrames, audio_session_t sessionId, + 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_t20audio_channel_mask_tm20audio_output_flags_tRKNS_2wpINS0_19IAudioTrackCallbackEEEi15audio_session_tNS0_13transfer_typeEPK20audio_offload_info_tRKNS_7content22AttributionSourceStateEPK18audio_attributes_tbfiRKNSt3__112basic_stringIcNSM_11char_traitsIcEENSM_9allocatorIcEEEE( + 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, + const wp &callback, + int32_t notificationFrames, audio_session_t sessionId, + 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, + const std::string& /* unknown */) { + _ZN7android10AudioTrackC1E19audio_stream_type_tj14audio_format_t20audio_channel_mask_tm20audio_output_flags_tRKNS_2wpINS0_19IAudioTrackCallbackEEEi15audio_session_tNS0_13transfer_typeEPK20audio_offload_info_tRKNS_7content22AttributionSourceStateEPK18audio_attributes_tbfi( + thisptr, streamType, sampleRate, format, channelMask, frameCount, flags, + callback, notificationFrames, sessionId, transferType, offloadInfo, + attributionSource, pAttributes, doNotReconnect, maxRequiredSpeed, + selectedDeviceId); +} +} diff --git a/proprietary-files.txt b/proprietary-files.txt index c147d97..61e5103 100644 --- a/proprietary-files.txt +++ b/proprietary-files.txt @@ -1884,7 +1884,7 @@ lib64/libmtk_vt_wrapper.so lib64/libmtk_vt_wrapper.so lib64/libmtkavenhancements.so lib64/libsignal.so -lib64/libsink.so +lib64/libsink.so|39b1be64f613b83cdd460740de04da814565c414 lib64/libsource.so lib64/libvcodec_cap.so lib64/libvcodec_capenc.so