bool is_connected;
} hal_stream_connection_info;
+typedef struct _hal_ducking_activation_info {
+ const char *target_role;
+ uint32_t duration;
+ double ratio;
+ bool is_activated;
+} hal_ducking_activation_info;
+
typedef void* pcm_handle;
typedef void (*hal_message_callback)(const char *name, int value, void *user_data);
typedef struct _audio_hal_interface audio_hal_interface;
const char *role;
uint32_t direction;
uint32_t idx;
-} audio_stream_info_t ;
+} audio_stream_info_t;
+
+/**
+ * @brief Ducking information including target role, duration and ratio.
+ * @since_tizen 5.5
+ */
+typedef struct audio_ducking_info {
+ const char *target_role;
+ uint32_t duration;
+ double ratio;
+} audio_ducking_info_t;
/**
* @brief Called when audio hal implementation needs to send a message. (optional)
audio_return_t (*get_volume_mute)(void *audio_handle, audio_volume_info_t *info, uint32_t *mute);
audio_return_t (*set_volume_mute)(void *audio_handle, audio_volume_info_t *info, uint32_t mute);
audio_return_t (*set_volume_ratio)(void *audio_handle, audio_stream_info_t *info, double ratio); /* optional */
+ audio_return_t (*notify_ducking_activation_changed)(void *audio_handle, audio_ducking_info_t *info, uint32_t is_activated);
/* Routing */
audio_return_t (*update_route)(void *audio_handle, audio_route_info_t *info);
audio_return_t (*update_route_option)(void *audio_handle, audio_route_option_t *option);
audio_return_t audio_set_volume_mute(void *audio_handle, audio_volume_info_t *info, uint32_t mute);
/**
+ * @brief Gets notified when a ducking is activated and deactivated.
+ * @since_tizen 5.5
+ * @param[in] audio_handle The audio hal handle
+ * @param[in] info The ducking information including target role, duration and ratio
+ * @param[in] is_activated The activation state (@c true = activated, @c false = deactivated)
+ *
+ * @remarks This information can be used for volume controls.
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #AUDIO_RET_OK Success
+ */
+audio_return_t audio_notify_ducking_activation_changed(void *audio_handle, audio_ducking_info_t *info, uint32_t is_activated);
+
+/**
* @brief Updates the audio routing according to audio route information.
* @since_tizen 3.0
* @param[in] audio_handle The audio hal handle
Name: mm-hal-interface
Summary: Multimedia HAL Interface
-Version: 0.0.23
+Version: 0.0.24
Release: 0
Group: Multimedia/Development
License: Apache-2.0
tmp_h->intf.get_volume_mute = dlsym(tmp_h->dl_handle, "audio_get_volume_mute");
tmp_h->intf.set_volume_mute = dlsym(tmp_h->dl_handle, "audio_set_volume_mute");
tmp_h->intf.set_volume_ratio = dlsym(tmp_h->dl_handle, "audio_set_volume_ratio");
+ tmp_h->intf.notify_ducking_activation_changed = dlsym(tmp_h->dl_handle, "audio_notify_ducking_activation_changed");
tmp_h->intf.update_route = dlsym(tmp_h->dl_handle, "audio_update_route");
tmp_h->intf.update_route_option = dlsym(tmp_h->dl_handle, "audio_update_route_option");
tmp_h->intf.notify_stream_connection_changed = dlsym(tmp_h->dl_handle, "audio_notify_stream_connection_changed");
return AUDIO_HAL_SUCCESS;
}
+int32_t audio_hal_interface_notify_ducking_activation_changed(audio_hal_interface *h,
+ hal_ducking_activation_info *info)
+{
+ audio_return_t ret = AUDIO_RET_OK;
+ audio_ducking_info_t hal_info;
+ uint32_t is_activated = 0;
+
+ assert(h);
+ assert(h->ah_handle);
+
+ if (!info) {
+ LOGE("NULL ducking activation info");
+ return AUDIO_HAL_ERROR;
+ }
+
+ memset(&hal_info, 0, sizeof(audio_ducking_info_t));
+
+ hal_info.target_role = info->target_role;
+ hal_info.duration = info->duration;
+ hal_info.ratio = info->ratio;
+ is_activated = info->is_activated;
+
+ if (!h->intf.notify_ducking_activation_changed) {
+ LOGE("Not implemented....");
+ return AUDIO_HAL_ERROR;
+ }
+
+ ret = h->intf.notify_ducking_activation_changed(h->ah_handle, &hal_info, is_activated);
+ if (ret != AUDIO_RET_OK) {
+ LOGE("notify_ducking_activation_changed returns error:0x%x", ret);
+ return AUDIO_HAL_ERROR;
+ }
+
+ return AUDIO_HAL_SUCCESS;
+}
+
int32_t audio_hal_interface_update_route(audio_hal_interface *h,
hal_route_info *info)
{