summaryrefslogtreecommitdiff
path: root/include/metadata_extractor.h
blob: e399ab52d7a13569872261e47bbd68fba4cd81ba (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
/*
* 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_MEDIA_METADATA_EXTRACTOR_H__
#define __TIZEN_MEDIA_METADATA_EXTRACTOR_H__


#include <tizen.h>
#include <metadata_extractor_type.h>


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

/**
 * @addtogroup CAPI_METADATA_EXTRACTOR_MODULE
 * @{
 *
 * @file metadata_extractor.h
 * @brief This file contains the multimedia content metadata extractor API and related structure and enumeration. \n
 *        Description of metadata: duration, bitrate, album, artist, author, genre and description etc. \n
 */


/**
 * @brief Create metadata
 *
 * @remarks @a metadata must be released metadata_extractor_destroy() by you
 *
 * @param [in] metadata The handle to metadata
 * @return 0 on success, otherwise a negative error value
 * @retval #METADATA_EXTRACTOR_ERROR_NONE Successful
 * @retval #METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY Not enough memory is available
 * @see metadata_extractor_destroy()
 */
int metadata_extractor_create(metadata_extractor_h *metadata);


/**
 * @brief Set file path to extract
 *
 * @param [in] metadata The handle to metadata
 * @param [in] path path to extract metadata
 * @return 0 on success, otherwise a negative error value
 * @retval #METADATA_EXTRACTOR_ERROR_NONE Successful
 * @retval #METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #METADATA_EXTRACTOR_ERROR_FILE_EXISTS File not exist
 * @retval #METADATA_EXTRACTOR_ERROR_OPERATION_FAILED Internal Operation Fail
 * @pre Create metadata handle by calling metadata_extractor_create()
 * @see metadata_extractor_create(), metadata_extractor_destroy()
 */
int metadata_extractor_set_path(metadata_extractor_h metadata, const char *path);

/**
 * @brief Set buffer to extract
 *
 * @param [in] metadata The handle to metadata
 * @param [in] buffer buffer to extract metadata
 * @param [in] size buffer size
 * @return 0 on success, otherwise a negative error value
 * @retval #METADATA_EXTRACTOR_ERROR_NONE Successful
 * @retval #METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #METADATA_EXTRACTOR_ERROR_OPERATION_FAILED Internal Operation Fail
 * @pre Create metadata handle by calling metadata_extractor_create()
 * @see metadata_extractor_create(), metadata_extractor_destroy()
 */

int metadata_extractor_set_buffer(metadata_extractor_h metadata, const void *buffer, int size);

/**
 * @brief Destroy metadata
 *
 * @param [in] metadata The handle to metadata
 * @return 0 on success, otherwise a negative error value
 * @retval #METADATA_EXTRACTOR_ERROR_NONE Successful
 * @retval #METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #METADATA_EXTRACTOR_ERROR_OPERATION_FAILED Internal Operation Fail
 * @pre Create metadata handle by calling metadata_extractor_create()
 * @see metadata_extractor_create()
 */
int metadata_extractor_destroy(metadata_extractor_h metadata);


/**
 * @brief Get metadata
 *
 * @remarks @a value must be released with @c free() by you
 *
 * @param [in] metadata The handle to metadata
 * @param [in] attribute key attribute name to get
 * @param [out] value The value of the attribute
 * @return 0 on success, otherwise a negative error value
 * @retval #METADATA_EXTRACTOR_ERROR_NONE Successful
 * @retval #METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY Not enough memory is available
 * @retval #METADATA_EXTRACTOR_ERROR_OPERATION_FAILED Internal Operation Fail
 * @pre Set path to extract by calling metadata_extractor_set_path()
 * @see metadata_extractor_create(), metadata_extractor_destroy()
 */
int metadata_extractor_get_metadata(metadata_extractor_h metadata, metadata_extractor_attr_e attribute, char **value);


/**
 * @brief Get artwork image in media file
 *
 * @remarks @a artwork and @a artwork_mime must be released with @c free() by you
 *
 * @param [in] metadata The handle to metadata
 * @param [out] artwork encoded artwork image
 * @param [out] size encoded artwork size
 * @param [out] mime_type mime type of artwork
 * @return 0 on success, otherwise a negative error value
 * @retval #METADATA_EXTRACTOR_ERROR_NONE Successful
 * @retval #METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY Not enough memory is available
 * @retval #METADATA_EXTRACTOR_ERROR_OPERATION_FAILED Internal Operation Fail
 * @pre Set path to extract by calling metadata_extractor_set_path()
 * @see metadata_extractor_create(), metadata_extractor_destroy()
 */
int metadata_extractor_get_artwork(metadata_extractor_h metadata, void **artwork, int *size, char **mime_type);


/**
 * @brief Get frame of video media file
 *
 * @remarks @a frame must be released with @c free() by you
 *
 * @param [in] metadata The handle to metadata
 * @param [out] frame raw frame data in RGB888
 * @param [out] size The frame data size
 * @return 0 on success, otherwise a negative error value
 * @retval #METADATA_EXTRACTOR_ERROR_NONE Successful
 * @retval #METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY Not enough memory is available
 * @retval #METADATA_EXTRACTOR_ERROR_OPERATION_FAILED Internal Operation Fail
 * @pre Set path to extract by calling metadata_extractor_set_path()
 * @see metadata_extractor_create(), metadata_extractor_destroy()
 */
int metadata_extractor_get_frame(metadata_extractor_h metadata, void **frame, int *size);


/**
 * @brief Get synclyric of media file
 *
 * @remarks @a lyrics must be released with @c free() by you
 *
 * @param [in] metadata The handle to metadata
 * @param [in] index Index of time/lyrics set
 * @param [out] time_info Time information of index
 * @param [out] lyrics Lyric of index
 * @return 0 on success, otherwise a negative error value
 * @retval #METADATA_EXTRACTOR_ERROR_NONE Successful
 * @retval #METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #METADATA_EXTRACTOR_ERROR_OPERATION_FAILED Internal Operation Fail
 * @pre Set path to extract by calling metadata_extractor_set_path()
 * @pre Get time/lyrics set number by calling metadata_extractor_get_metadata(METADATA_SYNCLYRICS_NUM)
 * @see metadata_extractor_create(), metadata_extractor_destroy()
 */
int metadata_extractor_get_synclyrics(metadata_extractor_h metadata, int index, unsigned long *time_stamp, char **lyrics);

/**
 * @brief Get a frame of video media
 *
 * @remarks @a frame must be released with @c free() by you
 *
 * @param [in] metadata The handle to metadata
 * @param [in] timestamp The timestamp in milliseconds
 * @param [in] is_accurate @a true, user can get an accurated frame for given the timestamp.\n
 * @a false, user can only get the nearest i-frame of video rapidly.
 * @param [out] frame raw frame data in RGB888
 * @param [out] size The frame data size
 * @return 0 on success, otherwise a negative error value
 * @retval #METADATA_EXTRACTOR_ERROR_NONE Successful
 * @retval #METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER Invalid parameter
 * @retval #METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY Not enough memory is available
 * @retval #METADATA_EXTRACTOR_ERROR_OPERATION_FAILED Internal Operation Fail
 * @pre Set path to extract by calling metadata_extractor_set_path()
 * @see metadata_extractor_create(), metadata_extractor_destroy()
 */

int metadata_extractor_get_frame_at_time(metadata_extractor_h metadata, unsigned long timestamp, bool is_accurate, void **frame, int *size);

/**
 * @}
 */


#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __TIZEN_MEDIA_METADATA_EXTRACTOR_H__ */