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

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

Merge "Add selectPresentation API to IAudioTrack"

parents e72cb663 ac917aca
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -2452,13 +2452,8 @@ status_t AudioTrack::setParameters(const String8& keyValuePairs)
status_t AudioTrack::selectPresentation(int presentationId, int programId)
{
    AutoMutex lock(mLock);
    AudioParameter param = AudioParameter();
    param.addInt(String8(AudioParameter::keyPresentationId), presentationId);
    param.addInt(String8(AudioParameter::keyProgramId), programId);
    ALOGV("%s(%d): PresentationId/ProgramId[%s]",
            __func__, mId, param.toString().string());

    return mAudioTrack->setParameters(param.toString());
    ALOGV("%s(%d): PresentationId:%d ProgramId:%d", __func__, mId, presentationId, programId);
    return mAudioTrack->selectPresentation(presentationId, programId);
}

VolumeShaper::Status AudioTrack::applyVolumeShaper(
+19 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ enum {
    PAUSE,
    ATTACH_AUX_EFFECT,
    SET_PARAMETERS,
    SELECT_PRESENTATION,
    GET_TIMESTAMP,
    SIGNAL,
    APPLY_VOLUME_SHAPER,
@@ -127,6 +128,19 @@ public:
        return status;
    }

    /* Selects the presentation (if available) */
    virtual status_t selectPresentation(int presentationId, int programId) {
        Parcel data, reply;
        data.writeInterfaceToken(IAudioTrack::getInterfaceDescriptor());
        data.writeInt32(presentationId);
        data.writeInt32(programId);
        status_t status = remote()->transact(SELECT_PRESENTATION, data, &reply);
        if (status == NO_ERROR) {
            status = reply.readInt32();
        }
        return status;
    }

    virtual status_t getTimestamp(AudioTimestamp& timestamp) {
        Parcel data, reply;
        data.writeInterfaceToken(IAudioTrack::getInterfaceDescriptor());
@@ -239,6 +253,11 @@ status_t BnAudioTrack::onTransact(
            reply->writeInt32(setParameters(keyValuePairs));
            return NO_ERROR;
        } break;
        case SELECT_PRESENTATION: {
            CHECK_INTERFACE(IAudioTrack, data, reply);
            reply->writeInt32(selectPresentation(data.readInt32(), data.readInt32()));
            return NO_ERROR;
        } break;
        case GET_TIMESTAMP: {
            CHECK_INTERFACE(IAudioTrack, data, reply);
            AudioTimestamp timestamp;
+3 −0
Original line number Diff line number Diff line
@@ -70,6 +70,9 @@ public:
    /* Send parameters to the audio hardware */
    virtual status_t    setParameters(const String8& keyValuePairs) = 0;

    /* Selects the presentation (if available) */
    virtual status_t    selectPresentation(int presentationId, int programId) = 0;

    /* Return NO_ERROR if timestamp is valid.  timestamp is undefined otherwise. */
    virtual status_t    getTimestamp(AudioTimestamp& timestamp) = 0;

+19 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <android/hardware/audio/2.0/IStreamOutCallback.h>
#include <android/hardware/audio/4.0/IStreamOutCallback.h>
#include <hwbinder/IPCThreadState.h>
#include <media/AudioParameter.h>
#include <mediautils/SchedulingPolicyService.h>
#include <utils/Log.h>

@@ -347,6 +348,24 @@ status_t StreamOutHalHidl::setVolume(float left, float right) {
    return processReturn("setVolume", mStream->setVolume(left, right));
}

#if MAJOR_VERSION == 2
status_t StreamOutHalHidl::selectPresentation(int presentationId, int programId) {
    if (mStream == 0) return NO_INIT;
    std::vector<ParameterValue> parameters;
    String8 halParameters;
    parameters.push_back({AudioParameter::keyPresentationId, std::to_string(presentationId)});
    parameters.push_back({AudioParameter::keyProgramId, std::to_string(programId)});
    parametersToHal(hidl_vec<ParameterValue>(parameters), &halParameters);
    return setParameters(halParameters);
}
#elif MAJOR_VERSION == 4
status_t StreamOutHalHidl::selectPresentation(int presentationId, int programId) {
    if (mStream == 0) return NO_INIT;
    return processReturn("selectPresentation",
            mStream->selectPresentation(presentationId, programId));
}
#endif

status_t StreamOutHalHidl::write(const void *buffer, size_t bytes, size_t *written) {
    if (mStream == 0) return NO_INIT;
    *written = 0;
+3 −0
Original line number Diff line number Diff line
@@ -131,6 +131,9 @@ class StreamOutHalHidl : public StreamOutHalInterface, public StreamHalHidl {
    // Use this method in situations where audio mixing is done in the hardware.
    virtual status_t setVolume(float left, float right);

    // Selects the audio presentation (if available).
    virtual status_t selectPresentation(int presentationId, int programId);

    // Write audio buffer to driver.
    virtual status_t write(const void *buffer, size_t bytes, size_t *written);

Loading