2 * Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
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.
17 #include <sys/types.h>
22 #include <glib/gprintf.h>
23 #include <metadata_extractor.h>
24 #include "mtp_media_info.h"
26 #include "mtp_support.h"
29 static bool __fill_media_id_cb(media_info_h media, void *user_data)
31 mtp_int32 ret = MEDIA_CONTENT_ERROR_NONE;
32 media_info_h *media_id = (media_info_h *)user_data;
33 DBG("INTO MEdia id retrieval callback");
34 ret = media_info_clone(media_id, media);
35 if (ret != MEDIA_CONTENT_ERROR_NONE) {
41 static void __scan_folder_cb(media_content_error_e err, void *user_data)
43 if (err != MEDIA_CONTENT_ERROR_NONE)
44 ERR("Scan folder callback returns error = [%d]\n", err);
49 mtp_bool _util_get_audio_metadata(const mtp_char *filepath,
50 comp_audio_meta_t *audio_data)
54 filter_h filter = NULL;
55 media_info_h media_item = NULL;
56 mtp_int32 ret = MEDIA_CONTENT_ERROR_NONE;
57 mtp_char condition[MEDIA_PATH_COND_MAX_LEN + 1];
59 retv_if(filepath == NULL, FALSE);
60 retv_if(audio_data == NULL, FALSE);
62 g_snprintf(condition, MEDIA_PATH_COND_MAX_LEN + 1, "%s\"%s\"",
63 MEDIA_PATH_COND, filepath);
65 ret = media_filter_create(&filter);
66 if (ret != MEDIA_CONTENT_ERROR_NONE) {
67 ERR("Fail to create filter ");
71 ret = media_filter_set_condition(filter, condition,
72 MEDIA_CONTENT_COLLATE_DEFAULT);
73 if (ret != MEDIA_CONTENT_ERROR_NONE) {
74 ERR("Failed to set condition ");
75 media_filter_destroy(filter);
79 ret = media_info_foreach_media_from_db(filter, __fill_media_id_cb,
81 if (ret != MEDIA_CONTENT_ERROR_NONE) {
82 ERR("media_info_foreach_media_from_db Fail");
83 media_filter_destroy(filter);
87 media_filter_destroy(filter);
89 if (media_item == NULL) {
90 ERR("File entry not found in db");
94 ret = media_info_get_audio(media_item, &audio);
95 if (ret != MEDIA_CONTENT_ERROR_NONE || audio == NULL) {
96 ERR("media_info_get_audio Fail or Audio is NULL");
97 media_info_destroy(media_item);
101 ret = audio_meta_get_album(audio, &(audio_data->commonmeta.album));
102 if (ret != MEDIA_CONTENT_ERROR_NONE) {
103 ERR("METADATA_ALBUM Fail");
107 ret = audio_meta_get_artist(audio, &(audio_data->commonmeta.artist));
108 if (ret != MEDIA_CONTENT_ERROR_NONE) {
109 ERR("METADATA_ARTIST Fail");
113 ret = audio_meta_get_bit_rate(audio,
114 &(audio_data->commonmeta.audio_bitrate));
115 if (ret != MEDIA_CONTENT_ERROR_NONE) {
116 ERR("METADATA_AUDIO_BITRATE Fail");
120 ret = audio_meta_get_composer(audio, &(audio_data->commonmeta.author));
121 if (ret != MEDIA_CONTENT_ERROR_NONE) {
122 ERR("METADATA_AUTHOR Fail");
126 ret = audio_meta_get_copyright(audio,
127 &(audio_data->commonmeta.copyright));
128 if (ret != MEDIA_CONTENT_ERROR_NONE) {
129 ERR("METADATA_COPYRIGHT Fail");
133 ret = audio_meta_get_duration(audio,
134 &(audio_data->commonmeta.duration));
135 if (ret != MEDIA_CONTENT_ERROR_NONE) {
136 ERR("METADATA_DURATION Fail");
140 ret = audio_meta_get_genre(audio, &(audio_data->commonmeta.genre));
141 if (ret != MEDIA_CONTENT_ERROR_NONE) {
142 ERR("METADATA_GENRE Fail");
146 ret = audio_meta_get_recorded_date(audio,
147 &(audio_data->commonmeta.year));
148 if (ret != MEDIA_CONTENT_ERROR_NONE) {
149 ERR("METADATA_RECDATE Fail");
153 ret = audio_meta_get_track_num(audio, &temp);
154 if (ret != MEDIA_CONTENT_ERROR_NONE) {
155 ERR("METADATA_TRACK_NUM Fail");
160 audio_data->audiometa.track = atoi(temp);
161 MTP_PAL_SAFE_FREE(temp);
164 ret = audio_meta_get_channel(audio,
165 &(audio_data->commonmeta.num_channel));
166 if (ret != MEDIA_CONTENT_ERROR_NONE) {
167 ERR("METADATA_NUM_CHANNEL Fail");
171 ret = audio_meta_get_sample_rate(audio,
172 &(audio_data->commonmeta.sample_rate));
173 if (ret != MEDIA_CONTENT_ERROR_NONE) {
174 ERR("METADATA_SAMPLE_RATE Fail");
178 audio_data->commonmeta.description = g_strdup("Unknown");
179 audio_data->commonmeta.audio_codec = 0;
181 audio_meta_destroy(audio);
182 media_info_destroy(media_item);
187 audio_meta_destroy(audio);
188 media_info_destroy(media_item);
192 mtp_bool _util_get_video_metadata(mtp_char *filepath,
193 comp_video_meta_t *video_data)
195 filter_h filter = NULL;
197 media_info_h media_item = NULL;
198 mtp_int32 ret = MEDIA_CONTENT_ERROR_NONE;
199 mtp_char condition[MEDIA_PATH_COND_MAX_LEN + 1];
201 retv_if(filepath == NULL, FALSE);
202 retv_if(video_data == NULL, FALSE);
204 g_snprintf(condition, sizeof(condition), "%s\"%s\"", MEDIA_PATH_COND, filepath);
206 ret = media_filter_create(&filter);
207 if (ret != MEDIA_CONTENT_ERROR_NONE) {
208 ERR("Fail to create filter ");
212 ret = media_filter_set_condition(filter, condition,
213 MEDIA_CONTENT_COLLATE_DEFAULT);
214 if (ret != MEDIA_CONTENT_ERROR_NONE) {
215 ERR("Failed to set condition ");
216 media_filter_destroy(filter);
220 ret = media_info_foreach_media_from_db(filter, __fill_media_id_cb,
222 if (ret != MEDIA_CONTENT_ERROR_NONE) {
223 ERR("media_info_foreach_media_from_db Fail");
224 media_filter_destroy(filter);
228 media_filter_destroy(filter);
230 if (media_item == NULL) {
231 ERR("File entry not found in db");
235 ret = media_info_get_video(media_item, &video);
236 if (ret != MEDIA_CONTENT_ERROR_NONE || video == NULL) {
237 ERR("media_info_get_audio Fail or video is NULL");
238 media_info_destroy(media_item);
242 ret = video_meta_get_album(video, &(video_data->commonmeta.album));
243 if (ret != MEDIA_CONTENT_ERROR_NONE) {
244 ERR("METADATA_ALBUM Fail");
248 ret = video_meta_get_artist(video, &(video_data->commonmeta.artist));
249 if (ret != MEDIA_CONTENT_ERROR_NONE) {
250 ERR("METADATA_ARTIST Fail");
255 video_data->commonmeta.audio_bitrate = 0;
257 ret = video_meta_get_composer(video, &(video_data->commonmeta.author));
258 if (ret != MEDIA_CONTENT_ERROR_NONE) {
259 ERR("METADATA_AUTHOR Fail");
263 ret = video_meta_get_copyright(video,
264 &(video_data->commonmeta.copyright));
265 if (ret != MEDIA_CONTENT_ERROR_NONE) {
266 ERR("METADATA_COPYRIGHT Fail");
271 video_data->commonmeta.description = g_strdup("Unknown");
273 ret = video_meta_get_duration(video,
274 &(video_data->commonmeta.duration));
275 if (ret != MEDIA_CONTENT_ERROR_NONE) {
276 ERR("METADATA_DURATION Fail");
280 ret = video_meta_get_genre(video, &(video_data->commonmeta.genre));
281 if (ret != MEDIA_CONTENT_ERROR_NONE) {
282 ERR("METADATA_GENRE Fail");
286 ret = video_meta_get_recorded_date(video,
287 &(video_data->commonmeta.year));
288 if (ret != MEDIA_CONTENT_ERROR_NONE) {
289 ERR("METADATA_REC_DATE Fail");
293 /* METADATA_AUDIO_CHANNELS */
294 video_data->commonmeta.num_channel = 0;
297 video_data->commonmeta.rating = 0;
299 /* METADATA_SAMPLE_RATE */
300 video_data->commonmeta.sample_rate = 0;
302 ret = video_meta_get_track_num(video, &(video_data->videometa.track));
303 if (ret != MEDIA_CONTENT_ERROR_NONE) {
304 ERR("METADATA_TRACK_NUM Fail");
308 ret = video_meta_get_bit_rate(video, &(video_data->videometa.video_br));
309 if (ret != MEDIA_CONTENT_ERROR_NONE) {
310 ERR("METADATA_VIDEO_BITRATE Fail");
315 video_data->videometa.video_fps = 0;
316 video_data->commonmeta.audio_codec = 0;
317 video_data->videometa.video_br = 0;
319 ret = video_meta_get_height(video, &(video_data->videometa.video_h));
320 if (ret != MEDIA_CONTENT_ERROR_NONE) {
321 ERR("METADATA_HEIGHT Fail");
325 ret = video_meta_get_width(video, &(video_data->videometa.video_w));
326 if (ret != MEDIA_CONTENT_ERROR_NONE) {
327 ERR("METADATA_WIDTH Fail");
331 video_meta_destroy(video);
332 media_info_destroy(media_item);
335 video_meta_destroy(video);
336 media_info_destroy(media_item);
341 static media_info_h __util_find_media_info(mtp_char *condition)
344 filter_h filter = NULL;
345 media_info_h media_item = NULL;
347 ret = media_filter_create(&filter);
348 if (ret != MEDIA_CONTENT_ERROR_NONE) {
349 ERR("Fail to create filter ");
354 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
355 if (ret != MEDIA_CONTENT_ERROR_NONE) {
356 ERR("media_filter_set_condition() Fail");
360 ret = media_filter_set_offset(filter, 0, 1);
361 if (ret != MEDIA_CONTENT_ERROR_NONE) {
362 ERR("media_filter_set_offset() Fail");
366 ret = media_info_foreach_media_from_db(filter, __fill_media_id_cb, &media_item);
367 if (ret != MEDIA_CONTENT_ERROR_NONE) {
368 ERR("media_info_foreach_media_from_db() Fail");
373 media_filter_destroy(filter);
379 static mtp_bool __util_get_height_width(image_meta_h image, int *h, int *w)
383 ret = image_meta_get_height(image, h);
384 if (ret != MEDIA_CONTENT_ERROR_NONE) {
385 ERR("image_meta_get_height() Fail(%d)", ret);
389 ret = image_meta_get_width(image, w);
390 if (ret != MEDIA_CONTENT_ERROR_NONE) {
391 ERR("image_meta_get_width() Fail(%d)", ret);
398 mtp_bool _util_get_image_ht_wt(const mtp_char *filepath,
399 image_meta_t *image_data)
403 media_info_h media_item;
404 mtp_char condition[MEDIA_PATH_COND_MAX_LEN + 1];
406 retv_if(filepath == NULL, FALSE);
407 retv_if(image_data == NULL, FALSE);
409 g_snprintf(condition, sizeof(condition), "%s\"%s\"", MEDIA_PATH_COND, filepath);
411 media_item = __util_find_media_info(condition);
412 if (media_item == NULL) {
413 ERR("File entry not found in db");
417 ret = media_info_get_image(media_item, &image);
418 if (ret != MEDIA_CONTENT_ERROR_NONE || image == NULL) {
419 ERR("media_info_get_image() Fail(%d) or image(%p) is NULL", ret, image);
420 media_info_destroy(media_item);
424 ret = __util_get_height_width(image, &image_data->ht, &image_data->wt);
426 ERR("__util_get_height_width() Fail");
428 media_info_destroy(media_item);
429 image_meta_destroy(image);
434 mtp_bool _util_get_audio_meta_from_extractor(const mtp_char *filepath,
435 comp_audio_meta_t *audio_data)
438 mtp_char *temp = NULL;
439 metadata_extractor_h metadata = NULL;
441 retv_if(filepath == NULL, FALSE);
442 retv_if(audio_data == NULL, FALSE);
444 ret = metadata_extractor_create(&metadata);
445 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
446 ERR("metadata extractor create Fail");
450 ret = metadata_extractor_set_path(metadata, filepath);
451 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
452 ERR("metadata extractor set path Fail");
456 ret = metadata_extractor_get_metadata(metadata, METADATA_ALBUM,
457 &(audio_data->commonmeta.album));
458 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
459 ERR("METADATA_ALBUM Fail");
463 ret = metadata_extractor_get_metadata(metadata, METADATA_ARTIST,
464 &(audio_data->commonmeta.artist));
465 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
466 ERR("METADATA_ARTIST Fail");
470 ret = metadata_extractor_get_metadata(metadata, METADATA_AUDIO_BITRATE,
472 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
473 ERR("METADATA_AUDIO_BITRATE Fail");
478 audio_data->commonmeta.audio_bitrate = atoi(temp);
479 MTP_PAL_SAFE_FREE(temp);
482 ret = metadata_extractor_get_metadata(metadata, METADATA_AUTHOR,
483 &(audio_data->commonmeta.author));
484 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
485 ERR("METADATA_AUTHOR Fail");
489 ret = metadata_extractor_get_metadata(metadata, METADATA_COPYRIGHT,
490 &(audio_data->commonmeta.copyright));
491 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
492 ERR("METADATA_COPYRIGHT Fail");
496 ret = metadata_extractor_get_metadata(metadata, METADATA_DESCRIPTION,
497 &(audio_data->commonmeta.description));
498 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
499 ERR("METADATA_DESCRIPTION Fail");
503 ret = metadata_extractor_get_metadata(metadata, METADATA_DURATION,
505 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
506 ERR("METADATA_DURATION Fail");
511 audio_data->commonmeta.duration = atoi(temp);
512 MTP_PAL_SAFE_FREE(temp);
515 ret = metadata_extractor_get_metadata(metadata, METADATA_GENRE,
516 &(audio_data->commonmeta.genre));
517 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
518 ERR("METADATA_GENRE Fail");
522 ret = metadata_extractor_get_metadata(metadata, METADATA_RECDATE,
523 &(audio_data->commonmeta.year));
524 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
525 ERR("METADATA_RECDATE Fail");
529 ret = metadata_extractor_get_metadata(metadata, METADATA_TRACK_NUM,
531 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
532 ERR("METADATA_TRACK_NUM Fail");
536 audio_data->audiometa.track = atoi(temp);
537 MTP_PAL_SAFE_FREE(temp);
540 ret = metadata_extractor_get_metadata(metadata, METADATA_RATING,
542 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
543 ERR("METADATA_RATING Fail");
547 audio_data->commonmeta.rating = atoi(temp);
548 MTP_PAL_SAFE_FREE(temp);
551 ret = metadata_extractor_get_metadata(metadata,
552 METADATA_AUDIO_SAMPLERATE, &temp);
553 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
554 ERR("METADATA_SAMPLERATE Fail");
558 audio_data->commonmeta.sample_rate = atoi(temp);
559 MTP_PAL_SAFE_FREE(temp);
562 ret = metadata_extractor_get_metadata(metadata, METADATA_AUDIO_CHANNELS,
564 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
565 ERR("METADATA_CHANNELS Fail");
569 audio_data->commonmeta.num_channel = atoi(temp);
570 MTP_PAL_SAFE_FREE(temp);
573 audio_data->commonmeta.audio_codec = 0;
575 metadata_extractor_destroy(metadata);
579 metadata_extractor_destroy(metadata);
583 mtp_bool _util_get_video_meta_from_extractor(const mtp_char *filepath,
584 comp_video_meta_t *video_data)
587 mtp_char *temp = NULL;
588 metadata_extractor_h metadata = NULL;
590 retv_if(filepath == NULL, FALSE);
591 retv_if(video_data == NULL, FALSE);
593 ret = metadata_extractor_create(&metadata);
594 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
595 ERR("metadata extractor create Fail");
599 ret = metadata_extractor_set_path(metadata, filepath);
600 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
601 ERR("metadata extractor set path Fail");
605 ret = metadata_extractor_get_metadata(metadata, METADATA_ALBUM,
606 &(video_data->commonmeta.album));
607 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
608 ERR("METADATA_ALBUM Fail");
613 ret = metadata_extractor_get_metadata(metadata, METADATA_ARTIST,
614 &(video_data->commonmeta.artist));
615 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
616 ERR("METADATA_ARTIST Fail");
620 ret = metadata_extractor_get_metadata(metadata, METADATA_AUDIO_BITRATE,
622 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
623 ERR("METADATA_AUDIO_BITRATE Fail");
627 video_data->commonmeta.audio_bitrate = atoi(temp);
628 MTP_PAL_SAFE_FREE(temp);
631 ret = metadata_extractor_get_metadata(metadata, METADATA_AUTHOR,
632 &(video_data->commonmeta.author));
633 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
634 ERR("METADATA_AUTHOR Fail");
638 ret = metadata_extractor_get_metadata(metadata, METADATA_COPYRIGHT,
639 &(video_data->commonmeta.copyright));
640 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
641 ERR("METADATA_COPYRIGHT Fail");
645 ret = metadata_extractor_get_metadata(metadata, METADATA_DESCRIPTION,
646 &(video_data->commonmeta.description));
647 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
648 ERR("METADATA_DESCRIPTION Fail");
652 ret = metadata_extractor_get_metadata(metadata, METADATA_DURATION,
654 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
655 ERR("METADATA_DURATION Fail");
659 video_data->commonmeta.duration = atoi(temp);
660 MTP_PAL_SAFE_FREE(temp);
663 ret = metadata_extractor_get_metadata(metadata, METADATA_GENRE,
664 &(video_data->commonmeta.genre));
665 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
666 ERR("METADATA_GENRE Fail");
670 ret = metadata_extractor_get_metadata(metadata, METADATA_RECDATE,
671 &(video_data->commonmeta.year));
672 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
673 ERR("METADATA_RECDATE Fail");
677 ret = metadata_extractor_get_metadata(metadata, METADATA_AUDIO_CHANNELS,
679 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
680 ERR("METADATA_AUDIO_CHANNELS Fail");
684 video_data->commonmeta.num_channel = atoi(temp);
685 MTP_PAL_SAFE_FREE(temp);
688 ret = metadata_extractor_get_metadata(metadata, METADATA_RATING,
690 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
691 ERR("METADATA_RATING Fail");
696 video_data->commonmeta.rating = atoi(temp);
697 MTP_PAL_SAFE_FREE(temp);
700 ret = metadata_extractor_get_metadata(metadata,
701 METADATA_AUDIO_SAMPLERATE, &temp);
702 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
703 ERR("METADATA_AUDIO_SAMPLERATE Fail");
707 video_data->commonmeta.sample_rate = atoi(temp);
708 MTP_PAL_SAFE_FREE(temp);
711 ret = metadata_extractor_get_metadata(metadata, METADATA_TRACK_NUM,
712 &(video_data->videometa.track));
713 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
714 ERR("METADATA_TRACK_NUM Fail");
718 ret = metadata_extractor_get_metadata(metadata, METADATA_VIDEO_BITRATE,
720 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
721 ERR("METADATA_VIDEO_BITRATE Fail");
725 video_data->videometa.video_br = atoi(temp);
726 MTP_PAL_SAFE_FREE(temp);
729 ret = metadata_extractor_get_metadata(metadata, METADATA_VIDEO_FPS,
731 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
732 ERR("METADATA_VIDEO_FPS Fail");
736 video_data->videometa.video_fps = atoi(temp);
737 MTP_PAL_SAFE_FREE(temp);
740 ret = metadata_extractor_get_metadata(metadata, METADATA_VIDEO_HEIGHT,
742 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
743 ERR("METADATA_VIDEO_HEIGHT Fail");
747 video_data->videometa.video_h = atoi(temp);
748 MTP_PAL_SAFE_FREE(temp);
751 ret = metadata_extractor_get_metadata(metadata, METADATA_VIDEO_WIDTH,
753 if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
754 ERR("METADATA_VIDEO_WIDTH Fail");
758 video_data->videometa.video_w = atoi(temp);
759 MTP_PAL_SAFE_FREE(temp);
762 metadata_extractor_destroy(metadata);
766 metadata_extractor_destroy(metadata);
771 void _util_flush_db(void)
773 _util_add_file_to_db(NULL);
774 _util_delete_file_from_db(NULL);
777 void _util_delete_file_from_db(const mtp_char *filepath)
780 media_info_h info = NULL;
781 char *media_id = NULL;
782 mtp_char condition[MEDIA_PATH_COND_MAX_LEN + 1];
784 ret_if(NULL == filepath);
786 g_snprintf(condition, sizeof(condition), "%s\"%s\"", MEDIA_PATH_COND, filepath);
788 info = __util_find_media_info(condition);
790 ERR("File entry not found in db");
794 ret = media_info_get_media_id(info, &media_id);
795 if (MEDIA_CONTENT_ERROR_NONE != ret)
796 ERR("media_info_get_media_id() Fail(%d)", ret);
798 ret = media_info_delete_from_db(media_id);
799 if (MEDIA_CONTENT_ERROR_NONE != ret)
800 ERR("media_info_delete_from_db() Fail(%d)", ret);
806 media_info_destroy(info);
811 void _util_add_file_to_db(const mtp_char *filepath)
814 media_info_h info = NULL;
816 ret_if(NULL == filepath);
818 ret = media_info_insert_to_db(filepath, &info);
819 if (MEDIA_CONTENT_ERROR_NONE != ret)
820 ERR("media_info_insert_to_db() Fail(%d)", ret);
823 media_info_destroy(info);
828 void _util_scan_folder_contents_in_db(const mtp_char *filepath)
832 ret_if(filepath == NULL);
834 ret = media_content_scan_folder(filepath, true, __scan_folder_cb, NULL);
835 if (ret != MEDIA_CONTENT_ERROR_NONE)
836 ERR("media_content_scan_folder Fail : %d\n", ret);
841 void _util_free_common_meta(common_meta_t *metadata)
843 MTP_PAL_SAFE_FREE(metadata->album);
844 MTP_PAL_SAFE_FREE(metadata->artist);
845 MTP_PAL_SAFE_FREE(metadata->author);
846 MTP_PAL_SAFE_FREE(metadata->copyright);
847 MTP_PAL_SAFE_FREE(metadata->description);
848 MTP_PAL_SAFE_FREE(metadata->genre);
849 MTP_PAL_SAFE_FREE(metadata->year);
853 void _util_free_video_meta(video_meta_t *video)
855 MTP_PAL_SAFE_FREE(video->track);