/**
* @internal
+ * @brief Enumeration for sound filters.
+ * @since_tizen 4.0
+ */
+typedef enum {
+ SOUND_FILTER_NONE = 0,
+ SOUND_FILTER_SOUNDALIVE,
+} sound_filter_e;
+
+/**
+ * @internal
+ * @brief Enumeration for filter preset.
+ * @since_tizen 4.0
+ */
+typedef enum {
+ SOUND_FILTER_PRESET_SOUNDALIVE_NORMAL = 0, /**< Filter preset for SOUND_FILTER_SOUNDALIVE */
+ SOUND_FILTER_PRESET_SOUNDALIVE_TUBE, /**< Filter preset for SOUND_FILTER_SOUNDALIVE */
+ SOUND_FILTER_PRESET_SOUNDALIVE_VIRT71, /**< Filter preset for SOUND_FILTER_SOUNDALIVE */
+ SOUND_FILTER_PRESET_SOUNDALIVE_STUDIO, /**< Filter preset for SOUND_FILTER_SOUNDALIVE */
+ SOUND_FILTER_PRESET_SOUNDALIVE_CLUB, /**< Filter preset for SOUND_FILTER_SOUNDALIVE */
+ SOUND_FILTER_PRESET_SOUNDALIVE_CONCERT_HALL, /**< Filter preset for SOUND_FILTER_SOUNDALIVE */
+} sound_filter_preset_e;
+
+/**
+ * @internal
* @brief Gets the maximum master volume level.
* @since_tizen 3.0
* @param[out] max_level The maximum volume level
int sound_manager_stop_virtual_stream(virtual_sound_stream_h virtual_stream);
/**
+ * @internal
+ * @brief Set sound filter and apply to audio streams given selected stream type.
+ * @since_tizen 4.0
+ * @param[in] stream_type stream type to apply
+ * @param[in] filter sound filter to apply
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #SOUND_MANAGER_ERROR_NONE Success
+ * @retval #SOUND_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SOUND_MANAGER_ERROR_INTERNAL Internal error inside the sound system
+ * @retval #SOUND_MANAGER_ERROR_NOT_SUPPORTED Not supported
+ * @see sound_manager_unset_filter()
+ */
+int sound_manager_set_filter(sound_stream_type_e stream_type, sound_filter_e filter);
+
+/**
+ * @internal
+ * @brief Unset sound filter and remove from audio streams given selected stream type.
+ * @since_tizen 4.0
+ * @param[in] stream_type stream type to remove
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #SOUND_MANAGER_ERROR_NONE Success
+ * @retval #SOUND_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SOUND_MANAGER_ERROR_INTERNAL Internal error inside the sound system
+ * @retval #SOUND_MANAGER_ERROR_NOT_SUPPORTED Not supported
+ * @see sound_manager_set_filter()
+ */
+int sound_manager_unset_filter(sound_stream_type_e stream_type);
+
+/**
+ * @internal
+ * @brief Apply preset configuration to the filter according to selected stream type.
+ * @since_tizen 4.0
+ * @param[in] stream_type given stream type
+ * @param[in] filter given sound filter
+ * @param[in] preset filter preset to apply
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #SOUND_MANAGER_ERROR_NONE Success
+ * @retval #SOUND_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SOUND_MANAGER_ERROR_INTERNAL Internal error inside the sound system
+ * @retval #SOUND_MANAGER_ERROR_NOT_SUPPORTED Not supported
+ * @see sound_manager_set_filter()
+ */
+int sound_manager_set_filter_preset(sound_stream_type_e stream_type, sound_filter_e filter, sound_filter_preset_e preset);
+
+/**
* @}
*/
/**
* @internal
+ * @brief Enumeration for sound filters.
+ * @since_tizen 4.0
+ */
+typedef enum {
+ SOUND_FILTER_NONE = 0,
+ SOUND_FILTER_SOUNDALIVE,
+} sound_filter_e;
+
+/**
+ * @internal
+ * @brief Enumeration for filter preset.
+ * @since_tizen 4.0
+ */
+typedef enum {
+ SOUND_FILTER_PRESET_SOUNDALIVE_NORMAL = 0, /**< Filter preset for SOUND_FILTER_SOUNDALIVE */
+ SOUND_FILTER_PRESET_SOUNDALIVE_TUBE, /**< Filter preset for SOUND_FILTER_SOUNDALIVE */
+ SOUND_FILTER_PRESET_SOUNDALIVE_VIRT71, /**< Filter preset for SOUND_FILTER_SOUNDALIVE */
+ SOUND_FILTER_PRESET_SOUNDALIVE_STUDIO, /**< Filter preset for SOUND_FILTER_SOUNDALIVE */
+ SOUND_FILTER_PRESET_SOUNDALIVE_CLUB, /**< Filter preset for SOUND_FILTER_SOUNDALIVE */
+ SOUND_FILTER_PRESET_SOUNDALIVE_CONCERT_HALL, /**< Filter preset for SOUND_FILTER_SOUNDALIVE */
+} sound_filter_preset_e;
+
+/**
+ * @internal
* @brief Creates a handle for stream information.
* @since_tizen 3.0
*
int sound_manager_stop_virtual_stream(virtual_sound_stream_h virtual_stream);
/**
+ * @internal
+ * @brief Set sound filter and apply to audio streams given selected stream type.
+ * @since_tizen 4.0
+ * @param[in] stream_type stream type to apply
+ * @param[in] filter sound filter to apply
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #SOUND_MANAGER_ERROR_NONE Success
+ * @retval #SOUND_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SOUND_MANAGER_ERROR_INTERNAL Internal error inside the sound system
+ * @retval #SOUND_MANAGER_ERROR_NOT_SUPPORTED Not supported
+ * @see sound_manager_unset_filter()
+ */
+int sound_manager_set_filter(sound_stream_type_e stream_type, sound_filter_e filter);
+
+/**
+ * @internal
+ * @brief Unset sound filter and remove from audio streams given selected stream type.
+ * @since_tizen 4.0
+ * @param[in] stream_type stream type to remove
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #SOUND_MANAGER_ERROR_NONE Success
+ * @retval #SOUND_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SOUND_MANAGER_ERROR_INTERNAL Internal error inside the sound system
+ * @retval #SOUND_MANAGER_ERROR_NOT_SUPPORTED Not supported
+ * @see sound_manager_set_filter()
+ */
+int sound_manager_unset_filter(sound_stream_type_e stream_type);
+
+/**
+ * @internal
+ * @brief Apply preset configuration to the filter according to selected stream type.
+ * @since_tizen 4.0
+ * @param[in] stream_type given stream type
+ * @param[in] filter given sound filter
+ * @param[in] preset filter preset to apply
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #SOUND_MANAGER_ERROR_NONE Success
+ * @retval #SOUND_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SOUND_MANAGER_ERROR_INTERNAL Internal error inside the sound system
+ * @retval #SOUND_MANAGER_ERROR_NOT_SUPPORTED Not supported
+ * @see sound_manager_set_filter()
+ */
+int sound_manager_set_filter_preset(sound_stream_type_e stream_type, sound_filter_e filter, sound_filter_preset_e preset);
+
+/**
* @}
*/
Name: capi-media-sound-manager
Summary: Sound Manager library
-Version: 0.3.107
+Version: 0.3.108
Release: 0
Group: Multimedia/API
License: Apache-2.0
return _convert_sound_manager_error_code(__func__, ret);
}
+
+static int _convert_filter(sound_filter_e filter, char **filter_str, char **filter_params_str)
+{
+ int ret = MM_ERROR_NONE;
+
+ if (filter_str == NULL)
+ return MM_ERROR_INVALID_ARGUMENT;
+
+ switch (filter) {
+ case SOUND_FILTER_SOUNDALIVE:
+ *filter_str = "ladspa-sink";
+ *filter_params_str = "plugin=audiofilters-sec-ladspa label=audiofiltersec_stereo control=1,0";
+ break;
+ default:
+ LOGE("could not find filter[%d]", filter);
+ ret = MM_ERROR_SOUND_INTERNAL;
+ break;
+ }
+ LOGI("filter[%s]", *filter_str);
+
+ return ret;
+}
+
+static int _convert_filter_preset(sound_filter_preset_e preset, char **control)
+{
+ int ret = MM_ERROR_NONE;
+
+ if (control == NULL)
+ return MM_ERROR_INVALID_ARGUMENT;
+
+ switch (preset) {
+ case SOUND_FILTER_PRESET_SOUNDALIVE_NORMAL:
+ *control = "1,0";
+ break;
+ case SOUND_FILTER_PRESET_SOUNDALIVE_TUBE:
+ *control = "1,1";
+ break;
+ case SOUND_FILTER_PRESET_SOUNDALIVE_VIRT71:
+ *control = "1,2";
+ break;
+ case SOUND_FILTER_PRESET_SOUNDALIVE_STUDIO:
+ *control = "1,3";
+ break;
+ case SOUND_FILTER_PRESET_SOUNDALIVE_CLUB:
+ *control = "1,4";
+ break;
+ case SOUND_FILTER_PRESET_SOUNDALIVE_CONCERT_HALL:
+ *control = "1,5";
+ break;
+ default:
+ LOGE("could not find the preset[%d]", preset);
+ ret = MM_ERROR_SOUND_INTERNAL;
+ break;
+ }
+ LOGI("preset[%s]", *control);
+
+ return ret;
+}
+
+int sound_manager_set_filter(sound_stream_type_e stream_type, sound_filter_e filter)
+{
+ int ret = MM_ERROR_NONE;
+ char *stream_type_str = NULL;
+ char *filter_str = NULL, *filter_params_str = NULL;
+
+ LOGI(">> enter");
+
+ if ((ret = _convert_stream_type(stream_type, &stream_type_str)) != MM_ERROR_NONE)
+ goto finish;
+ if ((ret = _convert_filter(filter, &filter_str, &filter_params_str)) != MM_ERROR_NONE)
+ goto finish;
+
+ switch (filter) {
+ case SOUND_FILTER_NONE:
+ ret = SOUND_MANAGER_ERROR_NOT_SUPPORTED;
+ LOGI("no filter apply");
+ break;
+ case SOUND_FILTER_SOUNDALIVE:
+ if ((ret = _convert_filter(filter, &filter_str, &filter_params_str)) != MM_ERROR_NONE)
+ break;
+ ret = mm_sound_set_filter(stream_type_str, filter_str, filter_params_str, stream_type_str);
+ LOGI("apply SoundAlive filter");
+ break;
+ default:
+ ret = SOUND_MANAGER_ERROR_INVALID_PARAMETER;
+ LOGE("invaid sound filter");
+ break;
+ }
+
+finish:
+ return _convert_sound_manager_error_code(__func__, ret);
+}
+
+int sound_manager_unset_filter(sound_stream_type_e stream_type)
+{
+ int ret = MM_ERROR_NONE;
+ char *stream_type_str = NULL;
+
+ LOGI(">> enter");
+
+ if ((ret = _convert_stream_type(stream_type, &stream_type_str)) != MM_ERROR_NONE)
+ goto finish;
+
+ ret = mm_sound_unset_filter(stream_type_str);
+ LOGI("stream_type[%s]", stream_type_str);
+
+finish:
+ return _convert_sound_manager_error_code(__func__, ret);
+}
+
+int sound_manager_set_filter_preset(sound_stream_type_e stream_type, sound_filter_e filter, sound_filter_preset_e preset)
+{
+ int ret = MM_ERROR_NONE;
+ char *stream_type_str = NULL;
+ char *filter_str = NULL, *filter_params_str = NULL;
+ char *control_str = NULL;
+
+ LOGI(">> enter");
+
+ if ((ret = _convert_stream_type(stream_type, &stream_type_str)) != MM_ERROR_NONE)
+ goto finish;
+ if ((ret = _convert_filter(filter, &filter_str, &filter_params_str)) != MM_ERROR_NONE)
+ goto finish;
+ if ((ret = _convert_filter_preset(preset, &control_str)) != MM_ERROR_NONE)
+ goto finish;
+
+ switch (filter) {
+ case SOUND_FILTER_NONE:
+ ret = SOUND_MANAGER_ERROR_NOT_SUPPORTED;
+ LOGI("no filter preset");
+ break;
+ case SOUND_FILTER_SOUNDALIVE:
+ ret = mm_sound_control_filter(stream_type_str, filter_str, control_str);
+ LOGI("apply SoundAlive filter");
+ break;
+ default:
+ ret = SOUND_MANAGER_ERROR_INVALID_PARAMETER;
+ LOGE("invaid sound filter");
+ break;
+ }
+
+finish:
+ return _convert_sound_manager_error_code(__func__, ret);
+}