From 1a1754044a320443ddcd8a64d55e22ee0ab2a6ac Mon Sep 17 00:00:00 2001 From: dodyirawan85 <40514988+dodyirawan85@users.noreply.github.com> Date: Wed, 13 Dec 2023 09:42:40 +0700 Subject: [PATCH] X6833B: Configure Media stack * References: https://github.com/PQEnablers-Devices/android_device_xiaomi_ruby/commit/1cba75df74c2c470a26ace233b034bebab6478a1 Co-authored-by: electimon Co-authored-by: bengris32 Signed-off-by: dodyirawan85 <40514988+dodyirawan85@users.noreply.github.com> --- Android.mk | 8 + configs/media/media_codecs.xml | 85 + configs/media/media_codecs_c2.xml | 427 ++++ configs/media/media_codecs_mediatek_audio.xml | 97 + configs/media/media_codecs_performance.xml | 172 ++ configs/media/media_profiles_V1_0.xml | 1722 +++++++++++++++++ configs/media/mtk_omx_core.cfg | 6 + configs/media/mtk_platform_codecs_config.xml | 85 + configs/properties/vendor.prop | 10 + ...dware.media.c2@1.2-extended-seccomp-policy | 42 + ...dware.media.c2@1.2-mediatek-seccomp-policy | 92 + configs/seccomp/mediacodec.policy | 22 + configs/seccomp/mediaextractor.policy | 8 + configs/seccomp/mediaswcodec.policy | 2 + device.mk | 17 + proprietary-files.txt | 51 + symlink/vendor.txt | 6 + 17 files changed, 2852 insertions(+) create mode 100644 configs/media/media_codecs.xml create mode 100644 configs/media/media_codecs_c2.xml create mode 100644 configs/media/media_codecs_mediatek_audio.xml create mode 100644 configs/media/media_codecs_performance.xml create mode 100644 configs/media/media_profiles_V1_0.xml create mode 100644 configs/media/mtk_omx_core.cfg create mode 100644 configs/media/mtk_platform_codecs_config.xml create mode 100644 configs/seccomp/android.hardware.media.c2@1.2-extended-seccomp-policy create mode 100644 configs/seccomp/android.hardware.media.c2@1.2-mediatek-seccomp-policy create mode 100644 configs/seccomp/mediacodec.policy create mode 100644 configs/seccomp/mediaextractor.policy create mode 100644 configs/seccomp/mediaswcodec.policy diff --git a/Android.mk b/Android.mk index b4cf791..4cf89f9 100644 --- a/Android.mk +++ b/Android.mk @@ -46,6 +46,13 @@ $(KEYMASTER_SYMLINKS): $(LOCAL_INSTALLED_MODULE) $(hide) echo "Linking $@" @ln -sf $(subst default,trustonic,$(notdir $@)) $@ +MEDIA_SYMLINKS := \ + $(TARGET_OUT_VENDOR)/bin/v3avpud + +$(MEDIA_SYMLINKS): $(LOCAL_INSTALLED_MODULE) + $(hide) echo "Linking $@" + @ln -sf $(notdir $@).$(TARGET_BOARD_PLATFORM) $@ + SENSOR_SYMLINKS := $(TARGET_OUT_VENDOR)/lib64/hw/sensors.$(TARGET_BOARD_PLATFORM).so $(SENSOR_SYMLINKS): $(LOCAL_INSTALLED_MODULE) $(hide) echo "Linking $(notdir $@)" @@ -61,6 +68,7 @@ ALL_DEFAULT_INSTALLED_MODULES += \ $(DISPLAY_SYMLINKS) \ $(GATEKEEPER_SYMLINKS) \ $(KEYMASTER_SYMLINKS) \ + $(MEDIA_SYMLINKS) \ $(SENSOR_SYMLINKS) \ $(VENDOR_PLATFORM_SYMLINKS) diff --git a/configs/media/media_codecs.xml b/configs/media/media_codecs.xml new file mode 100644 index 0000000..db38165 --- /dev/null +++ b/configs/media/media_codecs.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + diff --git a/configs/media/media_codecs_c2.xml b/configs/media/media_codecs_c2.xml new file mode 100644 index 0000000..5a1f2a6 --- /dev/null +++ b/configs/media/media_codecs_c2.xml @@ -0,0 +1,427 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/configs/media/media_codecs_mediatek_audio.xml b/configs/media/media_codecs_mediatek_audio.xml new file mode 100644 index 0000000..511a1cf --- /dev/null +++ b/configs/media/media_codecs_mediatek_audio.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/configs/media/media_codecs_performance.xml b/configs/media/media_codecs_performance.xml new file mode 100644 index 0000000..382260e --- /dev/null +++ b/configs/media/media_codecs_performance.xml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/configs/media/media_profiles_V1_0.xml b/configs/media/media_profiles_V1_0.xml new file mode 100644 index 0000000..61475ef --- /dev/null +++ b/configs/media/media_profiles_V1_0.xml @@ -0,0 +1,1722 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/configs/media/mtk_omx_core.cfg b/configs/media/mtk_omx_core.cfg new file mode 100644 index 0000000..4ec0e9a --- /dev/null +++ b/configs/media/mtk_omx_core.cfg @@ -0,0 +1,6 @@ +OMX.MTK.AUDIO.DECODER.MP3 audio_decoder.mp3 libMtkOmxMp3Dec.so 32 +OMX.MTK.AUDIO.DECODER.APE audio_decoder.ape libMtkOmxApeDec.so 32 +OMX.MTK.AUDIO.DECODER.ADPCM.MS audio_decoder.adpcm libMtkOmxAdpcmDec.so 32 +OMX.MTK.AUDIO.DECODER.ADPCM.DVI audio_decoder.adpcm libMtkOmxAdpcmDec.so 32 +OMX.MTK.AUDIO.DECODER.GSM audio_decoder.gsm libMtkOmxGsmDec.so 32 +OMX.MTK.AUDIO.DECODER.ALAC audio_decoder.alac libMtkOmxAlacDec.so 32 diff --git a/configs/media/mtk_platform_codecs_config.xml b/configs/media/mtk_platform_codecs_config.xml new file mode 100644 index 0000000..4ae2a7b --- /dev/null +++ b/configs/media/mtk_platform_codecs_config.xml @@ -0,0 +1,85 @@ + + + + + + + + diff --git a/configs/properties/vendor.prop b/configs/properties/vendor.prop index 290c222..59e483c 100644 --- a/configs/properties/vendor.prop +++ b/configs/properties/vendor.prop @@ -85,6 +85,16 @@ persist.vendor.volte_support=1 ro.vendor.md_auto_setup_ims=1 ro.vendor.mtk_data_config=1 +# Media +debug.mediatek.disp_decompress=1 +debug.stagefright.c2inputsurface=-1 +media.c2.dmabuf.padding=3072 +ro.vendor.jpeg_decode_sw_opt=1 +ro.vendor.mtk_config_max_dram_size=0x800000000 +ro.vendor.mtk_sec_video_path_support=1 +ro.vendor.mtk_video_hevc_enc_support=1 +vendor.mtk.vdec.waitkeyframeforplay=9 + # Sensors ro.vendor.mtk.sensor.support=yes diff --git a/configs/seccomp/android.hardware.media.c2@1.2-extended-seccomp-policy b/configs/seccomp/android.hardware.media.c2@1.2-extended-seccomp-policy new file mode 100644 index 0000000..36fc57e --- /dev/null +++ b/configs/seccomp/android.hardware.media.c2@1.2-extended-seccomp-policy @@ -0,0 +1,42 @@ +connect: 1 +fcntl64: 1 +socket: 1 +writev: 1 +clock_nanosleep: 1 +eventfd2: 1 +sched_getparam: 1 +sched_getscheduler :1 +setsockopt: 1 +bind: 1 +listen: 1 + +# Add more for 32bits process, from android.hardware.media.c2@1.1-default-arm.policy +mmap2: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE +ftruncate64: 1 +getuid32: 1 +open: 1 +fstat64: 1 +readlink: 1 +fstatfs64: 1 +_llseek: 1 +fstatat64: 1 +ugetrlimit: 1 +# crash dump policy additions +sigreturn: 1 +futex: 1 +#mmap2: arg2 in 0x1|0x2 +geteuid32: 1 +getgid32: 1 +getegid32: 1 +getgroups32: 1 +getpriority: 1 +mlock: 1 +munlock: 1 +fchmod: 1 +getuid: 1 +mmap: 1 +getrlimit: 1 +newfstatat: 1 +fstat: 1 +fstatfs: 1 +flock: 1 \ No newline at end of file diff --git a/configs/seccomp/android.hardware.media.c2@1.2-mediatek-seccomp-policy b/configs/seccomp/android.hardware.media.c2@1.2-mediatek-seccomp-policy new file mode 100644 index 0000000..7944843 --- /dev/null +++ b/configs/seccomp/android.hardware.media.c2@1.2-mediatek-seccomp-policy @@ -0,0 +1,92 @@ +# Copyright (C) 2019 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +futex: 1 +# ioctl calls are filtered via the selinux policy. +ioctl: 1 +sched_yield: 1 +close: 1 +dup: 1 +ppoll: 1 +mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE +#mmap2: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE +memfd_create: 1 +ftruncate: 1 +ftruncate64: 1 + +# mremap: Ensure |flags| are (MREMAP_MAYMOVE | MREMAP_FIXED) TODO: Once minijail +# parser support for '<' is in this needs to be modified to also prevent +# |old_address| and |new_address| from touching the exception vector page, which +# on ARM is statically loaded at 0xffff 0000. See +# http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0211h/Babfeega.html +# for more details. +mremap: arg3 == 3 || arg3 == MREMAP_MAYMOVE +munmap: 1 +prctl: 1 +getuid32: 1 +writev: 1 +sigaltstack: 1 +clone: 1 +exit: 1 +lseek: 1 +rt_sigprocmask: 1 +openat: 1 +open: 1 +fstat64: 1 +write: 1 +nanosleep: 1 +setpriority: 1 +set_tid_address: 1 +getdents64: 1 +readlinkat: 1 +readlink: 1 +read: 1 +pread64: 1 +fstatfs64: 1 +gettimeofday: 1 +faccessat: 1 +_llseek: 1 +fstatat64: 1 +ugetrlimit: 1 +exit_group: 1 +restart_syscall: 1 +rt_sigreturn: 1 +getrandom: 1 +madvise: 1 +sched_setaffinity: 1 +sched_getaffinity: 1 +sched_getparam: 1 +sched_getscheduler: 1 +recvfrom: 1 + +# crash dump policy additions +sigreturn: 1 +clock_gettime: 1 +futex: 1 +getpid: 1 +gettid: 1 +pipe2: 1 +recvmsg: 1 +process_vm_readv: 1 +tgkill: 1 +rt_sigaction: 1 +rt_tgsigqueueinfo: 1 +#prctl: arg0 == PR_GET_NO_NEW_PRIVS || arg0 == 0x53564d41 +#mprotect: arg2 in 0x1|0x2 +#mmap2: arg2 in 0x1|0x2 +geteuid32: 1 +getgid32: 1 +getegid32: 1 +getgroups32: 1 +flock: 1 \ No newline at end of file diff --git a/configs/seccomp/mediacodec.policy b/configs/seccomp/mediacodec.policy new file mode 100644 index 0000000..24f60ef --- /dev/null +++ b/configs/seccomp/mediacodec.policy @@ -0,0 +1,22 @@ +#Mediatek used system call +getpid: 1 +gettid: 1 +sendto: 1 +pselect6: 1 +sched_getparam: 1 +sched_getscheduler: 1 +mlock: 1 +munlock: 1 +recvfrom: 1 +sched_getaffinity: 1 +sched_setaffinity: 1 +sched_getaffinity: 1 +flock: 1 +fchownat: 1 +fchmodat: 1 +fsync: 1 +sysinfo: 1 +setsockopt: 1 +setrlimit: 1 +eventfd2: 1 +unlinkat: 1 diff --git a/configs/seccomp/mediaextractor.policy b/configs/seccomp/mediaextractor.policy new file mode 100644 index 0000000..3564ac9 --- /dev/null +++ b/configs/seccomp/mediaextractor.policy @@ -0,0 +1,8 @@ +# MediaTek used system call +gettimeofday: 1 +# for audio TableOfContent thread +ioprio_set: 1 +unlinkat: 1 +setsockopt: 1 +clock_gettime: 1 +setrlimit: 1 diff --git a/configs/seccomp/mediaswcodec.policy b/configs/seccomp/mediaswcodec.policy new file mode 100644 index 0000000..faaac02 --- /dev/null +++ b/configs/seccomp/mediaswcodec.policy @@ -0,0 +1,2 @@ +#Mediatek used system call +clock_nanosleep: 1 diff --git a/device.mk b/device.mk index 464080b..762b188 100644 --- a/device.mk +++ b/device.mk @@ -163,6 +163,23 @@ PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \ android.hardware.lights-service.transsion +# Media +PRODUCT_PACKAGES += \ + libcodec2_hidl@1.1.vendor \ + libcodec2_hidl@1.2.vendor \ + libavservices_minijail_vendor \ + libstagefright_softomx_plugin.vendor \ + libsfplugin_ccodec_utils.vendor \ + libcodec2_soft_common.vendor + +PRODUCT_COPY_FILES += \ + frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \ + frameworks/av/media/libstagefright/data/media_codecs_google_video_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video_le.xml + +PRODUCT_COPY_FILES += \ + $(call find-copy-subdir-files,*,$(LOCAL_PATH)/configs/seccomp,$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy) \ + $(call find-copy-subdir-files,*,$(LOCAL_PATH)/configs/media,$(TARGET_COPY_OUT_VENDOR)/etc) + # NFC PRODUCT_PACKAGES += \ android.hardware.nfc@1.2.vendor \ diff --git a/proprietary-files.txt b/proprietary-files.txt index 0f07e54..a12b080 100644 --- a/proprietary-files.txt +++ b/proprietary-files.txt @@ -513,6 +513,57 @@ vendor/etc/init/android.hardware.security.keymint-service.trustonic.rc -vendor/etc/vintf/manifest/android.hardware.security.secureclock-service.trustonic.xml -vendor/etc/vintf/manifest/android.hardware.security.sharedsecret-service.trustonic.xml +# Media +vendor/bin/mt6789/v3avpud.mt6789 +vendor/etc/init/v3avpud.rc +vendor/lib/mt6789/libvcodec_utility.so +vendor/lib/mt6789/libvcodec_utility_v3a.so +vendor/lib/mt6789/libvcodecdrv.so +vendor/lib/mt6789/libvcodecdrv_v3a.so +vendor/lib/mt6789/libvpudv3a_vcodec.so +vendor/lib/libvcodec_oal.so +vendor/lib/libvcodecdrv_header_stub.so +vendor/lib/libvpu5.so +vendor/lib/libvpud_vcodec.so + +# Media (OMX) +vendor/lib/libMtkOmxAdpcmDec.so +vendor/lib/libMtkOmxAlacDec.so +vendor/lib/libMtkOmxCore.so +vendor/lib/libMtkOmxGsmDec.so +vendor/lib/libMtkOmxMp3Dec.so +vendor/lib/libadpcmdec_mtk.so +vendor/lib/libmp3dec_mtk.so +vendor/lib/libstagefrighthw.so +vendor/lib64/libstagefrighthw.so + +# Media (C2) +vendor/bin/hw/android.hardware.media.c2@1.2-mediatek-64b:vendor/bin/hw/android.hardware.media.c2@1.2-mediatek +vendor/etc/init/android.hardware.media.c2@1.2-mediatek.rc +vendor/etc/vintf/manifest/manifest_media_c2_V1_1_default.xml +vendor/lib/libcodec2_mtk_c2store.so +vendor/lib/libcodec2_mtk_vdec.so +vendor/lib/libcodec2_mtk_venc.so +vendor/lib/libcodec2_soft_mtk_alacdec.so +vendor/lib/libcodec2_soft_mtk_apedec.so +vendor/lib/libcodec2_soft_mtk_imaadpcmdec.so +vendor/lib/libcodec2_soft_mtk_mp3dec.so +vendor/lib/libcodec2_soft_mtk_msadpcmdec.so +vendor/lib/libcodec2_vpp_qt_plugin.so +vendor/lib/libcodec2_vpp_rs_plugin.so +vendor/lib/libformatter.so +vendor/lib64/libcodec2_mtk_c2store.so +vendor/lib64/libcodec2_mtk_vdec.so +vendor/lib64/libcodec2_mtk_venc.so +vendor/lib64/libcodec2_soft_mtk_alacdec.so +vendor/lib64/libcodec2_soft_mtk_apedec.so +vendor/lib64/libcodec2_soft_mtk_imaadpcmdec.so +vendor/lib64/libcodec2_soft_mtk_mp3dec.so +vendor/lib64/libcodec2_soft_mtk_msadpcmdec.so +vendor/lib64/libcodec2_vpp_qt_plugin.so +vendor/lib64/libcodec2_vpp_rs_plugin.so +vendor/lib64/libformatter.so + # NFC vendor/bin/hw/android.hardware.nfc@1.2-service vendor/etc/init/android.hardware.nfc@1.2-service.rc diff --git a/symlink/vendor.txt b/symlink/vendor.txt index 7e0715f..65db852 100644 --- a/symlink/vendor.txt +++ b/symlink/vendor.txt @@ -1,3 +1,4 @@ +bin/v3avpud.mt6789 lib/egl/libGLES_mali.so lib/hw/android.hardware.graphics.allocator@4.0-impl-mediatek.so lib/hw/android.hardware.graphics.mapper@4.0-impl-mediatek.so @@ -14,6 +15,11 @@ lib/libnir_neon_driver.so lib/libpq_cust_base.so lib/libpq_prot.so lib/libpqparamparser.so +lib/libvcodec_utility.so +lib/libvcodec_utility_v3a.so +lib/libvcodecdrv.so +lib/libvcodecdrv_v3a.so +lib/libvpudv3a_vcodec.so lib64/egl/libGLES_mali.so lib64/hw/android.hardware.graphics.allocator@4.0-impl-mediatek.so lib64/hw/android.hardware.graphics.mapper@4.0-impl-mediatek.so