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

Commit d89fdc62 authored by Hongguang Chen's avatar Hongguang Chen Committed by Android (Google) Code Review
Browse files

Merge "TvInputHal: convert AIDL audio device to native" into main

parents 2abe6225 33c8fbc5
Loading
Loading
Loading
Loading
+27 −3
Original line number Diff line number Diff line
@@ -168,6 +168,24 @@ const std::vector<AidlTvStreamConfig> JTvInputHal::getStreamConfigs(int deviceId
    return list;
}

static const std::map<std::pair<AidlAudioDeviceType, std::string>, audio_devices_t>
        aidlToNativeAudioType = {
    {{AidlAudioDeviceType::IN_DEVICE, AidlAudioDeviceDescription::CONNECTION_ANALOG},
        AUDIO_DEVICE_IN_LINE},
    {{AidlAudioDeviceType::IN_DEVICE, AidlAudioDeviceDescription::CONNECTION_HDMI},
        AUDIO_DEVICE_IN_HDMI},
    {{AidlAudioDeviceType::IN_DEVICE, AidlAudioDeviceDescription::CONNECTION_HDMI_ARC},
        AUDIO_DEVICE_IN_HDMI_ARC},
    {{AidlAudioDeviceType::IN_DEVICE, AidlAudioDeviceDescription::CONNECTION_HDMI_EARC},
        AUDIO_DEVICE_IN_HDMI_EARC},
    {{AidlAudioDeviceType::IN_DEVICE, AidlAudioDeviceDescription::CONNECTION_IP_V4},
        AUDIO_DEVICE_IN_IP},
    {{AidlAudioDeviceType::IN_DEVICE, AidlAudioDeviceDescription::CONNECTION_SPDIF},
        AUDIO_DEVICE_IN_SPDIF},
    {{AidlAudioDeviceType::IN_LOOPBACK, ""}, AUDIO_DEVICE_IN_LOOPBACK},
    {{AidlAudioDeviceType::IN_TV_TUNER, ""}, AUDIO_DEVICE_IN_TV_TUNER},
};

void JTvInputHal::onDeviceAvailable(const TvInputDeviceInfoWrapper& info) {
    {
        Mutex::Autolock autoLock(&mLock);
@@ -187,9 +205,15 @@ void JTvInputHal::onDeviceAvailable(const TvInputDeviceInfoWrapper& info) {
    if (info.isHidl) {
        hidlSetUpAudioInfo(env, builder, info);
    } else {
        AidlAudioDeviceType audioType = info.aidlAudioDevice.type.type;
        env->CallObjectMethod(builder, gTvInputHardwareInfoBuilderClassInfo.audioType, audioType);
        if (audioType != AidlAudioDeviceType::NONE) {
        auto it = aidlToNativeAudioType.find({info.aidlAudioDevice.type.type,
                                    info.aidlAudioDevice.type.connection});
        audio_devices_t nativeAudioType = AUDIO_DEVICE_NONE;
        if (it != aidlToNativeAudioType.end()) {
            nativeAudioType = it->second;
        }
        env->CallObjectMethod(builder, gTvInputHardwareInfoBuilderClassInfo.audioType,
            nativeAudioType);
        if (info.aidlAudioDevice.type.type != AidlAudioDeviceType::NONE) {
            std::stringstream ss;
            switch (info.aidlAudioDevice.address.getTag()) {
                case AidlAudioDeviceAddress::id:
+1 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ using ::aidl::android::hardware::tv::input::TvMessageEventType;

using AidlAudioDevice = ::aidl::android::media::audio::common::AudioDevice;
using AidlAudioDeviceAddress = ::aidl::android::media::audio::common::AudioDeviceAddress;
using AidlAudioDeviceDescription = ::aidl::android::media::audio::common::AudioDeviceDescription;
using AidlAudioDeviceType = ::aidl::android::media::audio::common::AudioDeviceType;
using AidlITvInput = ::aidl::android::hardware::tv::input::ITvInput;
using AidlNativeHandle = ::aidl::android::hardware::common::NativeHandle;