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

Commit ef9e5dd8 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "libaudiohal: Plumb input stream methods" am: a2fcb1f5 am: 5ebb1689 am: 5b9d20ce

parents 3cdcceb0 5b9d20ce
Loading
Loading
Loading
Loading
+64 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 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.
 */

#define LOG_TAG "AidlConversionCore"
//#define LOG_NDEBUG 0
#include <utils/Log.h>

#include <media/AidlConversionCore.h>
#include <media/AidlConversionCppNdk.h>

namespace aidl {
namespace android {

using MicrophoneDirection = hardware::audio::core::IStreamIn::MicrophoneDirection;
using ::android::BAD_VALUE;
using ::android::OK;
using ::android::status_t;
using ::android::base::unexpected;

ConversionResult<audio_microphone_direction_t>
aidl2legacy_MicrophoneDirection_audio_microphone_direction_t(MicrophoneDirection aidl) {
    switch (aidl) {
        case MicrophoneDirection::UNSPECIFIED:
            return MIC_DIRECTION_UNSPECIFIED;
        case MicrophoneDirection::FRONT:
            return MIC_DIRECTION_FRONT;
        case MicrophoneDirection::BACK:
            return MIC_DIRECTION_BACK;
        case MicrophoneDirection::EXTERNAL:
            return MIC_DIRECTION_EXTERNAL;
    }
    return unexpected(BAD_VALUE);
}

ConversionResult<MicrophoneDirection>
legacy2aidl_audio_microphone_direction_t_MicrophoneDirection(audio_microphone_direction_t legacy) {
    switch (legacy) {
        case MIC_DIRECTION_UNSPECIFIED:
            return MicrophoneDirection::UNSPECIFIED;
        case MIC_DIRECTION_FRONT:
            return MicrophoneDirection::FRONT;
        case MIC_DIRECTION_BACK:
            return MicrophoneDirection::BACK;
        case MIC_DIRECTION_EXTERNAL:
            return MicrophoneDirection::EXTERNAL;
    }
    return unexpected(BAD_VALUE);
}

}  // namespace android
}  // aidl
+31 −0
Original line number Diff line number Diff line
@@ -151,6 +151,37 @@ cc_library {
    min_sdk_version: "31", //AParcelableHolder has been introduced in 31
}

/**
 * Only including AIDL core HAL conversion.
 */
cc_library {
    name: "libaudio_aidl_conversion_core_ndk",
    srcs: [
        "AidlConversionCore.cpp",
    ],
    header_libs: [
        "libaudio_aidl_conversion_common_util_ndk",
    ],
    export_header_lib_headers: [
        "libaudio_aidl_conversion_common_util_ndk",
    ],
    defaults: [
        "audio_aidl_conversion_common_default",
        "latest_android_hardware_audio_common_ndk_shared",
        "latest_android_hardware_audio_core_ndk_shared",
        "latest_android_media_audio_common_types_ndk_shared",
    ],
    shared_libs: [
        "libaudio_aidl_conversion_common_ndk",
        "libbinder_ndk",
        "libbase",
    ],
    cflags: [
        "-DBACKEND_NDK",
    ],
    min_sdk_version: "31", //AParcelableHolder has been introduced in 31
}

/**
 * Only including AIDL effect HAL conversion.
 */
+36 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 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.
 */

#pragma once

/**
 * Can only handle conversion between AIDL (NDK backend) and legacy type.
 */
#include <aidl/android/hardware/audio/core/IStreamIn.h>
#include <media/AidlConversionUtil.h>
#include <system/audio.h>

namespace aidl {
namespace android {

ConversionResult<audio_microphone_direction_t>
aidl2legacy_MicrophoneDirection_audio_microphone_direction_t(
        hardware::audio::core::IStreamIn::MicrophoneDirection aidl);
ConversionResult<hardware::audio::core::IStreamIn::MicrophoneDirection>
legacy2aidl_audio_microphone_direction_t_MicrophoneDirection(audio_microphone_direction_t legacy);

}  // namespace android
}  // namespace aidl
+1 −0
Original line number Diff line number Diff line
@@ -290,6 +290,7 @@ cc_library_shared {
        "libbinder_ndk",
        "libaudio_aidl_conversion_common_cpp",
        "libaudio_aidl_conversion_common_ndk",
        "libaudio_aidl_conversion_core_ndk",
        "libaudio_aidl_conversion_effect_ndk",
        "libaudioaidlcommon",
    ],
+11 −10
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@

#include <audio_utils/clock.h>
#include <media/AidlConversion.h>
#include <media/AidlConversionCore.h>
#include <media/AidlConversionCppNdk.h>
#include <media/AidlConversionNdk.h>
#include <media/AidlConversionUtil.h>
@@ -890,11 +891,10 @@ StreamInHalAidl::StreamInHalAidl(
                std::move(context), getStreamCommon(stream)),
          mStream(stream), mMicInfoProvider(micInfoProvider) {}

status_t StreamInHalAidl::setGain(float gain __unused) {
status_t StreamInHalAidl::setGain(float gain) {
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    ALOGE("%s not implemented yet", __func__);
    return OK;
    return statusTFromBinderStatus(mStream->setHwGain({gain}));
}

status_t StreamInHalAidl::read(void *buffer, size_t bytes, size_t *read) {
@@ -967,19 +967,20 @@ status_t StreamInHalAidl::updateSinkMetadata(
    return statusTFromBinderStatus(mStream->updateMetadata(aidlMetadata));
}

status_t StreamInHalAidl::setPreferredMicrophoneDirection(
            audio_microphone_direction_t direction __unused) {
status_t StreamInHalAidl::setPreferredMicrophoneDirection(audio_microphone_direction_t direction) {
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    ALOGE("%s not implemented yet", __func__);
    return OK;
    ::aidl::android::hardware::audio::core::IStreamIn::MicrophoneDirection aidlDirection =
              VALUE_OR_RETURN_STATUS(
                      ::aidl::android::legacy2aidl_audio_microphone_direction_t_MicrophoneDirection(
                              direction));
    return statusTFromBinderStatus(mStream->setMicrophoneDirection(aidlDirection));
}

status_t StreamInHalAidl::setPreferredMicrophoneFieldDimension(float zoom __unused) {
status_t StreamInHalAidl::setPreferredMicrophoneFieldDimension(float zoom) {
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    ALOGE("%s not implemented yet", __func__);
    return OK;
    return statusTFromBinderStatus(mStream->setMicrophoneFieldDimension(zoom));
}

} // namespace android