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

Commit 13355e90 authored by Eric Laurent's avatar Eric Laurent Committed by Android (Google) Code Review
Browse files

Merge "volume listener: fix process() function for accumulate mode." into mnc-dr-dev

parents e63e61d4 7963d382
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -312,6 +312,13 @@ static void check_and_set_gain_dep_cal()
 * Effect Control Interface Implementation
 */

static inline int16_t clamp16(int32_t sample)
{
    if ((sample>>15) ^ (sample>>31))
        sample = 0x7FFF ^ (sample>>31);
    return sample;
}

static int vol_effect_process(effect_handle_t self,
                              audio_buffer_t *in_buffer,
                              audio_buffer_t *out_buffer)
@@ -330,7 +337,15 @@ static int vol_effect_process(effect_handle_t self,

    // calculation based on channel count 2
    if (in_buffer->raw != out_buffer->raw) {
        if (context->config.outputCfg.accessMode == EFFECT_BUFFER_ACCESS_ACCUMULATE) {
            size_t i;
            for (i = 0; i < out_buffer->frameCount*2; i++) {
                out_buffer->s16[i] = clamp16(out_buffer->s16[i] + in_buffer->s16[i]);
            }
        } else {
            memcpy(out_buffer->raw, in_buffer->raw, out_buffer->frameCount * 2 * sizeof(int16_t));
        }

    } else {
        ALOGW("%s: something wrong, didn't handle in_buffer and out_buffer same address case",
              __func__);
@@ -374,6 +389,12 @@ static int vol_effect_command(effect_handle_t self,

    case EFFECT_CMD_SET_CONFIG:
        ALOGV("%s :: cmd called EFFECT_CMD_SET_CONFIG", __func__);
        if (p_cmd_data == NULL || cmd_size != sizeof(effect_config_t)
                || p_reply_data == NULL || reply_size == NULL || *reply_size != sizeof(int)) {
            return -EINVAL;
        }
        context->config = *(effect_config_t *)p_cmd_data;
        *(int *)p_reply_data = 0;
        break;

    case EFFECT_CMD_GET_CONFIG:
@@ -600,7 +621,7 @@ static int lib_init()

static int vol_prc_lib_create(const effect_uuid_t *uuid,
                              int32_t session_id,
                              int32_t io_id,
                              int32_t io_id __unused,
                              effect_handle_t *p_handle)
{
    int itt = 0;