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

Commit df9b420d authored by Kevin Rocard's avatar Kevin Rocard
Browse files

Align LibAudioHal V2 and V4 for factorisation



In order to merge the two version, they must first align as much
as possible.

Test: playback music, assistant
Change-Id: If517cc3f4646a224af3e9b3d42b68a75f1801b39
Signed-off-by: default avatarKevin Rocard <krocard@google.com>
parent d3084998
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
cc_library_shared {
    name: "libaudiohal@2.0",
cc_defaults {
    name: "libaudiohal@2.0_default",

    srcs: [
        "DeviceHalLocal.cpp",
@@ -16,15 +16,17 @@ cc_library_shared {
        "StreamHalHidl.cpp",
    ],

    export_include_dirs: ["."],
    export_include_dirs: ["include"],

    cflags: [
        "-Wall",
        "-Wextra",
        "-Werror",
    ],
    shared_libs: [
        "libaudiohal_deathhandler",
        "libaudioutils",
        "libbinder",
        "libcutils",
        "liblog",
        "libutils",
@@ -35,16 +37,14 @@ cc_library_shared {
        "libhidlbase",
        "libhidlmemory",
        "libhidltransport",
        "android.hardware.audio@2.0",
        "android.hardware.audio.common@2.0",
        "android.hardware.audio.common@2.0-util",
        "android.hardware.audio.effect@2.0",
        "android.hardware.audio.common-util",
        "android.hidl.allocator@1.0",
        "android.hidl.memory@1.0",
        "libmedia_helper",
        "libmediautils",
    ],
    header_libs: [
        "android.hardware.audio.common.util@all-versions",
        "libaudiohal_headers"
    ],

@@ -52,3 +52,14 @@ cc_library_shared {
        "libfmq",
    ],
}

cc_library_shared {
    name: "libaudiohal@2.0",
    defaults: ["libaudiohal@2.0_default"],
    shared_libs: [
        "android.hardware.audio@2.0",
        "android.hardware.audio.common@2.0",
        "android.hardware.audio.common@2.0-util",
        "android.hardware.audio.effect@2.0",
    ],
}
+2 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
using ::android::hardware::audio::V2_0::Result;

namespace android {
namespace V2_0 {

// static
status_t ConversionHelperHidl::keysFromHal(const String8& keys, hidl_vec<hidl_string> *hidlKeys) {
@@ -100,4 +101,5 @@ void ConversionHelperHidl::emitError(const char* funcName, const char* descripti
    ALOGE("%s %p %s: %s (from rpc)", mClassName, this, funcName, description);
}

}  // namespace V2_0
}  // namespace android
+7 −3
Original line number Diff line number Diff line
@@ -19,14 +19,17 @@

#include <android/hardware/audio/2.0/types.h>
#include <hidl/HidlSupport.h>
#include <system/audio.h>
#include <utils/String8.h>

using ::android::hardware::audio::V2_0::ParameterValue;
using CoreResult = ::android::hardware::audio::V2_0::Result;
using ::android::hardware::Return;
using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;

namespace android {
namespace V2_0 {

class ConversionHelperHidl {
  protected:
@@ -54,7 +57,7 @@ class ConversionHelperHidl {
        return ret.isOk() ? OK : FAILED_TRANSACTION;
    }

    status_t processReturn(const char* funcName, const Return<hardware::audio::V2_0::Result>& ret) {
    status_t processReturn(const char* funcName, const Return<CoreResult>& ret) {
        if (!ret.isOk()) {
            emitError(funcName, ret.description().c_str());
        }
@@ -63,7 +66,7 @@ class ConversionHelperHidl {

    template<typename T>
    status_t processReturn(
            const char* funcName, const Return<T>& ret, hardware::audio::V2_0::Result retval) {
            const char* funcName, const Return<T>& ret, CoreResult retval) {
        if (!ret.isOk()) {
            emitError(funcName, ret.description().c_str());
        }
@@ -73,11 +76,12 @@ class ConversionHelperHidl {
  private:
    const char* mClassName;

    static status_t analyzeResult(const hardware::audio::V2_0::Result& result);
    static status_t analyzeResult(const CoreResult& result);

    void emitError(const char* funcName, const char* description);
};

}  // namespace V2_0
}  // namespace android

#endif // ANDROID_HARDWARE_CONVERSION_HELPER_HIDL_H
+16 −6
Original line number Diff line number Diff line
@@ -24,9 +24,12 @@
#include <hwbinder/IPCThreadState.h>
#include <utils/Log.h>

#include <common/all-versions/VersionUtils.h>

#include "DeviceHalHidl.h"
#include "HidlUtils.h"
#include "StreamHalHidl.h"
#include "VersionUtils.h"

using ::android::hardware::audio::common::V2_0::AudioConfig;
using ::android::hardware::audio::common::V2_0::AudioDevice;
@@ -38,6 +41,7 @@ using ::android::hardware::audio::common::V2_0::AudioPortConfig;
using ::android::hardware::audio::common::V2_0::AudioMode;
using ::android::hardware::audio::common::V2_0::AudioSource;
using ::android::hardware::audio::common::V2_0::HidlUtils;
using ::android::hardware::audio::common::utils::mkEnumConverter;
using ::android::hardware::audio::V2_0::DeviceAddress;
using ::android::hardware::audio::V2_0::IPrimaryDevice;
using ::android::hardware::audio::V2_0::ParameterValue;
@@ -46,6 +50,7 @@ using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;

namespace android {
namespace V2_0 {

namespace {

@@ -193,7 +198,9 @@ status_t DeviceHalHidl::setParameters(const String8& kvPairs) {
    hidl_vec<ParameterValue> hidlParams;
    status_t status = parametersFromHal(kvPairs, &hidlParams);
    if (status != OK) return status;
    return processReturn("setParameters", mDevice->setParameters(hidlParams));
    // TODO: change the API so that context and kvPairs are separated
    return processReturn("setParameters",
                         utils::setParameters(mDevice, {} /* context */, hidlParams));
}

status_t DeviceHalHidl::getParameters(const String8& keys, String8 *values) {
@@ -203,7 +210,8 @@ status_t DeviceHalHidl::getParameters(const String8& keys, String8 *values) {
    status_t status = keysFromHal(keys, &hidlKeys);
    if (status != OK) return status;
    Result retval;
    Return<void> ret = mDevice->getParameters(
    Return<void> ret = utils::getParameters(mDevice,
            {} /* context */,
            hidlKeys,
            [&](Result r, const hidl_vec<ParameterValue>& parameters) {
                retval = r;
@@ -249,7 +257,7 @@ status_t DeviceHalHidl::openOutputStream(
            handle,
            hidlDevice,
            hidlConfig,
            AudioOutputFlag(flags),
            mkEnumConverter<AudioOutputFlag>(flags),
            [&](Result r, const sp<IStreamOut>& result, const AudioConfig& suggestedConfig) {
                retval = r;
                if (retval == Result::OK) {
@@ -275,12 +283,13 @@ status_t DeviceHalHidl::openInputStream(
    AudioConfig hidlConfig;
    HidlUtils::audioConfigFromHal(*config, &hidlConfig);
    Result retval = Result::NOT_INITIALIZED;
    auto sourceMetadata = AudioSource(source);
    Return<void> ret = mDevice->openInputStream(
            handle,
            hidlDevice,
            hidlConfig,
            AudioInputFlag(flags),
            AudioSource(source),
            mkEnumConverter<AudioInputFlag>(flags),
            sourceMetadata,
            [&](Result r, const sp<IStreamIn>& result, const AudioConfig& suggestedConfig) {
                retval = r;
                if (retval == Result::OK) {
@@ -356,9 +365,10 @@ status_t DeviceHalHidl::dump(int fd) {
    if (mDevice == 0) return NO_INIT;
    native_handle_t* hidlHandle = native_handle_create(1, 0);
    hidlHandle->data[0] = fd;
    Return<void> ret = mDevice->debugDump(hidlHandle);
    Return<void> ret = mDevice->debug(hidlHandle, {} /* options */);
    native_handle_delete(hidlHandle);
    return processReturn("dump", ret);
}

} // namespace V2_0
} // namespace android
+2 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ using ::android::hardware::audio::V2_0::IPrimaryDevice;
using ::android::hardware::Return;

namespace android {
namespace V2_0 {

class DeviceHalHidl : public DeviceHalInterface, public ConversionHelperHidl
{
@@ -124,6 +125,7 @@ class DeviceHalHidl : public DeviceHalInterface, public ConversionHelperHidl
    virtual ~DeviceHalHidl();
};

} // namespace V2_0
} // namespace android

#endif // ANDROID_HARDWARE_DEVICE_HAL_HIDL_H
Loading