Loading hal/audio_hw.c +21 −0 Original line number Diff line number Diff line Loading @@ -4183,6 +4183,13 @@ static int out_standby(struct audio_stream *stream) if (out->usecase == USECASE_AUDIO_PLAYBACK_MMAP) { do_stop = out->playback_started; out->playback_started = false; if (out->mmap_shared_memory_fd >= 0) { ALOGV("%s: closing mmap_shared_memory_fd = %d", __func__, out->mmap_shared_memory_fd); close(out->mmap_shared_memory_fd); out->mmap_shared_memory_fd = -1; } } } else { ALOGD("copl(%p):standby", out); Loading Loading @@ -6110,6 +6117,9 @@ static int out_create_mmap_buffer(const struct audio_stream_out *stream, // Fall back to non exclusive mode info->shared_memory_fd = pcm_get_poll_fd(out->pcm); } else { out->mmap_shared_memory_fd = info->shared_memory_fd; // for closing later ALOGV("%s: opened mmap_shared_memory_fd = %d", __func__, out->mmap_shared_memory_fd); if (mmap_size < buffer_size) { step = "mmap"; goto exit; Loading Loading @@ -6256,6 +6266,12 @@ static int in_standby(struct audio_stream *stream) } else if (in->usecase == USECASE_AUDIO_RECORD_MMAP) { do_stop = in->capture_started; in->capture_started = false; if (in->mmap_shared_memory_fd >= 0) { ALOGV("%s: closing mmap_shared_memory_fd = %d", __func__, in->mmap_shared_memory_fd); close(in->mmap_shared_memory_fd); in->mmap_shared_memory_fd = -1; } } else { if (audio_extn_cin_attached_usecase(in->usecase)) audio_extn_cin_close_input_stream(in); Loading Loading @@ -6984,6 +7000,9 @@ static int in_create_mmap_buffer(const struct audio_stream_in *stream, // Fall back to non exclusive mode info->shared_memory_fd = pcm_get_poll_fd(in->pcm); } else { in->mmap_shared_memory_fd = info->shared_memory_fd; // for closing later ALOGV("%s: opened mmap_shared_memory_fd = %d", __func__, in->mmap_shared_memory_fd); if (mmap_size < buffer_size) { step = "mmap"; goto exit; Loading Loading @@ -7208,6 +7227,7 @@ int adev_open_output_stream(struct audio_hw_device *dev, out->set_dual_mono = false; out->prev_card_status_offline = false; out->pspd_coeff_sent = false; out->mmap_shared_memory_fd = -1; // not open if ((flags & AUDIO_OUTPUT_FLAG_BD) && (property_get_bool("vendor.audio.matrix.limiter.enable", false))) Loading Loading @@ -8725,6 +8745,7 @@ static int adev_open_input_stream(struct audio_hw_device *dev, in->zoom = 0; list_init(&in->aec_list); list_init(&in->ns_list); in->mmap_shared_memory_fd = -1; // not open ALOGV("%s: source %d, config->channel_mask %#x", __func__, source, config->channel_mask); if (source == AUDIO_SOURCE_VOICE_UPLINK || Loading hal/audio_hw.h +2 −0 Original line number Diff line number Diff line Loading @@ -368,6 +368,7 @@ struct stream_out { bool muted; uint64_t written; /* total frames written, not cleared when entering standby */ int64_t mmap_time_offset_nanos; /* fudge factor to correct inaccuracies in DSP */ int mmap_shared_memory_fd; /* file descriptor associated with MMAP NOIRQ shared memory */ audio_io_handle_t handle; struct stream_app_type_cfg app_type_cfg; Loading Loading @@ -456,6 +457,7 @@ struct stream_in { struct listnode aec_list; struct listnode ns_list; int64_t mmap_time_offset_nanos; /* fudge factor to correct inaccuracies in DSP */ int mmap_shared_memory_fd; /* file descriptor associated with MMAP NOIRQ shared memory */ audio_io_handle_t capture_handle; audio_input_flags_t flags; char profile[MAX_STREAM_PROFILE_STR_LEN]; Loading Loading
hal/audio_hw.c +21 −0 Original line number Diff line number Diff line Loading @@ -4183,6 +4183,13 @@ static int out_standby(struct audio_stream *stream) if (out->usecase == USECASE_AUDIO_PLAYBACK_MMAP) { do_stop = out->playback_started; out->playback_started = false; if (out->mmap_shared_memory_fd >= 0) { ALOGV("%s: closing mmap_shared_memory_fd = %d", __func__, out->mmap_shared_memory_fd); close(out->mmap_shared_memory_fd); out->mmap_shared_memory_fd = -1; } } } else { ALOGD("copl(%p):standby", out); Loading Loading @@ -6110,6 +6117,9 @@ static int out_create_mmap_buffer(const struct audio_stream_out *stream, // Fall back to non exclusive mode info->shared_memory_fd = pcm_get_poll_fd(out->pcm); } else { out->mmap_shared_memory_fd = info->shared_memory_fd; // for closing later ALOGV("%s: opened mmap_shared_memory_fd = %d", __func__, out->mmap_shared_memory_fd); if (mmap_size < buffer_size) { step = "mmap"; goto exit; Loading Loading @@ -6256,6 +6266,12 @@ static int in_standby(struct audio_stream *stream) } else if (in->usecase == USECASE_AUDIO_RECORD_MMAP) { do_stop = in->capture_started; in->capture_started = false; if (in->mmap_shared_memory_fd >= 0) { ALOGV("%s: closing mmap_shared_memory_fd = %d", __func__, in->mmap_shared_memory_fd); close(in->mmap_shared_memory_fd); in->mmap_shared_memory_fd = -1; } } else { if (audio_extn_cin_attached_usecase(in->usecase)) audio_extn_cin_close_input_stream(in); Loading Loading @@ -6984,6 +7000,9 @@ static int in_create_mmap_buffer(const struct audio_stream_in *stream, // Fall back to non exclusive mode info->shared_memory_fd = pcm_get_poll_fd(in->pcm); } else { in->mmap_shared_memory_fd = info->shared_memory_fd; // for closing later ALOGV("%s: opened mmap_shared_memory_fd = %d", __func__, in->mmap_shared_memory_fd); if (mmap_size < buffer_size) { step = "mmap"; goto exit; Loading Loading @@ -7208,6 +7227,7 @@ int adev_open_output_stream(struct audio_hw_device *dev, out->set_dual_mono = false; out->prev_card_status_offline = false; out->pspd_coeff_sent = false; out->mmap_shared_memory_fd = -1; // not open if ((flags & AUDIO_OUTPUT_FLAG_BD) && (property_get_bool("vendor.audio.matrix.limiter.enable", false))) Loading Loading @@ -8725,6 +8745,7 @@ static int adev_open_input_stream(struct audio_hw_device *dev, in->zoom = 0; list_init(&in->aec_list); list_init(&in->ns_list); in->mmap_shared_memory_fd = -1; // not open ALOGV("%s: source %d, config->channel_mask %#x", __func__, source, config->channel_mask); if (source == AUDIO_SOURCE_VOICE_UPLINK || Loading
hal/audio_hw.h +2 −0 Original line number Diff line number Diff line Loading @@ -368,6 +368,7 @@ struct stream_out { bool muted; uint64_t written; /* total frames written, not cleared when entering standby */ int64_t mmap_time_offset_nanos; /* fudge factor to correct inaccuracies in DSP */ int mmap_shared_memory_fd; /* file descriptor associated with MMAP NOIRQ shared memory */ audio_io_handle_t handle; struct stream_app_type_cfg app_type_cfg; Loading Loading @@ -456,6 +457,7 @@ struct stream_in { struct listnode aec_list; struct listnode ns_list; int64_t mmap_time_offset_nanos; /* fudge factor to correct inaccuracies in DSP */ int mmap_shared_memory_fd; /* file descriptor associated with MMAP NOIRQ shared memory */ audio_io_handle_t capture_handle; audio_input_flags_t flags; char profile[MAX_STREAM_PROFILE_STR_LEN]; Loading