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

Commit e9616515 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "hal: Add API support to stop input stream"

parents 11081b3d 46e07987
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -98,9 +98,10 @@ bool cin_applicable_stream(struct stream_in *in);
bool cin_attached_usecase(audio_usecase_t uc_id);
bool cin_format_supported(audio_format_t format);
size_t cin_get_buffer_size(struct stream_in *in);
int cin_start_input_stream(struct stream_in *in);
int cin_open_input_stream(struct stream_in *in);
void cin_stop_input_stream(struct stream_in *in);
void cin_close_input_stream(struct stream_in *in);
void cin_free_input_stream_resources(struct stream_in *in);
int cin_read(struct stream_in *in, void *buffer,
                        size_t bytes, size_t *bytes_read);
int cin_configure_input_stream(struct stream_in *in);
@@ -5063,9 +5064,9 @@ size_t audio_extn_cin_get_buffer_size(struct stream_in *in)
{
    return (audio_extn_compress_in_enabled? cin_get_buffer_size(in): 0);
}
int audio_extn_cin_start_input_stream(struct stream_in *in)
int audio_extn_cin_open_input_stream(struct stream_in *in)
{
    return (audio_extn_compress_in_enabled? cin_start_input_stream(in): -1);
    return (audio_extn_compress_in_enabled? cin_open_input_stream(in): -1);
}
void audio_extn_cin_stop_input_stream(struct stream_in *in)
{
@@ -5075,6 +5076,10 @@ void audio_extn_cin_close_input_stream(struct stream_in *in)
{
    (audio_extn_compress_in_enabled? cin_close_input_stream(in): NULL);
}
void audio_extn_cin_free_input_stream_resources(struct stream_in *in)
{
    return (audio_extn_compress_in_enabled? cin_free_input_stream_resources(in): NULL);
}
int audio_extn_cin_read(struct stream_in *in, void *buffer,
                        size_t bytes, size_t *bytes_read)
{
+2 −1
Original line number Diff line number Diff line
@@ -1066,9 +1066,10 @@ bool audio_extn_cin_applicable_stream(struct stream_in *in);
bool audio_extn_cin_attached_usecase(audio_usecase_t uc_id);
bool audio_extn_cin_format_supported(audio_format_t format);
size_t audio_extn_cin_get_buffer_size(struct stream_in *in);
int audio_extn_cin_start_input_stream(struct stream_in *in);
int audio_extn_cin_open_input_stream(struct stream_in *in);
void audio_extn_cin_stop_input_stream(struct stream_in *in);
void audio_extn_cin_close_input_stream(struct stream_in *in);
void audio_extn_cin_free_input_stream_resources(struct stream_in *in);
int audio_extn_cin_read(struct stream_in *in, void *buffer,
                        size_t bytes, size_t *bytes_read);
int audio_extn_cin_configure_input_stream(struct stream_in *in);
+14 −3
Original line number Diff line number Diff line
@@ -179,7 +179,7 @@ size_t cin_get_buffer_size(struct stream_in *in)
    return sz;
}

int cin_start_input_stream(struct stream_in *in)
int cin_open_input_stream(struct stream_in *in)
{
    int ret = -EINVAL;
    struct audio_device *adev = in->dev;
@@ -206,6 +206,17 @@ void cin_stop_input_stream(struct stream_in *in)
{
    cin_private_data_t *cin_data = (cin_private_data_t *) in->cin_extn;

    ALOGV("%s: in %p, cin_data %p", __func__, in, cin_data);
    if (cin_data->compr) {
        compress_stop(cin_data->compr);
    }
}


void cin_close_input_stream(struct stream_in *in)
{
    cin_private_data_t *cin_data = (cin_private_data_t *) in->cin_extn;

    ALOGV("%s: in %p, cin_data %p", __func__, in, cin_data);
    if (cin_data->compr) {
        compress_close(cin_data->compr);
@@ -213,7 +224,7 @@ void cin_stop_input_stream(struct stream_in *in)
    }
}

void cin_close_input_stream(struct stream_in *in)
void cin_free_input_stream_resources(struct stream_in *in)
{
    cin_private_data_t *cin_data = (cin_private_data_t *) in->cin_extn;

@@ -332,6 +343,6 @@ int cin_configure_input_stream(struct stream_in *in)
    return ret;

err_config:
    cin_close_input_stream(in);
    cin_free_input_stream_resources(in);
    return ret;
}
+3 −3
Original line number Diff line number Diff line
@@ -2910,7 +2910,7 @@ int start_input_stream(struct stream_in *in)
        ALOGE("%s: failed to start ext hw plugin", __func__);

    if (audio_extn_cin_attached_usecase(in->usecase)) {
       ret = audio_extn_cin_start_input_stream(in);
       ret = audio_extn_cin_open_input_stream(in);
       if (ret)
           goto error_open;
       else
@@ -6228,7 +6228,7 @@ static int in_standby(struct audio_stream *stream)
            in->capture_started = false;
        } else {
            if (audio_extn_cin_attached_usecase(in->usecase))
                audio_extn_cin_stop_input_stream(in);
                audio_extn_cin_close_input_stream(in);
        }

        if (in->pcm) {
@@ -9023,7 +9023,7 @@ static void adev_close_input_stream(struct audio_hw_device *dev,
        audio_extn_compr_cap_deinit();

    if (audio_extn_cin_attached_usecase(in->usecase))
        audio_extn_cin_close_input_stream(in);
        audio_extn_cin_free_input_stream_resources(in);

    if (in->is_st_session) {
        ALOGV("%s: sound trigger pcm stop lab", __func__);
+21 −0
Original line number Diff line number Diff line
@@ -190,6 +190,27 @@ int qahwi_set_param_data(struct audio_hw_device *adev,
    return ret;
}

int qahwi_in_stop(struct audio_stream_in* stream) {
    struct stream_in *in = (struct stream_in *)stream;
    struct audio_device *adev = in->dev;

    ALOGD("%s processing, in %p", __func__, in);

    pthread_mutex_lock(&adev->lock);

    if (!in->standby) {
        if (in->pcm != NULL ) {
            pcm_stop(in->pcm);
        } else if (audio_extn_cin_format_supported(in->format)) {
            audio_extn_cin_stop_input_stream(in);
        }
    }

    pthread_mutex_unlock(&adev->lock);

    return 0;
}

ssize_t qahwi_in_read_v2(struct audio_stream_in *stream, void* buffer,
                          size_t bytes, uint64_t *timestamp)
{
Loading