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>
21 int video_meta_destroy(video_meta_h video)
23 int ret = MEDIA_CONTENT_ERROR_NONE;
24 video_meta_s *_video = (video_meta_s*)video;
27 SAFE_FREE(_video->media_id);
28 SAFE_FREE(_video->title);
29 SAFE_FREE(_video->album);
30 SAFE_FREE(_video->artist);
31 SAFE_FREE(_video->album_artist);
32 SAFE_FREE(_video->genre);
33 SAFE_FREE(_video->composer);
34 SAFE_FREE(_video->year);
35 SAFE_FREE(_video->recorded_date);
36 SAFE_FREE(_video->copyright);
37 SAFE_FREE(_video->track_num);
40 ret = MEDIA_CONTENT_ERROR_NONE;
42 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
43 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
49 int video_meta_clone(video_meta_h *dst, video_meta_h src)
51 int ret = MEDIA_CONTENT_ERROR_NONE;
52 video_meta_s *_src = (video_meta_s*)src;
55 video_meta_s *_dst = (video_meta_s*)calloc(1, sizeof(video_meta_s));
56 media_content_retvm_if(_dst == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
58 if (_src->media_id != NULL) {
59 _dst->media_id = g_strdup(_src->media_id);
60 if (_dst->media_id == NULL) {
61 video_meta_destroy((video_meta_h)_dst);
62 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
63 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
67 if (_src->title != NULL) {
68 _dst->title = g_strdup(_src->title);
69 if (_dst->title == NULL) {
70 video_meta_destroy((video_meta_h)_dst);
71 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
72 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
76 if (_src->album != NULL) {
77 _dst->album = g_strdup(_src->album);
78 if (_dst->album == NULL) {
79 video_meta_destroy((video_meta_h)_dst);
80 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
81 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
85 if (_src->artist != NULL) {
86 _dst->artist = g_strdup(_src->artist);
87 if (_dst->artist == NULL) {
88 video_meta_destroy((video_meta_h)_dst);
89 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
90 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
94 if (_src->album_artist != NULL) {
95 _dst->album_artist = g_strdup(_src->album_artist);
96 if (_dst->album_artist == NULL) {
97 video_meta_destroy((video_meta_h)_dst);
98 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
99 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
103 if (_src->genre != NULL) {
104 _dst->genre = g_strdup(_src->genre);
105 if (_dst->genre == NULL) {
106 video_meta_destroy((video_meta_h)_dst);
107 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
108 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
112 if (_src->composer != NULL) {
113 _dst->composer = g_strdup(_src->composer);
114 if (_dst->composer == NULL) {
115 video_meta_destroy((video_meta_h)_dst);
116 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
117 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
121 if (_src->year != NULL) {
122 _dst->year = g_strdup(_src->year);
123 if (_dst->year == NULL) {
124 video_meta_destroy((video_meta_h)_dst);
125 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
126 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
130 if (_src->recorded_date != NULL) {
131 _dst->recorded_date = g_strdup(_src->recorded_date);
132 if (_dst->recorded_date == NULL) {
133 video_meta_destroy((video_meta_h)_dst);
134 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
135 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
139 if (_src->copyright != NULL) {
140 _dst->copyright = g_strdup(_src->copyright);
141 if (_dst->copyright == NULL) {
142 video_meta_destroy((video_meta_h)_dst);
143 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
144 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
148 if (_src->track_num != NULL) {
149 _dst->track_num = g_strdup(_src->track_num);
150 if (_dst->track_num == NULL) {
151 video_meta_destroy((video_meta_h)_dst);
152 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
153 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
157 _dst->bitrate = _src->bitrate;
158 _dst->duration = _src->duration;
159 _dst->width = _src->width;
160 _dst->height = _src->height;
161 _dst->played_count = _src->played_count;
162 _dst->played_time = _src->played_time;
163 _dst->played_position = _src->played_position;
165 *dst = (video_meta_h)_dst;
167 ret = MEDIA_CONTENT_ERROR_NONE;
169 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
170 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
176 int video_meta_get_media_id(video_meta_h video, char **media_id)
178 int ret = MEDIA_CONTENT_ERROR_NONE;
179 video_meta_s *_video = (video_meta_s*)video;
181 if (_video->media_id != NULL) {
182 char *new_string = strdup(_video->media_id);
183 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
185 *media_id = new_string;
189 ret = MEDIA_CONTENT_ERROR_NONE;
192 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
193 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
199 int video_meta_get_album(video_meta_h video, char **album)
201 int ret = MEDIA_CONTENT_ERROR_NONE;
202 video_meta_s *_video = (video_meta_s*)video;
204 if (_video->album != NULL) {
205 char *new_string = strdup(_video->album);
206 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
212 ret = MEDIA_CONTENT_ERROR_NONE;
215 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
216 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
222 int video_meta_get_artist(video_meta_h video, char **artist)
224 int ret = MEDIA_CONTENT_ERROR_NONE;
225 video_meta_s *_video = (video_meta_s*)video;
227 if (_video->artist != NULL) {
228 char *new_string = strdup(_video->artist);
229 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
231 *artist = new_string;
235 ret = MEDIA_CONTENT_ERROR_NONE;
238 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
239 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
245 int video_meta_get_album_artist(video_meta_h video, char **album_artist)
247 int ret = MEDIA_CONTENT_ERROR_NONE;
248 video_meta_s *_video = (video_meta_s*)video;
250 if (_video->album_artist != NULL) {
251 char *new_string = strdup(_video->album_artist);
252 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
254 *album_artist = new_string;
256 *album_artist = NULL;
258 ret = MEDIA_CONTENT_ERROR_NONE;
261 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
262 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
268 int video_meta_get_genre(video_meta_h video, char **genre)
270 int ret = MEDIA_CONTENT_ERROR_NONE;
271 video_meta_s *_video = (video_meta_s*)video;
273 if (_video->genre != NULL) {
274 char *new_string = strdup(_video->genre);
275 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
282 ret = MEDIA_CONTENT_ERROR_NONE;
284 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
285 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
291 int video_meta_get_composer(video_meta_h video, char **composer)
293 int ret = MEDIA_CONTENT_ERROR_NONE;
294 video_meta_s *_video = (video_meta_s*)video;
296 if (_video->composer != NULL) {
297 char *new_string = strdup(_video->composer);
298 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
300 *composer = new_string;
305 ret = MEDIA_CONTENT_ERROR_NONE;
307 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
308 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
314 int video_meta_get_year(video_meta_h video, char **year)
316 int ret = MEDIA_CONTENT_ERROR_NONE;
317 video_meta_s *_video = (video_meta_s*)video;
319 if (_video->year != NULL) {
320 char *new_string = strdup(_video->year);
321 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
328 ret = MEDIA_CONTENT_ERROR_NONE;
330 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
331 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
337 int video_meta_get_recorded_date(video_meta_h video, char **recorded_date)
339 int ret = MEDIA_CONTENT_ERROR_NONE;
340 video_meta_s *_video = (video_meta_s*)video;
342 if (_video->recorded_date != NULL) {
343 char *new_string = strdup(_video->recorded_date);
344 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
346 *recorded_date = new_string;
348 *recorded_date = NULL;
351 ret = MEDIA_CONTENT_ERROR_NONE;
353 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
354 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
360 int video_meta_get_copyright(video_meta_h video, char **copyright)
362 int ret = MEDIA_CONTENT_ERROR_NONE;
363 video_meta_s *_video = (video_meta_s*)video;
365 if (_video->copyright != NULL) {
366 char *new_string = strdup(_video->copyright);
367 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
369 *copyright = new_string;
374 ret = MEDIA_CONTENT_ERROR_NONE;
376 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
377 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
383 int video_meta_get_track_num(video_meta_h video, char **track_num)
385 int ret = MEDIA_CONTENT_ERROR_NONE;
386 video_meta_s *_video = (video_meta_s*)video;
388 if (_video->track_num != NULL) {
389 char *new_string = strdup(_video->track_num);
390 media_content_retvm_if(new_string == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
392 *track_num = new_string;
397 ret = MEDIA_CONTENT_ERROR_NONE;
399 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
400 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
406 int video_meta_get_bit_rate(video_meta_h video, int *bit_rate)
408 int ret = MEDIA_CONTENT_ERROR_NONE;
409 video_meta_s *_video = (video_meta_s*)video;
411 if (_video && bit_rate) {
412 *bit_rate = _video->bitrate;
413 ret = MEDIA_CONTENT_ERROR_NONE;
415 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
416 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
422 int video_meta_get_duration(video_meta_h video, int *duration)
424 int ret = MEDIA_CONTENT_ERROR_NONE;
425 video_meta_s *_video = (video_meta_s*)video;
427 if (_video && duration) {
428 *duration = _video->duration;
429 ret = MEDIA_CONTENT_ERROR_NONE;
431 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
432 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
438 int video_meta_get_width(video_meta_h video, int *width)
440 int ret = MEDIA_CONTENT_ERROR_NONE;
441 video_meta_s *_video = (video_meta_s*)video;
443 if (_video && width) {
444 *width = _video->width;
445 ret = MEDIA_CONTENT_ERROR_NONE;
447 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
448 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
454 int video_meta_get_height(video_meta_h video, int *height)
456 int ret = MEDIA_CONTENT_ERROR_NONE;
457 video_meta_s *_video = (video_meta_s*)video;
458 if (_video && height) {
459 *height = _video->height;
460 ret = MEDIA_CONTENT_ERROR_NONE;
462 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
463 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
469 int video_meta_get_played_count(video_meta_h video, int *played_count)
471 int ret = MEDIA_CONTENT_ERROR_NONE;
472 video_meta_s *_video = (video_meta_s*)video;
474 if (_video && played_count) {
475 *played_count = _video->played_count;
476 ret = MEDIA_CONTENT_ERROR_NONE;
478 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
479 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
485 int video_meta_get_played_time(video_meta_h video, time_t* played_time)
487 int ret = MEDIA_CONTENT_ERROR_NONE;
488 video_meta_s *_video = (video_meta_s*)video;
491 *played_time = _video->played_time;
492 ret = MEDIA_CONTENT_ERROR_NONE;
494 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
495 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
501 int video_meta_get_played_position(video_meta_h video, int *played_position)
503 int ret = MEDIA_CONTENT_ERROR_NONE;
504 video_meta_s *_video = (video_meta_s*)video;
507 *played_position = _video->played_position;
508 ret = MEDIA_CONTENT_ERROR_NONE;
510 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
511 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
517 int video_meta_set_played_count(video_meta_h video, int played_count)
519 int ret = MEDIA_CONTENT_ERROR_NONE;
520 video_meta_s *_video = (video_meta_s*)video;
522 if ((_video != NULL) && (played_count >= 0)) {
523 _video->played_count = played_count;
525 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
526 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
532 int video_meta_set_played_time(video_meta_h video, time_t played_time)
534 int ret = MEDIA_CONTENT_ERROR_NONE;
535 video_meta_s *_video = (video_meta_s*)video;
537 if ((_video != NULL) && (played_time >= 0)) {
538 _video->played_time = played_time;
540 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
541 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
547 int video_meta_set_played_position(video_meta_h video, int played_position)
549 int ret = MEDIA_CONTENT_ERROR_NONE;
550 video_meta_s *_video = (video_meta_s*)video;
552 if ((_video != NULL) && (played_position >= 0)) {
553 _video->played_position = played_position;
555 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
556 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
562 int video_meta_update_to_db(video_meta_h video)
564 int ret = MEDIA_CONTENT_ERROR_NONE;
565 video_meta_s *_video = (video_meta_s*)video;
568 if (_video != NULL && STRING_VALID(_video->media_id)) {
569 char storage_id[MEDIA_CONTENT_UUID_SIZE+1] = {0, };
570 memset(storage_id, 0x00, sizeof(storage_id));
572 ret = _media_db_get_storage_id_by_media_id(_video->media_id, storage_id);
573 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
575 sql = sqlite3_mprintf(UPDATE_AV_META_FROM_MEDIA, storage_id, _video->played_count, _video->played_time, _video->played_position, _video->media_id);
576 ret = _content_query_sql(sql);
577 SQLITE3_SAFE_FREE(sql);
579 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
580 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;