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 ThumbnailCompletedCallback(MediaContentError error, string filePath, IntPtr userData);
28 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
29 internal delegate void FaceDetectionCompletedCallback(MediaContentError error, int count, IntPtr userData);
31 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
32 internal delegate void InsertCompletedCallback(MediaContentError error, IntPtr userData);
34 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_to_db")]
35 internal static extern MediaContentError Insert(string filePath, out MediaInfoHandle info);
37 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_batch_to_db")]
38 internal static extern MediaContentError BatchInsert(string[] filePathArray, int arrayLength,
39 InsertCompletedCallback callback, IntPtr userData = default(IntPtr));
41 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_delete_from_db")]
42 internal static extern MediaContentError Delete(string mediaId);
44 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_destroy")]
45 internal static extern MediaContentError Destroy(IntPtr handle);
47 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_count_from_db")]
48 internal static extern MediaContentError GetMediaCount(FilterHandle filter, out int mediaCount);
50 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_media_from_db")]
51 internal static extern MediaContentError ForeachMedia(FilterHandle filter, Common.ItemCallback callback,
52 IntPtr userData = default(IntPtr));
54 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_tag_count_from_db")]
55 internal static extern MediaContentError GetTagCount(string mediaId, FilterHandle filter, out int tagCount);
57 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_tag_from_db")]
58 internal static extern MediaContentError ForeachTags(string mediaId, FilterHandle filter,
59 Common.ItemCallback callback, IntPtr userData = default(IntPtr));
61 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_bookmark_count_from_db")]
62 internal static extern MediaContentError GetBookmarkCount(string mediaId, FilterHandle filter, out int bookmarkCount);
64 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_bookmark_from_db")]
65 internal static extern MediaContentError ForeachBookmarks(string mediaId, FilterHandle filter,
66 Common.ItemCallback callback, IntPtr userData = default(IntPtr));
68 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_face_count_from_db")]
69 internal static extern MediaContentError GetFaceCount(string mediaId, FilterHandle filter, out int bookmarkCount);
71 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_face_from_db")]
72 internal static extern MediaContentError ForeachFaces(string mediaId, FilterHandle filter,
73 Common.ItemCallback callback, IntPtr userData = default(IntPtr));
75 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_image")]
76 internal static extern MediaContentError GetImage(MediaInfoHandle handle, out IntPtr imageHandle);
78 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_video")]
79 internal static extern MediaContentError GetVideo(MediaInfoHandle handle, out IntPtr videoHandle);
81 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_audio")]
82 internal static extern MediaContentError GetAudio(MediaInfoHandle handle, out IntPtr audioHandle);
84 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_id")]
85 internal static extern MediaContentError GetMediaId(MediaInfoHandle mediaInformationHandle, out IntPtr mediaId);
87 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_file_path")]
88 internal static extern MediaContentError GetFilePath(MediaInfoHandle mediaInformationHandle, out IntPtr filePath);
90 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_display_name")]
91 internal static extern MediaContentError GetDisplayName(MediaInfoHandle mediaInformationHandle, out IntPtr name);
93 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_type")]
94 internal static extern MediaContentError GetMediaType(MediaInfoHandle mediaInformationHandle, out MediaType type);
96 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_mime_type")]
97 internal static extern MediaContentError GetMimeType(MediaInfoHandle mediaInformationHandle, out IntPtr mimeType);
99 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_size")]
100 internal static extern MediaContentError GetSize(MediaInfoHandle mediaInformationHandle, out long size);
102 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_added_time")]
103 internal static extern MediaContentError GetAddedTime(MediaInfoHandle handle, out IntPtr posixTime);
105 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_modified_time")]
106 internal static extern MediaContentError GetModifiedTime(MediaInfoHandle handle, out IntPtr posixTime);
108 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_timeline")]
109 internal static extern MediaContentError GetTimeline(MediaInfoHandle handle, out IntPtr posixTime);
111 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_thumbnail_path")]
112 internal static extern MediaContentError GetThumbnailPath(MediaInfoHandle mediaInformationHandle, out IntPtr filePath);
114 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_description")]
115 internal static extern MediaContentError GetDescription(MediaInfoHandle mediaInformationHandle, out IntPtr description);
117 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_longitude")]
118 internal static extern MediaContentError GetLongitude(MediaInfoHandle mediaInformationHandle, out double longitude);
120 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_latitude")]
121 internal static extern MediaContentError GetLatitude(MediaInfoHandle mediaInformationHandle, out double latitude);
123 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_altitude")]
124 internal static extern MediaContentError GetAltitude(MediaInfoHandle mediaInformationHandle, out double altitude);
126 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_weather")]
127 internal static extern MediaContentError GetWeather(MediaInfoHandle mediaInformationHandle, out IntPtr weather);
129 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_rating")]
130 internal static extern MediaContentError GetRating(MediaInfoHandle mediaInformationHandle, out int rating);
132 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_favorite")]
133 internal static extern MediaContentError GetFavorite(MediaInfoHandle mediaInformationHandle, out bool favorite);
135 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_provider")]
136 internal static extern MediaContentError GetProvider(MediaInfoHandle mediaInformationHandle, out IntPtr provider);
138 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_title")]
139 internal static extern MediaContentError GetTitle(MediaInfoHandle mediaInformationHandle, out IntPtr title);
141 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_category")]
142 internal static extern MediaContentError GetCategory(MediaInfoHandle mediaInformationHandle, out IntPtr category);
144 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_location_tag")]
145 internal static extern MediaContentError GetLocationTag(MediaInfoHandle mediaInformationHandle, out IntPtr locationTag);
147 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_age_rating")]
148 internal static extern MediaContentError GetAgeRating(MediaInfoHandle mediaInformationHandle, out IntPtr ageRating);
150 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_id")]
151 internal static extern MediaContentError GetStorageId(MediaInfoHandle mediaInformationHandle, out IntPtr storageId);
153 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_is_drm")]
154 internal static extern MediaContentError IsDrm(MediaInfoHandle mediaInformationHandle, out bool isDrm);
156 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_type")]
157 internal static extern MediaContentError GetStorageType(MediaInfoHandle mediaInformationHandle, out StorageType storageType);
159 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_from_db")]
160 internal static extern MediaContentError GetMediaFromDB(string mediaId, out MediaInfoHandle handle);
162 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_weather")]
163 internal static extern MediaContentError SetWeather(MediaInfoHandle mediaInformationHandle, string weather);
165 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_favorite")]
166 internal static extern MediaContentError SetFavorite(MediaInfoHandle mediaInformationHandle, bool favorite);
168 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_provider")]
169 internal static extern MediaContentError SetProvider(MediaInfoHandle mediaInformationHandle, string provider);
171 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_category")]
172 internal static extern MediaContentError SetCategory(MediaInfoHandle mediaInformationHandle, string category);
174 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_location_tag")]
175 internal static extern MediaContentError SetLocationTag(MediaInfoHandle mediaInformationHandle, string locationTag);
177 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_age_rating")]
178 internal static extern MediaContentError SetAgeRating(MediaInfoHandle mediaInformationHandle, string ageRating);
180 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_update_to_db")]
181 internal static extern MediaContentError UpdateToDB(MediaInfoHandle mediaInformationHandle);
183 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_move_to_db")]
184 internal static extern MediaContentError MoveToDB(MediaInfoHandle mediaInformationHandle, string dstPath);
186 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_create_thumbnail")]
187 internal static extern MediaContentError CreateThumbnail(MediaInfoHandle handle,
188 ThumbnailCompletedCallback callback, IntPtr userData = default(IntPtr));
190 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_cancel_thumbnail")]
191 internal static extern MediaContentError CancelThumbnail(MediaInfoHandle mediaInformationHandle);
193 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_start_face_detection")]
194 internal static extern MediaContentError StartFaceDetection(MediaInfoHandle handle,
195 FaceDetectionCompletedCallback callback, IntPtr userData = default(IntPtr));
197 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_cancel_face_detection")]
198 internal static extern MediaContentError CancelFaceDetection(MediaInfoHandle handle);
201 internal sealed class MediaInfoHandle : SafeHandle
203 public MediaInfoHandle()
204 : base(IntPtr.Zero, true)
208 public MediaInfoHandle(IntPtr handle)
214 public override bool IsInvalid
216 get { return handle == IntPtr.Zero; }
219 protected override bool ReleaseHandle()
221 MediaInfo.Destroy(handle);