From: Jaechul Lee Date: Mon, 1 Apr 2024 02:20:31 +0000 (+0900) Subject: Add interface pcm_get_state X-Git-Tag: accepted/tizen/unified/20240727.112733~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=08f4e7a4a2676acfe93aa2534df9962fc81d9f4f;p=platform%2Fhal%2Fapi%2Faudio.git Add interface pcm_get_state * Added pcm_get_state interface to get a state from PCM handles * Fixed typo [Version] 0.0.19 [Issue Type] Update Change-Id: I0e2bdad2e33c40ee87a4b28b44b72a41ae1513c8 Signed-off-by: Jaechul Lee --- diff --git a/include/hal-audio-interface.h b/include/hal-audio-interface.h index 6c64f52..34de538 100644 --- a/include/hal-audio-interface.h +++ b/include/hal-audio-interface.h @@ -60,6 +60,23 @@ typedef enum audio_direction { AUDIO_DIRECTION_OUT, /**< Playback */ } audio_direction_e; +/** + * @brief Enumeration for audio state. + * @since_tizen 9.0 + */ +typedef enum audio_state { + AUDIO_STATE_OPEN, + AUDIO_STATE_SETUP, + AUDIO_STATE_PREPARED, + AUDIO_STATE_RUNNING, + AUDIO_STATE_XRUN, /* playback:underrun, capture:overrun */ + AUDIO_STATE_DRAINING, + AUDIO_STATE_PAUSED, + AUDIO_STATE_SUSPENDED, + AUDIO_STATE_DISCONNECTED, + AUDIO_STATE_UNKNOWN, +} audio_state_e; + /** * @brief Device information including type, direction and id. * @since_tizen 6.5 @@ -166,6 +183,7 @@ typedef struct _hal_backend_media_audio_funcs { 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); + audio_return_e (*pcm_get_state)(void *audio_handle, void *pcm_handle, audio_state_e *state); /* Message callback */ audio_return_e (*add_message_cb)(void *audio_handle, message_cb callback, void *user_data); diff --git a/include/hal-audio.h b/include/hal-audio.h index d235567..f09a606 100644 --- a/include/hal-audio.h +++ b/include/hal-audio.h @@ -436,6 +436,19 @@ audio_return_e hal_audio_pcm_mmap_begin(void *audio_handle, void *pcm_handle, vo */ audio_return_e hal_audio_pcm_mmap_commit(void *audio_handle, void *pcm_handle, uint32_t offset, uint32_t frames); +/** + * @brief Gets the state 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] state The state from a pcm handle + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #AUDIO_RET_OK Success + */ +audio_return_e hal_audio_pcm_get_state(void *audio_handle, void *pcm_handle, audio_state_e *state); + /** * @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 c456d2b..66c6ac7 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.18 +Version: 0.0.19 Release: 0 Group: System/Libraries License: Apache-2.0 diff --git a/src/hal-api-audio.c b/src/hal-api-audio.c index f596d20..d8d00fa 100644 --- a/src/hal-api-audio.c +++ b/src/hal-api-audio.c @@ -236,7 +236,7 @@ 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_e hal_audio_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); @@ -260,6 +260,14 @@ audio_return_e hal_audio_pcm_mmap_commit(void *audio_handle, void *pcm_handle, return g_hal_audio_funcs->pcm_mmap_commit(audio_handle, pcm_handle, offset, frames); } +audio_return_e hal_audio_pcm_get_state(void *audio_handle, void *pcm_handle, audio_state_e *state) +{ + AUDIO_RETURN_VAL_IF_FAIL(g_hal_audio_funcs, AUDIO_ERR_INTERNAL); + AUDIO_RETURN_VAL_IF_FAIL(g_hal_audio_funcs->pcm_get_state, AUDIO_ERR_NOT_IMPLEMENTED); + + return g_hal_audio_funcs->pcm_get_state(audio_handle, pcm_handle, state); +} + 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);