2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #ifndef __TIZEN_IMAGE_META_H__
20 #define __TIZEN_IMAGE_META_H__
22 #include <media_content_type.h>
26 #endif /* __cplusplus */
29 * @brief This file contains the image metadata API and related functions to proceed with them.
30 * Functions include cloning and destroying the image metadata, getting image metadata such as width, height, \n
31 * orientation, date taken, title, burst shot id and updating image to DB.
35 * @addtogroup CAPI_CONTENT_MEDIA_IMAGE_MODULE
41 * @brief Clones the image metadata.
42 * @details The function copies the image metadata handle from a source to destination.
44 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
46 * @remarks The destination handle must be released with image_meta_destroy().
48 * @param[out] dst The destination handle to the image metadata
49 * @param[in] src The source handle to the image metadata
51 * @return @c 0 on success,
52 * otherwise a negative error value
54 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
55 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
56 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
58 * @see image_meta_destroy()
60 int image_meta_clone(image_meta_h *dst, image_meta_h src);
63 * @brief Destroys the image metadata.
64 * @details The function frees all resources related to the image metadata handle. This handle
65 * no longer can be used to perform any operation. A new handle has to
66 * be created before next usage.
68 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
70 * @param[in] image The image metadata handle
72 * @return @c 0 on success,
73 * otherwise a negative error value
75 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
76 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
78 * @pre Get a copy of image_meta handle by calling image_meta_clone().
80 * @see image_meta_clone()
82 int image_meta_destroy(image_meta_h image);
85 * @brief Gets the ID of an image.
86 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
88 * @param[in] image The image metadata handle
89 * @param[out] media_id The ID of an image
91 * @return @c 0 on success,
92 * otherwise a negative error value
94 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
95 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
96 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
98 int image_meta_get_media_id(image_meta_h image, char **media_id);
101 * @brief Gets the image width in pixels.
102 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
104 * @param[in] image The image metadata handle
105 * @param[out] width The image width in pixels
107 * @return @c 0 on success,
108 * otherwise a negative error value
110 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
111 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
113 int image_meta_get_width(image_meta_h image, int *width);
116 * @brief Gets the image height in pixels.
117 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
119 * @param[in] image The image metadata handle
120 * @param[out] height The image height in pixels
122 * @return @c 0 on success,
123 * otherwise a negative error value
125 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
126 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
128 int image_meta_get_height(image_meta_h image, int *height);
131 * @brief Gets the image orientation.
132 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
134 * @param[in] image The image metadata handle
135 * @param[out] orientation The image orientation
137 * @return @c 0 on success,
138 * otherwise a negative error value
140 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
141 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
143 int image_meta_get_orientation(image_meta_h image, media_content_orientation_e *orientation);
146 * @brief Gets the image creation time.
147 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
149 * @param[in] image The image metadata handle
150 * @param[out] date_taken The time, when image was taken (in seconds, since the Epoch)
152 * @return @c 0 on success,
153 * otherwise a negative error value
155 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
156 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
157 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
159 int image_meta_get_date_taken(image_meta_h image, char **date_taken);
162 * @deprecated Deprecated since 4.0.
163 * @brief Gets the burst shot ID.
164 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
166 * @remarks You must release @a burst_id using free().
168 * @param[in] image The image metadata handle
169 * @param[out] burst_id The ID of burst shot\ n
170 * If @a burst_id is @c NULL, this is not burst shot
172 * @return @c 0 on success,
173 * otherwise a negative error value
175 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
176 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
177 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
179 int image_meta_get_burst_id(image_meta_h image, char **burst_id) TIZEN_DEPRECATED_API;
182 * @brief Gets the exposure time from exif.
183 * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
185 * @remarks @a exposure time must be released with free() by you.
187 * @param[in] image The image metadata handle
188 * @param[out] exposure_time The value of exposure_time, getting from exif
190 * @return 0 on success,
191 * otherwise a negative error value
193 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
194 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
195 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
198 int image_meta_get_exposure_time(image_meta_h image, char **exposure_time);
201 * @brief Gets the fnumber from exif.
202 * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
204 * @param[in] image The image metadata handle
205 * @param[out] fnumber The value of fnumber, getting from exif
207 * @return 0 on success,
208 * otherwise a negative error value
210 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
211 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
214 int image_meta_get_fnumber(image_meta_h image, double *fnumber);
217 * @brief Gets the iso from exif.
218 * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
220 * @param[in] image The image metadata handle
221 * @param[out] iso The value of iso, getting from exif
223 * @return 0 on success,
224 * otherwise a negative error value
226 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
227 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
230 int image_meta_get_iso(image_meta_h image, int *iso);
233 * @brief Gets the model from exif.
234 * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
236 * @remarks @a model must be released with free() by you.
238 * @param[in] image The image metadata handle
239 * @param[out] model The value of model, getting from exif
241 * @return 0 on success,
242 * otherwise a negative error value
244 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
245 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
246 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
249 int image_meta_get_model(image_meta_h image, char **model);
252 * @deprecated Deprecated since 4.0.
253 * @brief Checks whether the media is a burst shot image.
254 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
256 * @param[in] image The image metadata handle
257 * @param[out] is_burst_shot @c true if the media is a burst shot image,
258 * otherwise @c false if the media is not a burst shot image
260 * @return @c 0 on success,
261 * otherwise a negative error value
263 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
264 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
266 int image_meta_is_burst_shot(image_meta_h image, bool *is_burst_shot) TIZEN_DEPRECATED_API;
269 * @deprecated Deprecated since 4.0. This data cannot be saved to the file.
270 * @brief Sets an orientation of the image.
271 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
273 * @param[in] image The image metadata handle
274 * @param[in] orientation The image orientation
276 * @return @c 0 on success,
277 * otherwise a negative error value
279 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
280 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
282 int image_meta_set_orientation(image_meta_h image, media_content_orientation_e orientation) TIZEN_DEPRECATED_API;
285 * @deprecated Deprecated since 4.0. Related setter functions are deprecated, therefore this function is not needed anymore.
286 * @brief Updates the image to the media database.
288 * @details The function updates the given image meta in the media database. \n
289 * The function should be called after any change in image attributes, to be updated to the media database.
291 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
294 * @privilege %http://tizen.org/privilege/content.write
296 * @remarks Do not call this function in callback function of foreach function like media_info_foreach_media_from_db().
298 * @param[in] image The handle to the image
300 * @return @c 0 on success,
301 * otherwise a negative error value
303 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
304 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
305 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
306 * @retval #MEDIA_CONTENT_ERROR_INVALID_OPERATION Invalid operation
307 * @retval #MEDIA_CONTENT_ERROR_DB_FAILED DB Operation failed
308 * @retval #MEDIA_CONTENT_ERROR_DB_BUSY DB Operation busy
309 * @retval #MEDIA_CONTENT_ERROR_NETWORK Network fail
310 * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
312 * @pre This function requires opened connection to content service by media_content_connect().
314 * @see media_content_connect()
316 int image_meta_update_to_db(image_meta_h image) TIZEN_DEPRECATED_API;
325 #endif /* __cplusplus */
327 #endif /*__TIZEN_IMAGE_META_H__*/