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

Commit 3a352d5c authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "audio: hal and post_proc KW and misc fixes"

parents 2a5a02f8 8880cac7
Loading
Loading
Loading
Loading
+17 −11
Original line number Diff line number Diff line
@@ -134,14 +134,15 @@ static uint32_t string_to_enum(const struct string_to_enum *table, size_t size,
static audio_output_flags_t parse_flag_names(char *name)
{
    uint32_t flag = 0;
    char *flag_name = strtok(name, "|");
    char *last_r;
    char *flag_name = strtok_r(name, "|", &last_r);
    while (flag_name != NULL) {
        if (strlen(flag_name) != 0) {
            flag |= string_to_enum(s_flag_name_to_enum_table,
                               ARRAY_SIZE(s_flag_name_to_enum_table),
                               flag_name);
        }
        flag_name = strtok(NULL, "|");
        flag_name = strtok_r(NULL, "|", &last_r);
    }

    ALOGV("parse_flag_names: flag - %d", flag);
@@ -151,7 +152,8 @@ static audio_output_flags_t parse_flag_names(char *name)
static void parse_format_names(char *name, struct streams_output_cfg *so_info)
{
    struct stream_format *sf_info = NULL;
    char *str = strtok(name, "|");
    char *last_r;
    char *str = strtok_r(name, "|", &last_r);

    if (str != NULL && strcmp(str, DYNAMIC_VALUE_TAG) == 0)
        return;
@@ -169,7 +171,7 @@ static void parse_format_names(char *name, struct streams_output_cfg *so_info)
            sf_info->format = format;
            list_add_tail(&so_info->format_list, &sf_info->list);
        }
        str = strtok(NULL, "|");
        str = strtok_r(NULL, "|", &last_r);
    }
}

