Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b2926545 authored by Wonsik Kim's avatar Wonsik Kim Committed by Automerger Merge Worker
Browse files

Merge "Reapply "Add media.c2 AIDL service to media.swcodec"" into main am: 101683ca

parents cab18404 101683ca
Loading
Loading
Loading
Loading
+2 −6
Original line number Original line Diff line number Diff line
@@ -6,7 +6,6 @@ package {
// use libcodec2-aidl-client-defaults instead
// use libcodec2-aidl-client-defaults instead
cc_library {
cc_library {
    name: "libcodec2_aidl_client",
    name: "libcodec2_aidl_client",
    min_sdk_version: "31",


    srcs: [
    srcs: [
        "BufferTypes.cpp",
        "BufferTypes.cpp",
@@ -36,7 +35,6 @@ cc_library {
    ],
    ],


    static_libs: [
    static_libs: [
        "libPlatformProperties",
        "libaidlcommonsupport",
        "libaidlcommonsupport",
    ],
    ],


@@ -55,7 +53,7 @@ cc_library {
// use libcodec2-aidl-defaults instead
// use libcodec2-aidl-defaults instead
cc_library {
cc_library {
    name: "libcodec2_aidl",
    name: "libcodec2_aidl",
    min_sdk_version: "31",
    min_sdk_version: "30",
    vendor_available: true,
    vendor_available: true,
    apex_available: [
    apex_available: [
        "//apex_available:platform",
        "//apex_available:platform",
@@ -98,7 +96,6 @@ cc_library {
    ],
    ],


    static_libs: [
    static_libs: [
        "libPlatformProperties",
        "libaidlcommonsupport",
        "libaidlcommonsupport",
    ],
    ],


@@ -134,7 +131,7 @@ cc_library {
// public dependency for Codec 2.0 HAL service implementations
// public dependency for Codec 2.0 HAL service implementations
cc_defaults {
cc_defaults {
    name: "libcodec2-aidl-defaults",
    name: "libcodec2-aidl-defaults",
    min_sdk_version: "31",
    min_sdk_version: "30",
    defaults: ["libcodec2-impl-defaults"],
    defaults: ["libcodec2-impl-defaults"],


    shared_libs: [
    shared_libs: [
@@ -147,7 +144,6 @@ cc_defaults {
// public dependency for Codec 2.0 HAL client
// public dependency for Codec 2.0 HAL client
cc_defaults {
cc_defaults {
    name: "libcodec2-aidl-client-defaults",
    name: "libcodec2-aidl-client-defaults",
    min_sdk_version: "31",
    defaults: ["libcodec2-impl-defaults"],
    defaults: ["libcodec2-impl-defaults"],


    shared_libs: [
    shared_libs: [
+15 −1
Original line number Original line Diff line number Diff line
@@ -19,7 +19,9 @@
#include <android-base/logging.h>
#include <android-base/logging.h>


#include <android/binder_manager.h>
#include <android/binder_manager.h>
#include <android/sysprop/MediaProperties.sysprop.h>
// NOTE: due to dependency from mainline modules cannot use libsysprop
// #include <android/sysprop/MediaProperties.sysprop.h>
#include <android-base/properties.h>
#include <codec2/aidl/ParamTypes.h>
#include <codec2/aidl/ParamTypes.h>
#include <codec2/common/ParamTypes.h>
#include <codec2/common/ParamTypes.h>


@@ -167,6 +169,8 @@ bool IsSelected() {
        // Cannot select AIDL if not enabled
        // Cannot select AIDL if not enabled
        return false;
        return false;
    }
    }
#if 0
    // NOTE: due to dependency from mainline modules cannot use libsysprop
    using ::android::sysprop::MediaProperties::codec2_hal_selection;
    using ::android::sysprop::MediaProperties::codec2_hal_selection;
    using ::android::sysprop::MediaProperties::codec2_hal_selection_values;
    using ::android::sysprop::MediaProperties::codec2_hal_selection_values;
    constexpr codec2_hal_selection_values AIDL = codec2_hal_selection_values::AIDL;
    constexpr codec2_hal_selection_values AIDL = codec2_hal_selection_values::AIDL;
@@ -180,6 +184,16 @@ bool IsSelected() {
    default:
    default:
        LOG(FATAL) << "Unexpected codec2 HAL selection value: " << (int)selection;
        LOG(FATAL) << "Unexpected codec2 HAL selection value: " << (int)selection;
    }
    }
#else
    std::string selection = ::android::base::GetProperty("media.c2.hal.selection", "hidl");
    if (selection == "aidl") {
        return true;
    } else if (selection == "hidl") {
        return false;
    } else {
        LOG(FATAL) << "Unexpected codec2 HAL selection value: " << selection;
    }
#endif


    return false;
    return false;
}
}
+29 −20
Original line number Original line Diff line number Diff line
@@ -46,6 +46,7 @@
#include <aidl/android/hardware/media/c2/StructDescriptor.h>
#include <aidl/android/hardware/media/c2/StructDescriptor.h>


#include <aidlcommonsupport/NativeHandle.h>
#include <aidlcommonsupport/NativeHandle.h>
#include <android/api-level.h>
#include <android/binder_auto_utils.h>
#include <android/binder_auto_utils.h>
#include <android/binder_ibinder.h>
#include <android/binder_ibinder.h>
#include <android/binder_manager.h>
#include <android/binder_manager.h>
@@ -1440,12 +1441,16 @@ std::vector<std::string> Codec2Client::CacheServiceNames() {
    std::vector<std::string> names;
    std::vector<std::string> names;


    if (c2_aidl::utils::IsSelected()) {
    if (c2_aidl::utils::IsSelected()) {
        if (__builtin_available(android __ANDROID_API_S__, *)) {
            // Get AIDL service names
            // Get AIDL service names
            AServiceManager_forEachDeclaredInstance(
            AServiceManager_forEachDeclaredInstance(
                    AidlBase::descriptor, &names, [](const char *name, void *context) {
                    AidlBase::descriptor, &names, [](const char *name, void *context) {
                        std::vector<std::string> *names = (std::vector<std::string> *)context;
                        std::vector<std::string> *names = (std::vector<std::string> *)context;
                        names->emplace_back(name);
                        names->emplace_back(name);
                    });
                    });
        } else {
            LOG(FATAL) << "C2 AIDL cannot be selected on Android version older than 35";
        }
    } else {
    } else {
        // Get HIDL service names
        // Get HIDL service names
        using ::android::hardware::media::c2::V1_0::IComponentStore;
        using ::android::hardware::media::c2::V1_0::IComponentStore;
@@ -1547,6 +1552,7 @@ std::shared_ptr<Codec2Client> Codec2Client::_CreateFromIndex(size_t index) {
    LOG(VERBOSE) << "Creating a Codec2 client to service \"" << name << "\"";
    LOG(VERBOSE) << "Creating a Codec2 client to service \"" << name << "\"";


    if (c2_aidl::utils::IsSelected()) {
    if (c2_aidl::utils::IsSelected()) {
        if (__builtin_available(android __ANDROID_API_S__, *)) {
            std::string instanceName =
            std::string instanceName =
                ::android::base::StringPrintf("%s/%s", AidlBase::descriptor, name.c_str());
                ::android::base::StringPrintf("%s/%s", AidlBase::descriptor, name.c_str());
            if (AServiceManager_isDeclared(instanceName.c_str())) {
            if (AServiceManager_isDeclared(instanceName.c_str())) {
@@ -1563,6 +1569,9 @@ std::shared_ptr<Codec2Client> Codec2Client::_CreateFromIndex(size_t index) {
            } else {
            } else {
                LOG(ERROR) << "Codec2 AIDL service \"" << name << "\" is not declared";
                LOG(ERROR) << "Codec2 AIDL service \"" << name << "\" is not declared";
            }
            }
        } else {
            LOG(FATAL) << "C2 AIDL cannot be selected on Android version older than 35";
        }
    } else {
    } else {
        std::string instanceName = "android.hardware.media.c2/" + name;
        std::string instanceName = "android.hardware.media.c2/" + name;
        sp<HidlBase> baseStore = HidlBase::getService(name);
        sp<HidlBase> baseStore = HidlBase::getService(name);
+5 −0
Original line number Original line Diff line number Diff line
@@ -8,4 +8,9 @@
            <instance>software</instance>
            <instance>software</instance>
        </interface>
        </interface>
    </hal>
    </hal>
    <hal format="aidl">
        <name>android.hardware.media.c2</name>
        <version>1</version>
        <fqname>IComponentStore/software</fqname>
    </hal>
</manifest>
</manifest>
+8 −0
Original line number Original line Diff line number Diff line
{
  "postsubmit": [
    {
      "name": "hal_implementation_test"
    }
  ]
}
Loading