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

Commit 5b3e0d79 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "libaudiohal: Align use of get_audio_port_v7 with default wrapper" into sc-dev

parents 56ab5d5e 720cc43e
Loading
Loading
Loading
Loading
+16 −18
Original line number Diff line number Diff line
@@ -354,7 +354,8 @@ status_t DeviceHalHidl::releaseAudioPatch(audio_patch_handle_t patch) {
    return processReturn("releaseAudioPatch", mDevice->releaseAudioPatch(patch));
}

status_t DeviceHalHidl::getAudioPort(struct audio_port *port) {
template <typename HalPort>
status_t DeviceHalHidl::getAudioPortImpl(HalPort *port) {
    if (mDevice == 0) return NO_INIT;
    AudioPort hidlPort;
    HidlUtils::audioPortFromHal(*port, &hidlPort);
@@ -370,31 +371,28 @@ status_t DeviceHalHidl::getAudioPort(struct audio_port *port) {
    return processReturn("getAudioPort", ret, retval);
}

status_t DeviceHalHidl::getAudioPort(struct audio_port *port) {
    return getAudioPortImpl(port);
}

status_t DeviceHalHidl::getAudioPort(struct audio_port_v7 *port) {
    if (mDevice == 0) return NO_INIT;
    status_t status = NO_ERROR;
#if MAJOR_VERSION >= 7
    AudioPort hidlPort;
    HidlUtils::audioPortFromHal(*port, &hidlPort);
    Result retval;
    Return<void> ret = mDevice->getAudioPort(
            hidlPort,
            [&](Result r, const AudioPort& p) {
                retval = r;
                if (retval == Result::OK) {
                    HidlUtils::audioPortToHal(p, port);
                }
            });
    status = processReturn("getAudioPort", ret, retval);
    return getAudioPortImpl(port);
#else
    struct audio_port audioPort = {};
    audio_populate_audio_port(port, &audioPort);
    status = getAudioPort(&audioPort);
    status_t result = NO_ERROR;
    if (!audio_populate_audio_port(port, &audioPort)) {
        ALOGE("Failed to populate legacy audio port from audio_port_v7");
        result = BAD_VALUE;
    }
    status_t status = getAudioPort(&audioPort);
    if (status == NO_ERROR) {
        audio_populate_audio_port_v7(&audioPort, port);
    } else {
        result = status;
    }
    return result;
#endif
    return status;
}

status_t DeviceHalHidl::setAudioPortConfig(const struct audio_port_config *config) {
+2 −0
Original line number Diff line number Diff line
@@ -131,6 +131,8 @@ class DeviceHalHidl : public DeviceHalInterface, public ConversionHelperHidl

    // The destructor automatically closes the device.
    virtual ~DeviceHalHidl();

    template <typename HalPort> status_t getAudioPortImpl(HalPort *port);
};

} // namespace CPP_VERSION
+6 −0
Original line number Diff line number Diff line
@@ -181,6 +181,12 @@ status_t DeviceHalLocal::getAudioPort(struct audio_port *port) {
}

status_t DeviceHalLocal::getAudioPort(struct audio_port_v7 *port) {
#if MAJOR_VERSION >= 7
    if (version() >= AUDIO_DEVICE_API_VERSION_3_2) {
        // get_audio_port_v7 is mandatory if legacy HAL support this API version.
        return mDev->get_audio_port_v7(mDev, port);
    }
#endif
    struct audio_port audioPort = {};
    audio_populate_audio_port(port, &audioPort);
    status_t status = getAudioPort(&audioPort);