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.
18 #include <media_info_private.h>
20 #define media_content_retv_free_video_if(expr, val, p_str) do { \
22 LOGE(FONT_COLOR_RED"Memory allocation failure"FONT_COLOR_RESET); \
23 video_meta_destroy(p_str); \
29 int video_meta_destroy(video_meta_h video)
31 video_meta_s *_video = (video_meta_s*)video;
32 media_content_retvm_if(_video == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Video handle is null");
34 SAFE_FREE(_video->media_id);
35 SAFE_FREE(_video->album);
36 SAFE_FREE(_video->artist);
37 SAFE_FREE(_video->album_artist);
38 SAFE_FREE(_video->genre);
39 SAFE_FREE(_video->composer);
40 SAFE_FREE(_video->year);
41 SAFE_FREE(_video->recorded_date);
42 SAFE_FREE(_video->copyright);
43 SAFE_FREE(_video->track_num);
46 return MEDIA_CONTENT_ERROR_NONE;
49 int video_meta_clone(video_meta_h *dst, video_meta_h src)
51 video_meta_s *_src = (video_meta_s*)src;
52 media_content_retvm_if(_src == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Source handle is null");
54 video_meta_s *_dst = (video_meta_s*)calloc(1, sizeof(video_meta_s));
55 media_content_retvm_if(_dst == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
57 if (_src->media_id != NULL) {
58 _dst->media_id = g_strdup(_src->media_id);
59 media_content_retv_free_video_if(_dst->media_id == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, (video_meta_h)_dst);
62 if (_src->album != NULL) {
63 _dst->album = g_strdup(_src->album);
64 media_content_retv_free_video_if(_dst->album == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, (video_meta_h)_dst);
67 if (_src->artist != NULL) {
68 _dst->artist = g_strdup(_src->artist);
69 media_content_retv_free_video_if(_dst->artist == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, (video_meta_h)_dst);
72 if (_src->album_artist != NULL) {
73 _dst->album_artist = g_strdup(_src->album_artist);
74 media_content_retv_free_video_if(_dst->album_artist == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, (video_meta_h)_dst);
77 if (_src->genre != NULL) {
78 _dst->genre = g_strdup(_src->genre);
79 media_content_retv_free_video_if(_dst->genre == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, (video_meta_h)_dst);
82 if (_src->composer != NULL) {
83 _dst->composer = g_strdup(_src->composer);
84 media_content_retv_free_video_if(_dst->composer == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, (video_meta_h)_dst);
87 if (_src->year != NULL) {
88 _dst->year = g_strdup(_src->year);
89 media_content_retv_free_video_if(_dst->year == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, (video_meta_h)_dst);
92 if (_src->recorded_date != NULL) {
93 _dst->recorded_date = g_strdup(_src->recorded_date);
94 media_content_retv_free_video_if(_dst->recorded_date == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, (video_meta_h)_dst);
97 if (_src->copyright != NULL) {
98 _dst->copyright = g_strdup(_src->copyright);
99 media_content_retv_free_video_if(_dst->copyright == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, (video_meta_h)_dst);
102 if (_src->track_num != NULL) {
103 _dst->track_num = g_strdup(_src->track_num);
104 media_content_retv_free_video_if(_dst->track_num == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, (video_meta_h)_dst);
107 _dst->bitrate = _src->bitrate;
108 _dst->duration = _src->duration;
109 _dst->width = _src->width;
110 _dst->height = _src->height;
111 _dst->rotation = _src->rotation;
113 *dst = (video_meta_h)_dst;
115 return MEDIA_CONTENT_ERROR_NONE;
118 int video_meta_get_media_id(video_meta_h video, char **media_id)
120 int ret = MEDIA_CONTENT_ERROR_NONE;
121 video_meta_s *_video = (video_meta_s*)video;
123 if (_video->media_id != NULL) {
124 char *new_string = strdup(_video->media_id);
125 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
127 *media_id = new_string;
131 ret = MEDIA_CONTENT_ERROR_NONE;
134 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
135 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
141 int video_meta_get_album(video_meta_h video, char **album)
143 int ret = MEDIA_CONTENT_ERROR_NONE;
144 video_meta_s *_video = (video_meta_s*)video;
146 if (_video->album != NULL) {
147 char *new_string = strdup(_video->album);
148 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
154 ret = MEDIA_CONTENT_ERROR_NONE;
157 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
158 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
164 int video_meta_get_artist(video_meta_h video, char **artist)
166 int ret = MEDIA_CONTENT_ERROR_NONE;
167 video_meta_s *_video = (video_meta_s*)video;
169 if (_video->artist != NULL) {
170 char *new_string = strdup(_video->artist);
171 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
173 *artist = new_string;
177 ret = MEDIA_CONTENT_ERROR_NONE;
180 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
181 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
187 int video_meta_get_album_artist(video_meta_h video, char **album_artist)
189 int ret = MEDIA_CONTENT_ERROR_NONE;
190 video_meta_s *_video = (video_meta_s*)video;
192 if (_video->album_artist != NULL) {
193 char *new_string = strdup(_video->album_artist);
194 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
196 *album_artist = new_string;
198 *album_artist = NULL;
200 ret = MEDIA_CONTENT_ERROR_NONE;
203 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
204 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
210 int video_meta_get_genre(video_meta_h video, char **genre)
212 int ret = MEDIA_CONTENT_ERROR_NONE;
213 video_meta_s *_video = (video_meta_s*)video;
215 if (_video->genre != NULL) {
216 char *new_string = strdup(_video->genre);
217 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
224 ret = MEDIA_CONTENT_ERROR_NONE;
226 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
227 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
233 int video_meta_get_composer(video_meta_h video, char **composer)
235 int ret = MEDIA_CONTENT_ERROR_NONE;
236 video_meta_s *_video = (video_meta_s*)video;
238 if (_video->composer != NULL) {
239 char *new_string = strdup(_video->composer);
240 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
242 *composer = new_string;
247 ret = MEDIA_CONTENT_ERROR_NONE;
249 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
250 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
256 int video_meta_get_year(video_meta_h video, char **year)
258 int ret = MEDIA_CONTENT_ERROR_NONE;
259 video_meta_s *_video = (video_meta_s*)video;
261 if (_video->year != NULL) {
262 char *new_string = strdup(_video->year);
263 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
270 ret = MEDIA_CONTENT_ERROR_NONE;
272 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
273 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
279 int video_meta_get_recorded_date(video_meta_h video, char **recorded_date)
281 int ret = MEDIA_CONTENT_ERROR_NONE;
282 video_meta_s *_video = (video_meta_s*)video;
284 if (_video->recorded_date != NULL) {
285 char *new_string = strdup(_video->recorded_date);
286 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
288 *recorded_date = new_string;
290 *recorded_date = NULL;
293 ret = MEDIA_CONTENT_ERROR_NONE;
295 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
296 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
302 int video_meta_get_copyright(video_meta_h video, char **copyright)
304 int ret = MEDIA_CONTENT_ERROR_NONE;
305 video_meta_s *_video = (video_meta_s*)video;
307 if (_video->copyright != NULL) {
308 char *new_string = strdup(_video->copyright);
309 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
311 *copyright = new_string;
316 ret = MEDIA_CONTENT_ERROR_NONE;
318 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
319 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
325 int video_meta_get_track_num(video_meta_h video, char **track_num)
327 int ret = MEDIA_CONTENT_ERROR_NONE;
328 video_meta_s *_video = (video_meta_s*)video;
330 if (_video->track_num != NULL) {
331 char *new_string = strdup(_video->track_num);
332 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
334 *track_num = new_string;
339 ret = MEDIA_CONTENT_ERROR_NONE;
341 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
342 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
348 int video_meta_get_bit_rate(video_meta_h video, int *bit_rate)
350 int ret = MEDIA_CONTENT_ERROR_NONE;
351 video_meta_s *_video = (video_meta_s*)video;
353 if (_video && bit_rate) {
354 *bit_rate = _video->bitrate;
355 ret = MEDIA_CONTENT_ERROR_NONE;
357 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
358 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
364 int video_meta_get_duration(video_meta_h video, int *duration)
366 int ret = MEDIA_CONTENT_ERROR_NONE;
367 video_meta_s *_video = (video_meta_s*)video;
369 if (_video && duration) {
370 *duration = _video->duration;
371 ret = MEDIA_CONTENT_ERROR_NONE;
373 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
374 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
380 int video_meta_get_width(video_meta_h video, int *width)
382 int ret = MEDIA_CONTENT_ERROR_NONE;
383 video_meta_s *_video = (video_meta_s*)video;
385 if (_video && width) {
386 *width = _video->width;
387 ret = MEDIA_CONTENT_ERROR_NONE;
389 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
390 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
396 int video_meta_get_height(video_meta_h video, int *height)
398 int ret = MEDIA_CONTENT_ERROR_NONE;
399 video_meta_s *_video = (video_meta_s*)video;
400 if (_video && height) {
401 *height = _video->height;
402 ret = MEDIA_CONTENT_ERROR_NONE;
404 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
405 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
411 int video_meta_get_rotation(video_meta_h video, int *rotation)
413 int ret = MEDIA_CONTENT_ERROR_NONE;
414 video_meta_s *_video = (video_meta_s*)video;
415 if (_video && rotation) {
416 *rotation = _video->rotation;
417 ret = MEDIA_CONTENT_ERROR_NONE;
419 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
420 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;