diff options
Diffstat (limited to 'include/mv_common.h')
-rw-r--r-- | include/mv_common.h | 680 |
1 files changed, 680 insertions, 0 deletions
diff --git a/include/mv_common.h b/include/mv_common.h new file mode 100644 index 0000000..98eedde --- /dev/null +++ b/include/mv_common.h @@ -0,0 +1,680 @@ +/** + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __TIZEN_MEDIAVISION_COMMON_H__ +#define __TIZEN_MEDIAVISION_COMMON_H__ + +#include <media_packet.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @file mv_common.h + * @brief This file contains the Media Vision Common API. + */ + +/** + * @addtogroup CAPI_MEDIA_VISION_COMMON_MODULE + * @{ + */ + +/** + * @brief Point in 2D space. + * + * @since_tizen 2.4 + */ +typedef struct { + int x; /**< X-axis coordinate of the point in 2D space */ + int y; /**< Y-axis coordinate of the point in 2D space */ +} mv_point_s; + +/** + * @brief Location of the object bounded by quadrangle defined by four 2D points. + * + * @since_tizen 2.4 + */ +typedef struct { + mv_point_s points[4]; /**< Four points that define object bounding + quadrangle */ +} mv_quadrangle_s; + +/** + * @brief Location of the object bounded by rectangle defined by + * coordinates of top left corner, width and height. + * + * @since_tizen 2.4 + */ +typedef struct { + mv_point_s point; /**< Top left corner of rectangle coordinates */ + int width; /**< Width of the bounding rectangle */ + int height; /**< Height of the bounding rectangle */ +} mv_rectangle_s; + +/** + * @brief Enumeration for Media Vision error. + * + * @since_tizen 2.4 + */ +typedef enum { + MEDIA_VISION_ERROR_NONE + = TIZEN_ERROR_NONE, /**< Successful */ + MEDIA_VISION_ERROR_NOT_SUPPORTED + = TIZEN_ERROR_NOT_SUPPORTED, /**< Not supported */ + MEDIA_VISION_ERROR_MSG_TOO_LONG + = TIZEN_ERROR_MSG_TOO_LONG, /**< Msg too long */ + MEDIA_VISION_ERROR_NO_DATA + = TIZEN_ERROR_NO_DATA, /**< No data */ + MEDIA_VISION_ERROR_KEY_NOT_AVAILABLE + = TIZEN_ERROR_KEY_NOT_AVAILABLE, /**< Key not available */ + MEDIA_VISION_ERROR_OUT_OF_MEMORY + = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */ + MEDIA_VISION_ERROR_INVALID_PARAMETER + = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */ + MEDIA_VISION_ERROR_INVALID_OPERATION + = TIZEN_ERROR_INVALID_OPERATION, /**< Invalid operation */ + MEDIA_VISION_ERROR_PERMISSION_DENIED + = TIZEN_ERROR_NOT_PERMITTED, /**< Not permitted */ + MEDIA_VISION_ERROR_NOT_SUPPORTED_FORMAT + = TIZEN_ERROR_MEDIA_VISION | 0x01, /**< Not supported format */ + MEDIA_VISION_ERROR_INTERNAL + = TIZEN_ERROR_MEDIA_VISION | 0x02, /**< Internal error */ + MEDIA_VISION_ERROR_INVALID_DATA + = TIZEN_ERROR_MEDIA_VISION | 0x03, /**< Invalid data */ +} mv_error_e; + +/** + * @brief Enumeration for Media Vision @ref mv_engine_config_h handle attribute + * type. + * + * @since_tizen 2.4 + */ +typedef enum { + MV_ENGINE_CONFIG_ATTR_TYPE_DOUBLE, /**< Double attribute type */ + MV_ENGINE_CONFIG_ATTR_TYPE_INTEGER, /**< Integer attribute type */ + MV_ENGINE_CONFIG_ATTR_TYPE_BOOLEAN, /**< Boolean attribute type */ + MV_ENGINE_CONFIG_ATTR_TYPE_STRING /**< String attribute type */ +} mv_config_attribute_type_e; + +/** + * @brief Enumeration for Media Vision colorspace. + * + * @since_tizen 2.4 + */ +typedef enum { + MEDIA_VISION_COLORSPACE_INVALID, /**< The colorspace type is invalid */ + MEDIA_VISION_COLORSPACE_Y800, /**< The colorspace type is Y800 */ + MEDIA_VISION_COLORSPACE_I420, /**< The colorspace type is I420 */ + MEDIA_VISION_COLORSPACE_NV12, /**< The colorspace type is NV12 */ + MEDIA_VISION_COLORSPACE_YV12, /**< The colorspace type is YV12 */ + MEDIA_VISION_COLORSPACE_NV21, /**< The colorspace type is NV21 */ + MEDIA_VISION_COLORSPACE_YUYV, /**< The colorspace type is YUYV */ + MEDIA_VISION_COLORSPACE_UYVY, /**< The colorspace type is UYVY */ + MEDIA_VISION_COLORSPACE_422P, /**< The colorspace type is 422P */ + MEDIA_VISION_COLORSPACE_RGB565, /**< The colorspace type is RGB565 */ + MEDIA_VISION_COLORSPACE_RGB888, /**< The colorspace type is RGB888 */ + MEDIA_VISION_COLORSPACE_RGBA, /**< The colorspace type is RGBA */ +} mv_colorspace_e; + +/** + * @brief The handle to the Media Vision API engine algorithms configuration. + * @details Configuration is a dictionary consists of key and value pairs to + * collect engine-specific settings and allow Media Vision module to + * access them internally. Engine configuration provides developer by + * the possibility to make computer vision algorithms work better + * in particular conditions of API usage. To create engine + * configuration handle @ref mv_create_engine_config() function has to + * be used. When configuration is not needed any more, it is required to + * destroy it and release resources by @ref mv_destroy_engine_config() + * function. + * + * @since_tizen 2.4 + * + * @see mv_create_engine_config() + * @see mv_destroy_engine_config() + */ +typedef void *mv_engine_config_h; + +/** + * @brief The handle to the source. + * + * @since_tizen 2.4 + */ +typedef void *mv_source_h; + +/** + * @brief Creates a source handle. + * + * @since_tizen 2.4 + * @remarks You must release @a source by using @ref mv_destroy_source(). + * @param [out] source A new handle to the source + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_OUT_OF_MEMORY Out of memory + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_destroy_source() + */ +int mv_create_source( + mv_source_h *source); + +/** + * @brief Destroys the source handle and releases all its resources. + * + * @since_tizen 2.4 + * @param [in] source The handle to the source to be destroyed + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_create_source() + */ +int mv_destroy_source( + mv_source_h source); + +/** + * @brief Fills the media source based on the media packet. + * + * @since_tizen 2.4 + * @param [in, out] source The handle to the source + * @param [in] media_packet The handle to the media packet from which + * will be filled the source + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_INVALID_OPERATION Invalid operation + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED_FORMAT Not supported format + * @retval #MEDIA_VISION_ERROR_OUT_OF_MEMORY Out of memory + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @pre Create a source handle by calling @ref mv_create_source() + * + * @see mv_create_source() + * @see mv_destroy_source() + */ +int mv_source_fill_by_media_packet( + mv_source_h source, + media_packet_h media_packet); + +/** + * @brief Fills the media source based on the buffer and metadata. + * + * @since_tizen 2.4 + * @param [in, out] source The handle to the source + * @param [in] data_buffer The buffer of image data + * @param [in] buffer_size The buffer size + * @param [in] image_width The width of image data + * @param [in] image_height The height of image data + * @param [in] image_colorspace The image colorspace + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_OUT_OF_MEMORY Out of memory + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @pre Create a source handle by calling @ref mv_create_source() + * + * @see mv_source_clear() + */ +int mv_source_fill_by_buffer( + mv_source_h source, + unsigned char *data_buffer, + unsigned int buffer_size, + unsigned int image_width, + unsigned int image_height, + mv_colorspace_e image_colorspace); + +/** + * @brief Clears the buffer of the media source. + * + * @since_tizen 2.4 + * @param [in, out] source The handle to the source + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_source_fill_by_buffer() + */ +int mv_source_clear( + mv_source_h source); + +/** + * @brief Gets buffer of the media source. + * + * @since_tizen 2.4 + * @remarks Note that the retrieved buffer will be destroyed when + * @ref mv_destroy_source() or @ref mv_source_clear() function + * is called for the @a source. + * + * @param [in] source The handle to the source + * @param [out] data_buffer The buffer of the source + * @param [out] buffer_size The size of buffer + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_source_get_width() + * @see mv_source_get_height() + * @see mv_source_get_colorspace() + */ +int mv_source_get_buffer( + mv_source_h source, + unsigned char **data_buffer, + unsigned int *buffer_size); + +/** + * @brief Gets height of the media source. + * + * @since_tizen 2.4 + * @param [in] source The handle to the source + * @param [out] image_height The height of an image in the source + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_source_get_width() + * @see mv_source_get_colorspace() + * @see mv_source_get_buffer() + */ +int mv_source_get_height( + mv_source_h source, + unsigned int *image_height); + +/** + * @brief Gets width of the media source. + * + * @since_tizen 2.4 + * @param [in] source The handle to the source + * @param [out] image_width The width of an image in the source + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_source_get_height() + * @see mv_source_get_colorspace() + * @see mv_source_get_buffer() + */ +int mv_source_get_width( + mv_source_h source, + unsigned int *image_width); + +/** + * @brief Gets colorspace of the media source. + * + * @since_tizen 2.4 + * @param [in] source The handle to the source + * @param [out] image_colorspace The colorspace of an image in the source + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_source_get_width() + * @see mv_source_get_height() + * @see mv_source_get_buffer() + */ +int mv_source_get_colorspace( + mv_source_h source, + mv_colorspace_e *image_colorspace); + +/** + * @brief Creates the handle to the configuration of engine. + * + * @since_tizen 2.4 + * @remarks Available engine configuration attributes can be get by using + * @ref mv_engine_config_foreach_supported_attribute(). + * The attributes can be changed by @ref mv_engine_config_h + * related setters. Default values are used if the attributes + * are not changed. + * @param [out] engine_cfg The handle to the engine to be created + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_OUT_OF_MEMORY Out of memory + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_engine_config_h + * @see mv_destroy_engine_config() + * @see mv_engine_config_set_double_attribute() + * @see mv_engine_config_set_int_attribute() + * @see mv_engine_config_set_bool_attribute() + * @see mv_engine_config_set_string_attribute() + * @see mv_engine_config_get_double_attribute() + * @see mv_engine_config_get_int_attribute() + * @see mv_engine_config_get_bool_attribute() + * @see mv_engine_config_get_string_attribute() + */ +int mv_create_engine_config( + mv_engine_config_h *engine_cfg); + +/** + * @brief Destroys the engine configuration handle and releases all its + * resources. + * + * @since_tizen 2.4 + * @param [in] engine_cfg The handle to the engine configuration + * to be destroyed + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_engine_config_h + * @see mv_create_engine_config() + */ +int mv_destroy_engine_config( + mv_engine_config_h engine_cfg); + +/** + * @brief Sets the double attribute to the configuration. + * + * @since_tizen 2.4 + * @param [in] engine_cfg Engine configuration for which @a value has + * to be set + * @param [in] name String key of the attribute will be used for + * storing the @a value into configuration + * dictionary + * @param [in] value The double value of the attribute + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_KEY_NOT_AVAILABLE Attribute key isn't available + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_engine_config_get_double_attribute() + * @see mv_engine_config_set_int_attribute() + * @see mv_engine_config_set_bool_attribute() + * @see mv_engine_config_set_string_attribute() + */ +int mv_engine_config_set_double_attribute( + mv_engine_config_h engine_cfg, + const char *name, + double value); + +/** + * @brief Sets the integer attribute to the configuration. + * + * @since_tizen 2.4 + * @param [in] engine_cfg Engine configuration for which @a value has + * to be set + * @param [in] name String key of the attribute will be used for + * storing the @a value into configuration + * dictionary + * @param [in] value The integer value of the attribute + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_KEY_NOT_AVAILABLE Attribute key isn't available + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_engine_config_get_int_attribute() + * @see mv_engine_config_set_double_attribute() + * @see mv_engine_config_set_bool_attribute() + * @see mv_engine_config_set_string_attribute() + * @see mv_barcode_detect_attr_target_e + * @see mv_barcode_generate_attr_text_e + */ +int mv_engine_config_set_int_attribute( + mv_engine_config_h engine_cfg, + const char *name, + int value); + +/** + * @brief Sets the boolean attribute to the configuration. + * + * @since_tizen 2.4 + * @param [in] engine_cfg Engine configuration for which @a value has + * to be set + * @param [in] name String key of the attribute will be used for + * storing the @a value into configuration + * dictionary + * @param [in] value The boolean value of the attribute + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_KEY_NOT_AVAILABLE Attribute key isn't available + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_engine_config_get_bool_attribute() + * @see mv_engine_config_set_double_attribute() + * @see mv_engine_config_set_int_attribute() + * @see mv_engine_config_set_string_attribute() + */ +int mv_engine_config_set_bool_attribute( + mv_engine_config_h engine_cfg, + const char *name, + bool value); + +/** + * @brief Sets the string attribute to the configuration. + * + * @since_tizen 2.4 + * @param [in] engine_cfg Engine configuration for which @a value has + * to be set + * @param [in] name String key of the attribute will be used for + * storing the @a value into configuration + * dictionary + * @param [in] value The string value of the attribute + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_KEY_NOT_AVAILABLE Attribute key isn't available + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_engine_config_get_string_attribute() + * @see mv_engine_config_set_double_attribute() + * @see mv_engine_config_set_int_attribute() + * @see mv_engine_config_set_bool_attribute() + */ +int mv_engine_config_set_string_attribute( + mv_engine_config_h engine_cfg, + const char *name, + const char *value); + +/** + * @brief Gets the double attribute from the configuration dictionary. + * + * @since_tizen 2.4 + * @param [in] engine_cfg Engine configuration from which @a value + * has to be gotten. If NULL, default attribute + * value will be returned + * @param [in] name String key of the attribute will be used for + * getting the @a value from the + * configuration dictionary + * @param [out] value The attribute to be filled with double value + * from dictionary + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_KEY_NOT_AVAILABLE Attribute key isn't available + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_engine_config_set_double_attribute() + * @see mv_engine_config_get_int_attribute() + * @see mv_engine_config_get_bool_attribute() + * @see mv_engine_config_get_string_attribute() + */ +int mv_engine_config_get_double_attribute( + mv_engine_config_h engine_cfg, + const char *name, + double *value); + +/** + * @brief Gets the integer attribute from the configuration dictionary. + * + * @since_tizen 2.4 + * @param [in] engine_cfg Engine configuration from which @a value + * has to be gotten. If NULL, default attribute + * value will be returned + * @param [in] name String key of the attribute will be used for + * getting the @a value from the + * configuration dictionary + * @param [out] value The attribute to be filled with integer value + * from dictionary + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_KEY_NOT_AVAILABLE Attribute key isn't available + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_engine_config_set_int_attribute() + * @see mv_engine_config_get_double_attribute() + * @see mv_engine_config_get_bool_attribute() + * @see mv_engine_config_get_string_attribute() + * @see mv_barcode_detect_attr_target_e + * @see mv_barcode_generate_attr_text_e + */ +int mv_engine_config_get_int_attribute( + mv_engine_config_h engine_cfg, + const char *name, + int *value); + +/** + * @brief Gets the boolean attribute from the configuration dictionary. + * + * @since_tizen 2.4 + * @param [in] engine_cfg Engine configuration from which @a value + * has to be gotten. If NULL, default attribute + * value will be returned + * @param [in] name String key of the attribute will be used for + * getting the @a value from the + * configuration dictionary + * @param [out] value The attribute to be filled with boolean value + * from dictionary + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_KEY_NOT_AVAILABLE Attribute key isn't available + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_engine_config_set_bool_attribute() + * @see mv_engine_config_get_double_attribute() + * @see mv_engine_config_get_int_attribute() + * @see mv_engine_config_get_string_attribute() + */ +int mv_engine_config_get_bool_attribute( + mv_engine_config_h engine_cfg, + const char *name, + bool *value); + +/** + * @brief Gets the string attribute from the configuration dictionary. + * + * @since_tizen 2.4 + * @remarks Function allocates memory required for output @a value, so + * it has to be removed by the user himself. + * @param [in] engine_cfg Engine configuration from which @a value + * has to be gotten. If NULL, default attribute + * value will be returned + * @param [in] name String key of the attribute will be used for + * getting the @a value from the + * configuration dictionary + * @param [out] value The attribute to be filled with string value + * from dictionary + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_VISION_ERROR_KEY_NOT_AVAILABLE Attribute key isn't available + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_engine_config_set_string_attribute() + * @see mv_engine_config_get_double_attribute() + * @see mv_engine_config_get_int_attribute() + * @see mv_engine_config_get_bool_attribute() + */ +int mv_engine_config_get_string_attribute( + mv_engine_config_h engine_cfg, + const char *name, + char **value); + +/** + * @brief Called to get information (type and name) once for each supported + * attribute. + * + * @since_tizen 2.4 + * @param [in] attribute_type The supported attribute type + * @param [in] attribute_name The supported attribute name + * @param [in] user_data The user data passed from the + * @ref mv_engine_config_foreach_supported_attribute() + * function + * @return @c true to continue with the next iteration of the loop, \n + * otherwise @c false to break out of the loop + * + * @pre mv_engine_config_foreach_supported_attribute() will invoke this callback + * @see mv_engine_config_foreach_supported_attribute() + */ +typedef bool(*mv_supported_attribute_cb)( + mv_config_attribute_type_e attribute_type, + const char *attribute_name, + void *user_data); + +/** + * @brief Traverses the list of supported attribute names and types. + * @details Using this function names of supported attributes can be obtained. + * Names of the attributes can be used with @ref mv_engine_config_h + * related getters and setters to get/set appropriate attribute values. + * + * @since_tizen 2.4 + * @remarks If @a callback is called zero times after + * @ref mv_engine_config_foreach_supported_attribute() call, then + * engine configuration is not supported and setting of attributes will + * cause no effect. In this case for all Media Vision functions which + * require @ref mv_engine_config_h handle as in parameter this + * parameter can be set NULL. + * @remarks If @a callback is called at least once, then attribute names and + * types obtained in the @ref mv_supported_attribute_cb callback can be + * changed after mv_engine_config_h handle creation (with + * @ref mv_create_engine_config() function) by corresponding setters. + * Although, if attributes aren't changed by setters, then default + * values will be used.\n + * Changing of attribute values will affect internal functionality + * provided by concrete library underlying Media Vision API. + * @param [in] callback The iteration callback function + * @param [in] user_data The user data to be passed to the callback function + * @return @c 0 on success, otherwise a negative error value + * @retval #MEDIA_VISION_ERROR_NONE Successful + * @retval #MEDIA_VISION_ERROR_NO_DATA Can't determine list of supported attributes + * @retval #MEDIA_VISION_ERROR_NOT_SUPPORTED Not supported + * + * @see mv_engine_config_set_double_attribute() + * @see mv_engine_config_set_int_attribute() + * @see mv_engine_config_set_bool_attribute() + * @see mv_engine_config_set_string_attribute() + * @see mv_engine_config_get_double_attribute() + * @see mv_engine_config_get_int_attribute() + * @see mv_engine_config_get_bool_attribute() + * @see mv_engine_config_get_string_attribute() + */ +int mv_engine_config_foreach_supported_attribute( + mv_supported_attribute_cb callback, + void *user_data); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __TIZEN_MEDIAVISION_COMMON_H__ */ |