@@ -177,7 +179,8 @@ static void parse_sample_rate_names(char *name, struct streams_output_cfg *so_in
{
    struct stream_sample_rate *ss_info = NULL;
    uint32_t sample_rate = 48000;
    char *str = strtok(name, "|");
    char *last_r;
    char *str = strtok_r(name, "|", &last_r);

    if (str != NULL && 0 == strcmp(str, DYNAMIC_VALUE_TAG))
        return;
@@ -188,20 +191,22 @@ static void parse_sample_rate_names(char *name, struct streams_output_cfg *so_in
        ALOGV("%s: sample_rate - %d", __func__, sample_rate);
        if (0 != sample_rate) {
            ss_info = (struct stream_sample_rate *)calloc(1, sizeof(struct stream_sample_rate));
            if (ss_info == NULL)
                break; /* return whatever was parsed */

            if (!ss_info) {
                ALOGE("%s: memory allocation failure", __func__);
                return;
            }
            ss_info->sample_rate = sample_rate;
            list_add_tail(&so_info->sample_rate_list, &ss_info->list);
        }
        str = strtok(NULL, "|");
        str = strtok_r(NULL, "|", &last_r);
    }
}

static int parse_bit_width_names(char *name)
{
    int bit_width = 16;
    char *str = strtok(name, "|");
    char *last_r;
    char *str = strtok_r(name, "|", &last_r);

    if (str != NULL && strcmp(str, DYNAMIC_VALUE_TAG))
        bit_width = (int)strtol(str, (char **)NULL, 10);
@@ -213,7 +218,8 @@ static int parse_bit_width_names(char *name)
static int parse_app_type_names(void *platform, char *name)
{
    int app_type = platform_get_default_app_type(platform);
    char *str = strtok(name, "|");
    char *last_r;
    char *str = strtok_r(name, "|", &last_r);

    if (str != NULL && strcmp(str, DYNAMIC_VALUE_TAG))
        app_type = (int)strtol(str, (char **)NULL, 10);
+5 −5
Original line number Diff line number Diff line
@@ -420,7 +420,7 @@ int enable_audio_route(struct audio_device *adev,
    audio_extn_listen_update_stream_status(usecase, LISTEN_EVENT_STREAM_BUSY);
    audio_extn_utils_send_audio_calibration(adev, usecase);
    audio_extn_utils_send_app_type_cfg(usecase);
    strcpy(mixer_path, use_case_table[usecase->id]);
    strlcpy(mixer_path, use_case_table[usecase->id], MIXER_PATH_MAX_LENGTH);
    platform_add_backend_name(mixer_path, snd_device);
    ALOGV("%s: apply mixer and update path: %s", __func__, mixer_path);
    audio_route_apply_and_update_path(adev->audio_route, mixer_path);
@@ -442,7 +442,7 @@ int disable_audio_route(struct audio_device *adev,
        snd_device = usecase->in_snd_device;
    else
        snd_device = usecase->out_snd_device;
    strcpy(mixer_path, use_case_table[usecase->id]);
    strlcpy(mixer_path, use_case_table[usecase->id], MIXER_PATH_MAX_LENGTH);
    platform_add_backend_name(mixer_path, snd_device);
    ALOGV("%s: reset and update mixer path: %s", __func__, mixer_path);
    audio_route_reset_and_update_path(adev->audio_route, mixer_path);
@@ -1954,9 +1954,9 @@ static char* out_get_parameters(const struct audio_stream *stream, const char *k
            for (j = 0; j < ARRAY_SIZE(out_channels_name_to_enum_table); j++) {
                if (out_channels_name_to_enum_table[j].value == out->supported_channel_masks[i]) {
                    if (!first) {
                        strcat(value, "|");
                        strlcat(value, "|", sizeof(value));
                    }
                    strcat(value, out_channels_name_to_enum_table[j].name);
                    strlcat(value, out_channels_name_to_enum_table[j].name, sizeof(value));
                    first = false;
                    break;
                }
@@ -1983,7 +1983,7 @@ static char* out_get_parameters(const struct audio_stream *stream, const char *k
            for (j = 0; j < ARRAY_SIZE(out_formats_name_to_enum_table); j++) {
                if (out_formats_name_to_enum_table[j].value == out->supported_formats[i]) {
                    if (!first) {
                        strcat(value, "|");
                        strlcat(value, "|", sizeof(value));
                    }
                    strlcat(value, out_formats_name_to_enum_table[j].name, sizeof(value));
                    first = false;
+2 −2
Original line number Diff line number Diff line
@@ -1421,7 +1421,7 @@ void *platform_init(struct audio_device *adev)
    DIR *dir;
    struct dirent *dirent;
    char file_name[10] = "wsa";
    strcat(CodecPeek, snd_card_name);
    strlcat(CodecPeek, snd_card_name, sizeof(CodecPeek));

    dir = opendir(CodecPeek);
    if (dir != NULL) {
@@ -3810,7 +3810,7 @@ int platform_set_channel_map(void *platform, int ch_count, char *ch_map, int snd
    strlcpy(mixer_ctl_name, "Playback Channel Map", sizeof(mixer_ctl_name));
    if (snd_id >= 0) {
        snprintf(device_num, sizeof(device_num), "%d", snd_id);
        strncat(mixer_ctl_name, device_num, 13);
        strlcat(mixer_ctl_name, device_num, sizeof(device_num));
    }

    ALOGD("%s mixer_ctl_name:%s", __func__, mixer_ctl_name);
+6 −1
Original line number Diff line number Diff line
@@ -2647,6 +2647,11 @@ int platform_set_parameters(void *platform, struct str_parms *parms)
        bool status = false;
        str_parms_del(parms, AUDIO_PARAMETER_KEY_EXT_AUDIO_DEVICE);
        event_name = strtok_r(value, ",", &status_str);
        if (!event_name) {
            ret = -EINVAL;
            ALOGE("%s: event_name is NULL", __func__);
            goto done;
        }
        ALOGV("%s: recieved update of external audio device %s %s",
                         __func__,
                         event_name, status_str);
@@ -3456,7 +3461,7 @@ int platform_set_channel_allocation(void *platform, int channel_alloc)
int platform_set_channel_map(void *platform, int ch_count, char *ch_map, int snd_id)
{
    struct mixer_ctl *ctl;
    char mixer_ctl_name[44]; // max length of name is 44 as defined
    char mixer_ctl_name[44] = {0}; // max length of name is 44 as defined
    int ret;
    unsigned int i;
    int set_values[8] = {0};
+2 −2
Original line number Diff line number Diff line
@@ -110,11 +110,11 @@ int offload_update_mixer_and_effects_ctl(int card, int device_id,
    *mixer = mixer_open(card);
    if (!(*mixer)) {
        ALOGE("Failed to open mixer");
        ctl = NULL;
        *ctl = NULL;
        return -EINVAL;
    } else {
        *ctl = mixer_get_ctl_by_name(*mixer, mixer_string);
        if (!(*ctl)) {
        if (!*ctl) {
            ALOGE("mixer_get_ctl_by_name failed");
            mixer_close(*mixer);
            *mixer = NULL;