sm8450-common: Add support for Dolby Vision

* Also import Media codecs for Dolby Vision support
* Fixes taken from multiple trees which mentioned below
* Let's make it easy and clean adaption in a single commit xD
* Thanks to the authors of:
- https://github.com/flakeforever/device_xiaomi_mondrian
- https://github.com/Nabu-upsidedowncake/device_xiaomi_marble
- https://github.com/AOSPA/android_device_xiaomi_sm8450-common
- https://github.com/AOSPA/android_device_xiaomi_sm8550-common
- https://github.com/blazerpaul15

Signed-off-by: swiitchOFF <120115258+swiitchOFF@users.noreply.github.com>
This commit is contained in:
swiitchOFF
2025-05-18 22:55:17 +05:30
committed by Joey Huab
parent 0ff34f3ce3
commit 0a38dbb184
6 changed files with 72 additions and 3 deletions

View File

@@ -153,6 +153,9 @@ PRODUCT_COPY_FILES += \
# Dolby
$(call inherit-product, hardware/dolby/dolby.mk)
# Dolby Vision
$(call soong_config_set, dolby_vision, enabled, true)
# DRM
PRODUCT_PACKAGES += \
android.hardware.drm-service.clearkey
@@ -256,6 +259,10 @@ PRODUCT_PACKAGES += \
init.qti.media.sh \
libstagefright_softomx_plugin.vendor
# Media - Dolby vision
PRODUCT_PACKAGES += \
libcodec2_hidl_shim.vendor
# Network
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.software.ipsec_tunnel_migration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.ipsec_tunnel_migration.xml \

View File

