summaryrefslogtreecommitdiff
path: root/include/media_video.h
blob: 70d21e05b8595670c980619faeb6bc74f75faa95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
/*
* Copyright (c) 2011 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_VIDEO_META_H__
#define __TIZEN_VIDEO_META_H__

#include <media_content_type.h>

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */


/**
 * @addtogroup CAPI_CONTENT_MEDIA_VIDEO_META_MODULE
 * @{
 */

/**
 * @brief Clones video metadata.
 * @details This function copies the video metadata handle from a source to
 * destination.

 * @remark The destination handle must be released with video_meta_destroy() by you. 
 *
 * @param [out] dst A destination handle to video metadata
 * @param [in] src The source handle to video metadata
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory 
 * @see video_meta_destroy()
 */
int video_meta_clone(video_meta_h *dst, video_meta_h src);


/**
 * @brief Destroys video metadata.
 * @details Function frees all resources related to video metadata handle. This handle
 * no longer can be used to perform any operation. A new handle has to
 * be created before the next use.
 *
 * @param [in] video The handle to video metadata
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 * @pre Get copy of video metadata handle by calling video_meta_clone()
 * @see video_meta_clone()
 *
 */
int video_meta_destroy(video_meta_h video);


/**
 * @brief Gets the longitude from video metadata.
 * @details Function gives geographic position: @a longitude  in degrees,
 * which is positive for east and negative for west.
 *
 * @param [in] video The handle to video metadata
 * @param [out] longitude The video longitude in degrees
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 */
int video_meta_get_longitude(video_meta_h video, double *longitude);


/**
 * @brief Gets the latitude from video metadata.
 * @details Function gives geographic position: @a latitude  in degrees,
 * which is positive for north and negative for south.
 *
 * @param [in] video The handle to video metadata
 * @param [out] latitude The video latitude in degrees
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 */
int video_meta_get_latitude(video_meta_h video, double *latitude);


/**
 * @brief Gets the video's album.
 *
 * @remarks @a album must be released with free() by you.
 *
 * @param [in] video The handle to video metadata
 * @param [out] album The video album or NULL
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
 */
int video_meta_get_album(video_meta_h video, char **album);


/**
 * @brief Gets the video's artist.
 *
 * @remarks @a artist must be released with free() by you.
 *
 * @param [in] video The handle to video metadata
 * @param [out] artist The artist of video metadata
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
 */
int video_meta_get_artist(video_meta_h video, char **artist);


/**
 * @brief Gets the video's title.
 *
 * @remarks @a title must be released with free() by you.
 *
 * @param [in] video The handle to video metadata
 * @param [out] title The title of video metadata
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
 */
int video_meta_get_title(video_meta_h video, char **title);


/**
 * @brief Gets the video's description.
 *
 * @remarks  @a description must be released with free() by you.
 *
 * @param [in] video The handle to video metadata
 * @param [out] description The description of video metadata
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
 */
int video_meta_get_description(video_meta_h video, char **description);


/**
 * @brief Gets the video's time played parameter.
 * @details Function returns video's elapsed playback time parameter as period
 * starting from the beginning of the movie.
 *
 * @param [in] video The handle to video metadata
 * @param [out] time_played The time period from the beginning of the video (in milliseconds)
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 * @see video_meta_update_time_played_to_db()
 */
int video_meta_get_time_played(video_meta_h video, int *time_played);


/**
 * @brief Gets duration of video metadata.
 *
 * @param [in] video The handle to video metadata
 * @param [out] duration The video duration in milliseconds
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 */
int video_meta_get_duration(video_meta_h video, int *duration);


/**
 * @brief Gets the video's width in pixels.
 *
 * @param [in] video The handle to video metadata
 * @param [out] width The video width in pixels
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 */
int video_meta_get_width(video_meta_h video, int *width);


/**
 * @brief Gets the video's height  in pixels.
 *
 * @param [in] video The handle to video metadata
 * @param [out] height The video height in pixels
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 */
int video_meta_get_height(video_meta_h video, int *height);


/**
 * @brief Gets the video's orientation.
 *
 * @param [in] video The handle to video metadata
 * @param [out] orientation The orientation of video metadata
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 */
int video_meta_get_orientation(video_meta_h video, media_content_orientation_e *orientation);


/**
 * @brief Gets the date, when video was created
 *
 * @param [in] video The handle to video metadata
 * @param [out] date_taken The date, when video was taken (in seconds, since the Epoch)
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 */
int video_meta_get_date_taken(video_meta_h video, time_t *date_taken);


