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

Commit f0884947 authored by Eric Laurent's avatar Eric Laurent Committed by Automerger Merge Worker
Browse files

Merge "audio policy: set track spatialization state from audio policy...

Merge "audio policy: set track spatialization state from audio policy manager." into tm-dev am: e78f04c4 am: 064ca8f6

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/17567382



Change-Id: Ic767b8bc4c21fc4289bde9f199cdfca3e2107794
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents d53c2bdb 064ca8f6
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -959,7 +959,8 @@ status_t AudioSystem::getOutputForAttr(audio_attributes_t* attr,
                                       audio_output_flags_t flags,
                                       audio_port_handle_t* selectedDeviceId,
                                       audio_port_handle_t* portId,
                                       std::vector<audio_io_handle_t>* secondaryOutputs) {
                                       std::vector<audio_io_handle_t>* secondaryOutputs,
                                       bool *isSpatialized) {
    if (attr == nullptr) {
        ALOGE("%s NULL audio attributes", __func__);
        return BAD_VALUE;
@@ -1012,6 +1013,7 @@ status_t AudioSystem::getOutputForAttr(audio_attributes_t* attr,
    *portId = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_audio_port_handle_t(responseAidl.portId));
    *secondaryOutputs = VALUE_OR_RETURN_STATUS(convertContainer<std::vector<audio_io_handle_t>>(
            responseAidl.secondaryOutputs, aidl2legacy_int32_t_audio_io_handle_t));
    *isSpatialized = responseAidl.isSpatialized;

    return OK;
}
+2 −0
Original line number Diff line number Diff line
@@ -31,4 +31,6 @@ parcelable GetOutputForAttrResponse {
    int portId;
    /** Interpreted as audio_io_handle_t[]. */
    int[] secondaryOutputs;
    /** True if the track is connected to a spatializer mixer and actually spatialized */
    boolean isSpatialized;
}
+2 −1
Original line number Diff line number Diff line
@@ -286,7 +286,8 @@ public:
                                     audio_output_flags_t flags,
                                     audio_port_handle_t *selectedDeviceId,
                                     audio_port_handle_t *portId,
                                     std::vector<audio_io_handle_t> *secondaryOutputs);
                                     std::vector<audio_io_handle_t> *secondaryOutputs,
                                     bool *isSpatialized);
    static status_t startOutput(audio_port_handle_t portId);
    static status_t stopOutput(audio_port_handle_t portId);
    static void releaseOutput(audio_port_handle_t portId);
+6 −4
Original line number Diff line number Diff line
@@ -585,14 +585,14 @@ status_t AudioFlinger::openMmapStream(MmapStreamInterface::stream_direction_t di
        fullConfig.channel_mask = config->channel_mask;
        fullConfig.format = config->format;
        std::vector<audio_io_handle_t> secondaryOutputs;

        bool isSpatialized;
        ret = AudioSystem::getOutputForAttr(&localAttr, &io,
                                            actualSessionId,
                                            &streamType, client.attributionSource,
                                            &fullConfig,
                                            (audio_output_flags_t)(AUDIO_OUTPUT_FLAG_MMAP_NOIRQ |
                                                    AUDIO_OUTPUT_FLAG_DIRECT),
                                            deviceId, &portId, &secondaryOutputs);
                                            deviceId, &portId, &secondaryOutputs, &isSpatialized);
        ALOGW_IF(!secondaryOutputs.empty(),
                 "%s does not support secondary outputs, ignoring them", __func__);
    } else {
@@ -1034,6 +1034,7 @@ status_t AudioFlinger::createTrack(const media::CreateTrackRequest& _input,
    audio_stream_type_t streamType;
    audio_port_handle_t portId = AUDIO_PORT_HANDLE_NONE;
    std::vector<audio_io_handle_t> secondaryOutputs;
    bool isSpatialized = false;;

    // TODO b/182392553: refactor or make clearer
    pid_t clientPid =
@@ -1077,7 +1078,8 @@ status_t AudioFlinger::createTrack(const media::CreateTrackRequest& _input,
    output.selectedDeviceId = input.selectedDeviceId;
    lStatus = AudioSystem::getOutputForAttr(&localAttr, &output.outputId, sessionId, &streamType,
                                            adjAttributionSource, &input.config, input.flags,
                                            &output.selectedDeviceId, &portId, &secondaryOutputs);
                                            &output.selectedDeviceId, &portId, &secondaryOutputs,
                                            &isSpatialized);

    if (lStatus != NO_ERROR || output.outputId == AUDIO_IO_HANDLE_NONE) {
        ALOGE("createTrack() getOutputForAttr() return error %d or invalid output handle", lStatus);
@@ -1143,7 +1145,7 @@ status_t AudioFlinger::createTrack(const media::CreateTrackRequest& _input,
                                      input.notificationsPerBuffer, input.speed,
                                      input.sharedBuffer, sessionId, &output.flags,
                                      callingPid, adjAttributionSource, input.clientInfo.clientTid,
                                      &lStatus, portId, input.audioTrackCallback);
                                      &lStatus, portId, input.audioTrackCallback, isSpatialized);
        LOG_ALWAYS_FATAL_IF((lStatus == NO_ERROR) && (track == 0));
        // we don't abort yet if lStatus != NO_ERROR; there is still work to be done regardless

+4 −1
Original line number Diff line number Diff line
@@ -82,7 +82,8 @@ public:
                                /** default behaviour is to start when there are as many frames
                                  * ready as possible (aka. Buffer is full). */
                                size_t frameCountToBeReady = SIZE_MAX,
                                float speed = 1.0f);
                                float speed = 1.0f,
                                bool isSpatialized = false);
    virtual             ~Track();
    virtual status_t    initCheck() const;

@@ -201,6 +202,7 @@ public:

    audio_output_flags_t getOutputFlags() const { return mFlags; }
    float getSpeed() const { return mSpeed; }
    bool isSpatialized() const override { return mIsSpatialized; }

protected:
    // for numerous
@@ -351,6 +353,7 @@ private:
    audio_output_flags_t mFlags;
    TeePatches  mTeePatches;
    const float         mSpeed;
    const bool          mIsSpatialized;
};  // end of Track


Loading