@@ -100,10 +100,14 @@ blob_fixups: blob_fixups_user_type = {
): blob_fixup()
.regex_replace('.+media_codecs_(google_audio|google_c2|google_telephony|vendor_audio).+\n', '')
.regex_replace(r'(?s)(<MediaCodecs.*?>)',r'\1\n <Include href="media_codecs_dolby_audio.xml" />'),
'vendor/etc/vintf/manifest/c2_manifest_vendor.xml': blob_fixup()
.regex_replace('.+dolby.+\n', ''),
'vendor/lib64/vendor.libdpmframework.so': blob_fixup()
.add_needed('libhidlbase_shim.so'),
('vendor/lib/c2.dolby.avc.dec.so', 'vendor/lib/c2.dolby.avc.sec.dec.so', 'vendor/lib/c2.dolby.hevc.dec.so', 'vendor/lib/c2.dolby.hevc.sec.dec.so'): blob_fixup()
.add_needed('libstagefright_foundation-v33.so'),
('vendor/bin/hw/dolbycodec2'): blob_fixup()
.add_needed('libstagefright_foundation-v33.so'),
('vendor/lib/c2.dolby.client.so'): blob_fixup()
.add_needed('libcodec2_hidl_shim.so'),
} # fmt: skip
module = ExtractUtilsModule(

View File

@@ -465,7 +465,6 @@ vendor/etc/media_taro/video_system_specs.json
vendor/etc/media_ukee/video_system_specs.json
vendor/etc/seccomp_policy/codec2.vendor.base-arm64.policy
vendor/etc/seccomp_policy/codec2.vendor.ext-arm64.policy
vendor/etc/vintf/manifest/c2_manifest_vendor.xml
vendor/etc/vintf/manifest/c2_manifest_vendor_audio.xml
vendor/lib64/libAlacSwDec.so
vendor/lib64/libApeSwDec.so
@@ -497,6 +496,36 @@ vendor/lib64/libqcodec2_v4l2codec.so
vendor/lib64/libvideotxr.so
vendor/lib64/qti.video.utils.videobufferlayout.so
# Media configs
vendor/etc/media_codecs_ukee_vendor.xml|433d0a01f3c3911a3bf8ee2fe17a35412dde3d20
vendor/etc/media_codecs_with_dolby_taro.xml|13696738db61eea9937158d69dae316092efe458
# Media (Dolby Vision)
vendor/bin/hw/dolbycodec2|bf9f899668ae3dfc9d8f82b089dd936fbe499e9d
vendor/etc/dolby_vision.cfg|1154eef94f2a9c73120c728d9513f1364d9fe018
vendor/etc/init/vendor.dolbyvision.media.c2@1.0-service.rc|1ea8b363e94fd4f5410cadceb30de8229fb38045
vendor/etc/vintf/manifest/c2_manifest_vendor.xml|dfaad7360e85bf2d1a8293bb878a4f0edc70b1db
vendor/lib/c2.dolby.avc.dec.so|5fee9dce283b417d68ae7103b0721c80df05d6c6
vendor/lib/c2.dolby.avc.sec.dec.so|658a83dd5a33d4ff506c5f6b2cf7e6c442d11afd
vendor/lib/c2.dolby.client.so|0f0cc6ef7ae749d461805cbf5afec5f020c3ea07;DISABLE_CHECKELF
vendor/lib/c2.dolby.egl.so|b6ba40013e45514cdaf94cab9a3a23c9a3b6f98f
vendor/lib/c2.dolby.hevc.dec.so|f64bc25b028a2a81b084caa76f44d43ad8400a58
vendor/lib/c2.dolby.hevc.enc.so|7e2d292742a08e9d703d02ea1a6619b3c228eae7
vendor/lib/c2.dolby.hevc.sec.dec.so|8937fd7a72e84ba81ae9f31439791cd6c73aca73
vendor/lib/c2.dolby.store.so|a262a67d5264731651f98a2353f95361684d8995
vendor/lib/libdolbyottcameracontrol.so|b0e2b145c2714c523d5f765f0691b9dffed906f8
vendor/lib/libdolbyvision.so|052effa6e1c2c34079fc28c463c1639ca63b9e40
vendor/lib64/c2.dolby.avc.dec.so|439a00c49d07e4fa2451162f75ad1ec6dc5b1ede
vendor/lib64/c2.dolby.avc.sec.dec.so|9dfdde23db39260bcba3a1d417dd07a5b521f411
vendor/lib64/c2.dolby.client.so|88bf13140ff1cd767e86a221b579c17c662d9c48;DISABLE_CHECKELF
vendor/lib64/c2.dolby.egl.so|8acc4f5f81efc2d4d590a6f7b8584cd993ffd74a
vendor/lib64/c2.dolby.hevc.dec.so|1bbf42f25506585e782bd26590c47d952dafe2a0
vendor/lib64/c2.dolby.hevc.enc.so|e148e4c26d9185b2ebb00be93ae849ec8116be0a
vendor/lib64/c2.dolby.hevc.sec.dec.so|eb4b421de11c209f2270d5bea5f80a1d8380907a
vendor/lib64/c2.dolby.store.so|7a6964871f5c6ac19025f5fc7682219bc37c4357
vendor/lib64/libdolbyottcameracontrol.so|60cf0e7e42ad4b6b3e5a64f2098b99d5d55d1b51
vendor/lib64/libdolbyvision.so|22c517e552288fb1482201f731ef183f917c69da
# Mlipay
vendor/bin/mlipayd@1.1
vendor/etc/init/vendor.xiaomi.hardware.mlipay@1.1-service.rc

View File

@@ -60,6 +60,9 @@
/data/vendor/mac_addr(/.*)? u:object_r:vendor_mac_vendor_data_file:s0
/vendor/bin/nv_mac u:object_r:vendor_wcnss_service_exec:s0
# Media
/vendor/bin/hw/dolbycodec2 u:object_r:mediacodec_exec:s0
# Mlipay
/(vendor|system/vendor)/bin/mlipayd@1.1 u:object_r:hal_mlipay_default_exec:s0

15
shim/Android.bp Normal file
View File

@@ -0,0 +1,15 @@
//
// Copyright (C) 2020 The LineageOS Project
// Copyright (C) 2024 Flakeforever
//
// SPDX-License-Identifier: Apache-2.0
//
cc_library_shared {
name: "libcodec2_hidl_shim",
srcs: ["libcodec2_hidl_shim/libcodec2_hidl_shim.cpp"],
shared_libs: [
"libcodec2_hidl@1.0",
],
vendor_available: true,
}

View File

@@ -0,0 +1,11 @@
#include <stdint.h>
namespace android {
extern "C" void _ZN7android8hardware5media2c24V1_05utils6objcpyEPNS3_10WorkBundleERKNSt3__14listINS7_10unique_ptrI6C2WorkNS7_14default_deleteISA_EEEENS7_9allocatorISD_EEEEPNS_16BufferPoolSenderINS4_15BufferPoolTypesEEE(
void* thisptr, void* list, bool param1, bool param2);
extern "C" void _ZN7android8hardware5media2c24V1_05utils6objcpyEPNS3_10WorkBundleERKNSt3__14listINS7_10unique_ptrI6C2WorkNS7_14default_deleteISA_EEEENS7_9allocatorISD_EEEEPNS4_16BufferPoolSenderE(
void* thisptr, void* list, bool param1, bool param2) {
_ZN7android8hardware5media2c24V1_05utils6objcpyEPNS3_10WorkBundleERKNSt3__14listINS7_10unique_ptrI6C2WorkNS7_14default_deleteISA_EEEENS7_9allocatorISD_EEEEPNS_16BufferPoolSenderINS4_15BufferPoolTypesEEE(thisptr, list, param1, param2);
}
}