Add interface pcm_get_state 70/308770/9
authorJaechul Lee <jcsing.lee@samsung.com>
Mon, 1 Apr 2024 02:20:31 +0000 (11:20 +0900)
committerJaechul Lee <jcsing.lee@samsung.com>
Tue, 16 Jul 2024 07:50:05 +0000 (16:50 +0900)
* 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 <jcsing.lee@samsung.com>
include/hal-audio-interface.h
include/hal-audio.h
packaging/hal-api-audio.spec
src/hal-api-audio.c

index 6c64f52a9cb369bee19a0285798f3b9d407dfdd3..34de538e6236a2f2ef283bebd2162a99d72a5306 100644 (file)
@@ -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);
index d23556707ff27d083ff22f0aced9d146d9352de4..f09a6063eff78f753a0cc3bdb9db76a8f5dd03ac 100644 (file)
@@ -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
index c456d2bf24cec27fa5254abd35dc441d803c9586..66c6ac77cf341ce778e7e783312418e4c2a2c9cf 100644 (file)
@@ -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
index f596d207ad6ca28b3fcd20ef69e9f5eceeb4d99b..d8d00fa69ac8acabf30d292b61a5695c126cafc4 100644 (file)
@@ -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);