From 85d85817ce2f242f148b80143f906d2202b89718 Mon Sep 17 00:00:00 2001 From: Jaechul Lee Date: Mon, 15 Jan 2024 14:26:35 +0900 Subject: [PATCH] Add delay_avail, mmap_begin, mmap_commit interfaces [Version] 0.0.18 [Issue Type] Update Change-Id: Ie15e585ffc548059f9995f64a6dd726c4fe6671f Signed-off-by: Jaechul Lee --- include/hal-audio-interface.h | 5 ++++ include/hal-audio.h | 46 +++++++++++++++++++++++++++++++++++ packaging/hal-api-audio.spec | 2 +- src/hal-api-audio.c | 24 ++++++++++++++++++ 4 files changed, 76 insertions(+), 1 deletion(-) diff --git a/include/hal-audio-interface.h b/include/hal-audio-interface.h index fab8438..6c64f52 100644 --- a/include/hal-audio-interface.h +++ b/include/hal-audio-interface.h @@ -162,6 +162,11 @@ typedef struct _hal_backend_media_audio_funcs { audio_return_e (*pcm_recover)(void *audio_handle, void *pcm_handle, int revents); audio_return_e (*pcm_get_params)(void *audio_handle, void *pcm_handle, uint32_t direction, void *sample_spec, uint32_t *period_size, uint32_t *periods); audio_return_e (*pcm_set_params)(void *audio_handle, void *pcm_handle, uint32_t direction, void *sample_spec, uint32_t period_size, uint32_t periods); + + audio_return_e (*pcm_avail_delay)(void *audio_handle, void *pcm_handle, int32_t *avail, int32_t *delay); + audio_return_e (*pcm_mmap_begin)(void *audio_handle, void *pcm_handle, void **areas, uint32_t *offset, uint32_t *frames, void **ptr); + audio_return_e (*pcm_mmap_commit)(void *audio_handle, void *pcm_handle, uint32_t offset, uint32_t frames); + /* Message callback */ audio_return_e (*add_message_cb)(void *audio_handle, message_cb callback, void *user_data); audio_return_e (*remove_message_cb)(void *audio_handle, message_cb callback); diff --git a/include/hal-audio.h b/include/hal-audio.h index d735950..d235567 100644 --- a/include/hal-audio.h +++ b/include/hal-audio.h @@ -390,6 +390,52 @@ audio_return_e hal_audio_pcm_get_params(void *audio_handle, void *pcm_handle, ui */ audio_return_e hal_audio_pcm_set_params(void *audio_handle, void *pcm_handle, uint32_t direction, void *sample_spec, uint32_t period_size, uint32_t periods); +/** + * @brief Gets available and delay frames of a PCM device. + * @since_tizen 9.0 + * @param[in] audio_handle The audio hal handle + * @param[in] pcm_handle The PCM handle + * @param[out] avail avail frames + * @param[out] delay delay frames + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #AUDIO_RET_OK Success + */ +audio_return_e hal_audio_pcm_avail_delay(void *audio_handle, void *pcm_handle, int32_t *avail, int32_t *delay); + +/** + * @brief Gets mmap address of a PCM device. + * @since_tizen 9.0 + * @param[in] audio_handle The audio hal handle + * @param[in] pcm_handle The PCM handle + * @param[in] areas mmap address information + * @param[in] offset The offset of memory mapped address + * @param[in] frames The size of memory mapped address + * @param[out] ptr writable/readable address + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #AUDIO_RET_OK Success + * @see audio_pcm_mmap_commit() + */ +audio_return_e hal_audio_pcm_mmap_begin(void *audio_handle, void *pcm_handle, void **areas, uint32_t *offset, uint32_t *frames, void **ptr); + +/** + * @brief Commits mmap address of a PCM device. + * @since_tizen 9.0 + * @param[in] audio_handle The audio hal handle + * @param[in] pcm_handle The PCM handle + * @param[in] offset The offset of memory mapped address + * @param[in] frames The size of memory mapped address + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #AUDIO_RET_OK Success + * @see audio_pcm_mmap_begin() + */ +audio_return_e hal_audio_pcm_mmap_commit(void *audio_handle, void *pcm_handle, uint32_t offset, uint32_t frames); + /** * @brief Adds the message callback function. * @since_tizen 6.5 diff --git a/packaging/hal-api-audio.spec b/packaging/hal-api-audio.spec index 78465f9..c456d2b 100644 --- a/packaging/hal-api-audio.spec +++ b/packaging/hal-api-audio.spec @@ -1,6 +1,6 @@ Name: hal-api-audio Summary: TIZEN Audio HAL -Version: 0.0.17 +Version: 0.0.18 Release: 0 Group: System/Libraries License: Apache-2.0 diff --git a/src/hal-api-audio.c b/src/hal-api-audio.c index 14cb37c..f596d20 100644 --- a/src/hal-api-audio.c +++ b/src/hal-api-audio.c @@ -236,6 +236,30 @@ audio_return_e hal_audio_pcm_set_params(void *audio_handle, void *pcm_handle, ui return g_hal_audio_funcs->pcm_set_params(audio_handle, pcm_handle, direction, sample_spec, period_size, periods); } +audio_return_e hal_pcm_avail_delay(void *audio_handle, void *pcm_handle, int32_t *avail, int32_t *delay) +{ + AUDIO_RETURN_VAL_IF_FAIL(g_hal_audio_funcs, AUDIO_ERR_INTERNAL); + AUDIO_RETURN_VAL_IF_FAIL(g_hal_audio_funcs->pcm_avail_delay, AUDIO_ERR_NOT_IMPLEMENTED); + + return g_hal_audio_funcs->pcm_avail_delay(audio_handle, pcm_handle, avail, delay); +} + +audio_return_e hal_audio_pcm_mmap_begin(void *audio_handle, void *pcm_handle, void **areas, uint32_t *offset, uint32_t *frames, void **ptr) +{ + AUDIO_RETURN_VAL_IF_FAIL(g_hal_audio_funcs, AUDIO_ERR_INTERNAL); + AUDIO_RETURN_VAL_IF_FAIL(g_hal_audio_funcs->pcm_mmap_begin, AUDIO_ERR_NOT_IMPLEMENTED); + + return g_hal_audio_funcs->pcm_mmap_begin(audio_handle, pcm_handle, areas, offset, frames, ptr); +} + +audio_return_e hal_audio_pcm_mmap_commit(void *audio_handle, void *pcm_handle, uint32_t offset, uint32_t frames) +{ + AUDIO_RETURN_VAL_IF_FAIL(g_hal_audio_funcs, AUDIO_ERR_INTERNAL); + AUDIO_RETURN_VAL_IF_FAIL(g_hal_audio_funcs->pcm_mmap_commit, AUDIO_ERR_NOT_IMPLEMENTED); + + return g_hal_audio_funcs->pcm_mmap_commit(audio_handle, pcm_handle, offset, frames); +} + audio_return_e hal_audio_add_message_cb(void *audio_handle, message_cb callback, void *user_data) { AUDIO_RETURN_VAL_IF_FAIL(g_hal_audio_funcs, AUDIO_ERR_INTERNAL); -- 2.34.1