/**
 * @brief Updates video's time played parameter to the media database.
 * @details Function updates video's time played parameter
 * This parameter describes elapsed playback time, starting from the
 * beginning of the movie.
 *
 * @param [in] video The handle to video metadata
 * @param [in] time_played The video time played (in milliseconds)
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 * @pre This function requires opened connection to content service by media_content_connect().
 * @see media_content_connect()
 * @see video_meta_get_time_played()
 */
int video_meta_update_time_played_to_db(video_meta_h video, int time_played);


/**
 *@}
 */

/**
 * @addtogroup CAPI_CONTENT_MEDIA_VIDEO_BOOKMARK_MODULE
 * @{
 */


/**
 * @brief Iterates through video bookmarks with optional filter in the given video metadata from the media database.
 * @details This function gets all video bookmarks associated with the given folder and meeting desired filter option and 
calls registered callback function for every retrieved item. If NULL is passed to the @a filter, no filtering is applied. 
 * @remarks Only start position and offset details of filter can be set,
 * because searching by bookmark name information is not supported.
 *
 * @param [in] video The handle to video metadata
 * @param [in] filter The handle to video bookmark filter
 * @param [in] callback The callback function to invoke
 * @param [in] user_data The user data to be passed to the callback function

 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
 * @pre This function requires opened connection to content service by media_content_connect().
 * @post This function invokes video_bookmark_cb().
 * @see media_content_connect()
 * @see #video_bookmark_cb 
 * @see video_bookmark_filter_create()
 *
 */
int video_bookmark_foreach_bookmark_from_db(video_meta_h video, video_bookmark_filter_h filter, video_bookmark_cb callback, void *user_data);


/**
 * @brief Clones video bookmark.
 * @details This function copies the video bookmark handle from a source to destination. There is no video_bookmark_create() function. 
 * The video_bookmark_h is created internally and available through video bookmark foreach function such as video_bookmark_foreach_bookmark_from_db(). 
 * To use this handle outside of these foreach functions, use this function.
 *
 * @remark The destination handle must be released with video_bookmark_destroy() by you.  
 *
 * @param [out] dst A destination handle to video bookmark
 * @param [in] src The source handle to video bookmark
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
 * @see video_bookmark_destroy()
 * @see video_bookmark_foreach_bookmark_from_db()
 *
 */
int video_bookmark_clone(video_bookmark_h *dst, video_bookmark_h src);


/**
 * @brief Destroys video bookmark.
 * @details Function frees all resources related to bookmark handle. This handle
 * no longer can be used to perform any operation. A new handle has to
 * be created before the next use.
 *
 * @param [in] bookmark The handle to video bookmark
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 * @pre Get copy of bookmark handle by calling video_bookmark_clone() 
 * @see video_bookmark_clone()
 */
int video_bookmark_destroy(video_bookmark_h bookmark);


/**
 * @brief Gets bookmark's time marked parameter.
 * @details Function returns time offset in milliseconds from beginning of the movie on which bookmark
 * was placed.
 *
 * @param [in] bookmark The handle to video bookmark
 * @param [out] time_marked The bookmark time offset (in milliseconds)
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 */
int video_bookmark_get_time_marked(video_bookmark_h bookmark, time_t *time_marked);


/**
 * @brief Gets the video bookmark's thumbnail
 *
 * @remarks thumbnail must be released with free() by you.
 *
 * @param [in] bookmark The handle to video bookmark
 * @param [out] thumbnail_path The thumbnail path of video bookmark
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
 */
int video_bookmark_get_thumbnail_path(video_bookmark_h bookmark, char **thumbnail_path);


/**
 * @brief Inserts a new bookmark in video on specified time offset to the media database.
 *
 * @param [in] video The handle to video metadata
 * @param [in] time The bookmark time offset (in seconds)
 * @param [in] thumbnail_path The thumbnail path of video bookmark.
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 * @pre This function requires opened connection to content service by media_content_connect().
 * @see media_content_connect()
 * @see video_bookmark_delete_from_db()
 *
 */
int video_bookmark_insert_to_db(video_meta_h video, time_t time, const char *thumbnail_path);


/**
 * @brief Removes video bookmark from the media database.
 *
 * @param [in] bookmark The handle to video bookmark
 * @return 0 on success, otherwise a negative error value.
 * @retval #MEDIA_CONTENT_ERROR_NONE Successful
 * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
 * @pre This function requires opened connection to content service by media_content_connect().
 * @see media_content_connect()
 * @see video_bookmark_insert_to_db()
 *
 */
int video_bookmark_delete_from_db(video_bookmark_h bookmark);



/**
 * @}
 */

#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /*__TIZEN_VIDEO_META_H__*/