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

Commit 88e5ad9f authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change Icf10db28 into eclair

* changes:
  Fix issue 2192181: AudioFlinger must provide separated methods to set VOICE_CALL stream volume and down link audio volume.
parents a9a43909 f0ee6f40
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -220,6 +220,7 @@ public:
    static status_t getInputBufferSize(uint32_t sampleRate, int format, int channelCount,
    static status_t getInputBufferSize(uint32_t sampleRate, int format, int channelCount,
        size_t* buffSize);
        size_t* buffSize);


    static status_t setVoiceVolume(float volume);


    //
    //
    // AudioPolicyService interface
    // AudioPolicyService interface
+4 −2
Original line number Original line Diff line number Diff line
@@ -128,6 +128,8 @@ public:
    virtual status_t closeInput(int input) = 0;
    virtual status_t closeInput(int input) = 0;


    virtual status_t setStreamOutput(uint32_t stream, int output) = 0;
    virtual status_t setStreamOutput(uint32_t stream, int output) = 0;

    virtual status_t setVoiceVolume(float volume) = 0;
};
};




+7 −0
Original line number Original line Diff line number Diff line
@@ -335,6 +335,13 @@ status_t AudioSystem::getInputBufferSize(uint32_t sampleRate, int format, int ch
    return NO_ERROR;
    return NO_ERROR;
}
}


status_t AudioSystem::setVoiceVolume(float value)
{
    const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
    if (af == 0) return PERMISSION_DENIED;
    return af->setVoiceVolume(value);
}

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------


void AudioSystem::AudioFlingerClient::binderDied(const wp<IBinder>& who) {
void AudioSystem::AudioFlingerClient::binderDied(const wp<IBinder>& who) {
+17 −1
Original line number Original line Diff line number Diff line
@@ -59,7 +59,8 @@ enum {
    RESTORE_OUTPUT,
    RESTORE_OUTPUT,
    OPEN_INPUT,
    OPEN_INPUT,
    CLOSE_INPUT,
    CLOSE_INPUT,
    SET_STREAM_OUTPUT
    SET_STREAM_OUTPUT,
    SET_VOICE_VOLUME
};
};


class BpAudioFlinger : public BpInterface<IAudioFlinger>
class BpAudioFlinger : public BpInterface<IAudioFlinger>
@@ -455,6 +456,15 @@ public:
        remote()->transact(SET_STREAM_OUTPUT, data, &reply);
        remote()->transact(SET_STREAM_OUTPUT, data, &reply);
        return reply.readInt32();
        return reply.readInt32();
    }
    }

    virtual status_t setVoiceVolume(float volume)
    {
        Parcel data, reply;
        data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
        data.writeFloat(volume);
        remote()->transact(SET_VOICE_VOLUME, data, &reply);
        return reply.readInt32();
    }
};
};


IMPLEMENT_META_INTERFACE(AudioFlinger, "android.media.IAudioFlinger");
IMPLEMENT_META_INTERFACE(AudioFlinger, "android.media.IAudioFlinger");
@@ -700,6 +710,12 @@ status_t BnAudioFlinger::onTransact(
            reply->writeInt32(setStreamOutput(stream, output));
            reply->writeInt32(setStreamOutput(stream, output));
            return NO_ERROR;
            return NO_ERROR;
        } break;
        } break;
        case SET_VOICE_VOLUME: {
            CHECK_INTERFACE(IAudioFlinger, data, reply);
            float volume = data.readFloat();
            reply->writeInt32( setVoiceVolume(volume) );
            return NO_ERROR;
        } break;
        default:
        default:
            return BBinder::onTransact(code, data, reply, flags);
            return BBinder::onTransact(code, data, reply, flags);
    }
    }