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

Commit 6651930c authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes from topic "upstream-hal-v7_1-p3"

* changes:
  Remove use of IStreamIn@7.1
  Implement use of Device.setConnectedState/_7_1 HAL method
  AudioFlinger: Add memory leak checking for HAL
  audio policy: add audio policy ready flag.
parents e90a207d cb101890
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -480,6 +480,12 @@ status_t AudioSystem::systemReady() {
    return af->systemReady();
}

status_t AudioSystem::audioPolicyReady() {
    const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
    if (af == 0) return NO_INIT;
    return af->audioPolicyReady();
}

status_t AudioSystem::getFrameCountHAL(audio_io_handle_t ioHandle,
                                       size_t* frameCount) {
    const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
+21 −0
Original line number Diff line number Diff line
@@ -715,6 +715,10 @@ status_t AudioFlingerClientAdapter::systemReady() {
    return statusTFromBinderStatus(mDelegate->systemReady());
}

status_t AudioFlingerClientAdapter::audioPolicyReady() {
    return statusTFromBinderStatus(mDelegate->audioPolicyReady());
}

size_t AudioFlingerClientAdapter::frameCountHAL(audio_io_handle_t ioHandle) const {
    auto result = [&]() -> ConversionResult<size_t> {
        int32_t ioHandleAidl = VALUE_OR_RETURN(legacy2aidl_audio_io_handle_t_int32_t(ioHandle));
@@ -761,6 +765,12 @@ status_t AudioFlingerClientAdapter::updateSecondaryOutputs(
    return statusTFromBinderStatus(mDelegate->updateSecondaryOutputs(trackSecondaryOutputInfos));
}

status_t AudioFlingerClientAdapter::setDeviceConnectedState(
        const struct audio_port_v7 *port, bool connected) {
    media::AudioPort aidlPort = VALUE_OR_RETURN_STATUS(
            legacy2aidl_audio_port_v7_AudioPort(*port));
    return statusTFromBinderStatus(mDelegate->setDeviceConnectedState(aidlPort, connected));
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// AudioFlingerServerAdapter
@@ -1189,6 +1199,11 @@ Status AudioFlingerServerAdapter::systemReady() {
    return Status::fromStatusT(mDelegate->systemReady());
}

Status AudioFlingerServerAdapter::audioPolicyReady() {
    mDelegate->audioPolicyReady();
    return Status::ok();
}

Status AudioFlingerServerAdapter::frameCountHAL(int32_t ioHandle, int64_t* _aidl_return) {
    audio_io_handle_t ioHandleLegacy = VALUE_OR_RETURN_BINDER(
            aidl2legacy_int32_t_audio_io_handle_t(ioHandle));
@@ -1227,4 +1242,10 @@ Status AudioFlingerServerAdapter::updateSecondaryOutputs(
    return Status::fromStatusT(mDelegate->updateSecondaryOutputs(trackSecondaryOutputs));
}

Status AudioFlingerServerAdapter::setDeviceConnectedState(
        const media::AudioPort& port, bool connected) {
    audio_port_v7 portLegacy = VALUE_OR_RETURN_BINDER(aidl2legacy_AudioPort_audio_port_v7(port));
    return Status::fromStatusT(mDelegate->setDeviceConnectedState(&portLegacy, connected));
}

} // namespace android
+5 −0
Original line number Diff line number Diff line
@@ -197,6 +197,9 @@ interface IAudioFlingerService {
    /* Indicate JAVA services are ready (scheduling, power management ...) */
    oneway void systemReady();

    /* Indicate audio policy service is ready */
    oneway void audioPolicyReady();

    // Returns the number of frames per audio HAL buffer.
    long frameCountHAL(int /* audio_io_handle_t */ ioHandle);

@@ -213,4 +216,6 @@ interface IAudioFlingerService {
    // This usually happens when there is a dynamic policy registered.
    void updateSecondaryOutputs(
            in TrackSecondaryOutputInfo[] trackSecondaryOutputInfos);

    void setDeviceConnectedState(in AudioPort devicePort, boolean connected);
}
+3 −0
Original line number Diff line number Diff line
@@ -225,6 +225,9 @@ public:
    // Indicate JAVA services are ready (scheduling, power management ...)
    static status_t systemReady();

    // Indicate audio policy service is ready
    static status_t audioPolicyReady();

    // Returns the number of frames per audio HAL buffer.
    // Corresponds to audio_stream->get_buffer_size()/audio_stream_in_frame_size() for input.
    // See also getFrameCount().
+12 −0
Original line number Diff line number Diff line
@@ -329,6 +329,9 @@ public:
    /* Indicate JAVA services are ready (scheduling, power management ...) */
    virtual status_t systemReady() = 0;

    // Indicate audio policy service is ready
    virtual status_t audioPolicyReady() = 0;

    // Returns the number of frames per audio HAL buffer.
    virtual size_t frameCountHAL(audio_io_handle_t ioHandle) const = 0;

@@ -344,6 +347,8 @@ public:

    virtual status_t updateSecondaryOutputs(
            const TrackSecondaryOutputsMap& trackSecondaryOutputs) = 0;

    virtual status_t setDeviceConnectedState(const struct audio_port_v7 *port, bool connected) = 0;
};

/**
@@ -432,12 +437,15 @@ public:
    status_t setAudioPortConfig(const struct audio_port_config* config) override;
    audio_hw_sync_t getAudioHwSyncForSession(audio_session_t sessionId) override;
    status_t systemReady() override;
    status_t audioPolicyReady() override;

    size_t frameCountHAL(audio_io_handle_t ioHandle) const override;
    status_t getMicrophones(std::vector<media::MicrophoneInfo>* microphones) override;
    status_t setAudioHalPids(const std::vector<pid_t>& pids) override;
    status_t setVibratorInfos(const std::vector<media::AudioVibratorInfo>& vibratorInfos) override;
    status_t updateSecondaryOutputs(
            const TrackSecondaryOutputsMap& trackSecondaryOutputs) override;
    status_t setDeviceConnectedState(const struct audio_port_v7 *port, bool connected) override;

private:
    const sp<media::IAudioFlingerService> mDelegate;
@@ -514,6 +522,7 @@ public:
            SET_AUDIO_PORT_CONFIG = media::BnAudioFlingerService::TRANSACTION_setAudioPortConfig,
            GET_AUDIO_HW_SYNC_FOR_SESSION = media::BnAudioFlingerService::TRANSACTION_getAudioHwSyncForSession,
            SYSTEM_READY = media::BnAudioFlingerService::TRANSACTION_systemReady,
            AUDIO_POLICY_READY = media::BnAudioFlingerService::TRANSACTION_audioPolicyReady,
            FRAME_COUNT_HAL = media::BnAudioFlingerService::TRANSACTION_frameCountHAL,
            GET_MICROPHONES = media::BnAudioFlingerService::TRANSACTION_getMicrophones,
            SET_MASTER_BALANCE = media::BnAudioFlingerService::TRANSACTION_setMasterBalance,
@@ -522,6 +531,7 @@ public:
            SET_AUDIO_HAL_PIDS = media::BnAudioFlingerService::TRANSACTION_setAudioHalPids,
            SET_VIBRATOR_INFOS = media::BnAudioFlingerService::TRANSACTION_setVibratorInfos,
            UPDATE_SECONDARY_OUTPUTS = media::BnAudioFlingerService::TRANSACTION_updateSecondaryOutputs,
            SET_DEVICE_CONNECTED_STATE = media::BnAudioFlingerService::TRANSACTION_setDeviceConnectedState,
        };

        /**
@@ -624,12 +634,14 @@ public:
    Status setAudioPortConfig(const media::AudioPortConfig& config) override;
    Status getAudioHwSyncForSession(int32_t sessionId, int32_t* _aidl_return) override;
    Status systemReady() override;
    Status audioPolicyReady() override;
    Status frameCountHAL(int32_t ioHandle, int64_t* _aidl_return) override;
    Status getMicrophones(std::vector<media::MicrophoneInfoData>* _aidl_return) override;
    Status setAudioHalPids(const std::vector<int32_t>& pids) override;
    Status setVibratorInfos(const std::vector<media::AudioVibratorInfo>& vibratorInfos) override;
    Status updateSecondaryOutputs(
            const std::vector<media::TrackSecondaryOutputInfo>& trackSecondaryOutputInfos) override;
    Status setDeviceConnectedState(const media::AudioPort& port, bool connected) override;

private:
    const sp<AudioFlingerServerAdapter::Delegate> mDelegate;
Loading