2 * Copyright (c) 2016 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 using System.Runtime.InteropServices;
19 using Tizen.Content.MediaContent;
21 internal static partial class Interop
23 internal static partial class MediaInfo
25 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
26 internal delegate void FaceDetectionCompletedCallback(MediaContentError error, int count, IntPtr userData);
28 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
29 internal delegate void InsertCompletedCallback(MediaContentError error, IntPtr userData);
31 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_to_db")]
32 internal static extern MediaContentError Insert(string filePath, out MediaInfoHandle info);
34 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_batch_to_db")]
35 internal static extern MediaContentError BatchInsert(string[] filePathArray, int arrayLength,
36 InsertCompletedCallback callback, IntPtr userData = default(IntPtr));
39 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_destroy")]
40 internal static extern MediaContentError Destroy(IntPtr handle);
42 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_count_from_db")]
43 internal static extern MediaContentError GetMediaCount(FilterHandle filter, out int mediaCount);
45 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_media_from_db")]
46 internal static extern MediaContentError ForeachMedia(FilterHandle filter, Common.ItemCallback callback,
47 IntPtr userData = default(IntPtr));
49 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_tag_count_from_db")]
50 internal static extern MediaContentError GetTagCount(string mediaId, FilterHandle filter, out int tagCount);
52 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_tag_from_db")]
53 internal static extern MediaContentError ForeachTags(string mediaId, FilterHandle filter,
54 Common.ItemCallback callback, IntPtr userData = default(IntPtr));
56 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_bookmark_count_from_db")]
57 internal static extern MediaContentError GetBookmarkCount(string mediaId, FilterHandle filter, out int bookmarkCount);
59 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_bookmark_from_db")]
60 internal static extern MediaContentError ForeachBookmarks(string mediaId, FilterHandle filter,
61 Common.ItemCallback callback, IntPtr userData = default(IntPtr));
63 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_face_count_from_db")]
64 internal static extern MediaContentError GetFaceCount(string mediaId, FilterHandle filter, out int bookmarkCount);
66 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_face_from_db")]
67 internal static extern MediaContentError ForeachFaces(string mediaId, FilterHandle filter,
68 Common.ItemCallback callback, IntPtr userData = default(IntPtr));
70 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_image")]
71 internal static extern MediaContentError GetImage(MediaInfoHandle handle, out IntPtr imageHandle);
73 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_video")]
74 internal static extern MediaContentError GetVideo(MediaInfoHandle handle, out IntPtr videoHandle);
76 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_audio")]
77 internal static extern MediaContentError GetAudio(MediaInfoHandle handle, out IntPtr audioHandle);
79 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_book")]
80 internal static extern MediaContentError GetBook(MediaInfoHandle handle, out IntPtr bookHandle);
82 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_id")]
83 internal static extern MediaContentError GetMediaId(MediaInfoHandle mediaInformationHandle, out IntPtr mediaId);
85 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_file_path")]
86 internal static extern MediaContentError GetFilePath(MediaInfoHandle mediaInformationHandle, out IntPtr filePath);
88 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_display_name")]
89 internal static extern MediaContentError GetDisplayName(MediaInfoHandle mediaInformationHandle, out IntPtr name);
91 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_type")]
92 internal static extern MediaContentError GetMediaType(MediaInfoHandle mediaInformationHandle, out MediaType type);
94 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_mime_type")]
95 internal static extern MediaContentError GetMimeType(MediaInfoHandle mediaInformationHandle, out IntPtr mimeType);
97 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_size")]
98 internal static extern MediaContentError GetSize(MediaInfoHandle mediaInformationHandle, out long size);
100 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_added_time")]
101 internal static extern MediaContentError GetAddedTime(MediaInfoHandle handle, out IntPtr posixTime);
103 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_modified_time")]
104 internal static extern MediaContentError GetModifiedTime(MediaInfoHandle handle, out IntPtr posixTime);
106 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_timeline")]
107 internal static extern MediaContentError GetTimeline(MediaInfoHandle handle, out IntPtr posixTime);
109 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_thumbnail_path")]
110 internal static extern MediaContentError GetThumbnailPath(MediaInfoHandle mediaInformationHandle, out IntPtr filePath);
112 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_description")]
113 internal static extern MediaContentError GetDescription(MediaInfoHandle mediaInformationHandle, out IntPtr description);
115 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_longitude")]
116 internal static extern MediaContentError GetLongitude(MediaInfoHandle mediaInformationHandle, out double longitude);
118 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_latitude")]
119 internal static extern MediaContentError GetLatitude(MediaInfoHandle mediaInformationHandle, out double latitude);
121 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_altitude")]
122 internal static extern MediaContentError GetAltitude(MediaInfoHandle mediaInformationHandle, out double altitude);
124 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_rating")]
125 internal static extern MediaContentError GetRating(MediaInfoHandle mediaInformationHandle, out int rating);
127 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_favorite")]
128 internal static extern MediaContentError GetFavorite(MediaInfoHandle mediaInformationHandle, out bool favorite);
130 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_title")]
131 internal static extern MediaContentError GetTitle(MediaInfoHandle mediaInformationHandle, out IntPtr title);
133 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_is_drm")]
134 internal static extern MediaContentError IsDrm(MediaInfoHandle mediaInformationHandle, out bool isDrm);
136 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_from_db")]
137 internal static extern MediaContentError GetMediaFromDB(string mediaId, out MediaInfoHandle handle);
139 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_favorite")]
140 internal static extern MediaContentError SetFavorite(MediaInfoHandle mediaInformationHandle, bool favorite);
142 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_update_to_db")]
143 internal static extern MediaContentError UpdateToDB(MediaInfoHandle mediaInformationHandle);
145 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_move_to_db")]
146 internal static extern MediaContentError MoveToDB(MediaInfoHandle mediaInformationHandle, string dstPath);
148 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_generate_thumbnail")]
149 internal static extern MediaContentError GenerateThumbnail(MediaInfoHandle handle);
151 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_start_face_detection")]
152 internal static extern MediaContentError StartFaceDetection(MediaInfoHandle handle,
153 FaceDetectionCompletedCallback callback, IntPtr userData = default(IntPtr));
155 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_cancel_face_detection")]
156 internal static extern MediaContentError CancelFaceDetection(MediaInfoHandle handle);
159 internal sealed class MediaInfoHandle : SafeHandle
161 public MediaInfoHandle()
162 : base(IntPtr.Zero, true)
166 public MediaInfoHandle(IntPtr handle)
172 public override bool IsInvalid
174 get { return handle == IntPtr.Zero; }
177 protected override bool ReleaseHandle()
179 MediaInfo.Destroy(handle);