1 /// Copyright 2016 by Samsung Electronics, Inc.,
3 /// This software is the confidential and proprietary information
4 /// of Samsung Electronics, Inc.("Confidential Information"). You
5 /// shall not disclose such Confidential Information and shall use
6 /// it only in accordance with the terms of the license agreement
7 /// you entered into with Samsung.
11 using System.Runtime.InteropServices;
12 using Tizen.Content.MediaContent;
14 internal static partial class Interop
16 internal static partial class MediaInformation
18 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
19 internal delegate void MediaThumbnailCompletedCallback(MediaContentError error, string filePath, IntPtr UserData);
21 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
22 internal delegate bool MediaTagCallback(IntPtr tagHandle, IntPtr UserData);
24 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
25 internal delegate bool MediaBookMarkCallback(IntPtr bookmarkHandle, IntPtr UserData);
27 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
28 internal delegate bool MediaFaceCallback(IntPtr bookmarkHandle, IntPtr UserData);
30 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
31 internal delegate void MediaInsertCompletedCallback(MediaContentError error, IntPtr UserData);
33 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
34 internal delegate void MediaInsertBurstShotCompletedCallback(MediaContentError error, IntPtr UserData);
36 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
37 internal delegate bool MediaInformationCallback(IntPtr mediaInformationHandle, IntPtr UserData);
39 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_to_db", CallingConvention = CallingConvention.Cdecl)]
40 internal static extern int Insert(string filePath, out SafeMediaInformationHandle info);
42 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_batch_to_db", CallingConvention = CallingConvention.Cdecl)]
43 internal static extern int BatchInsert(string[] filePathArray, int arrayLength, MediaInsertCompletedCallback callback, IntPtr userData);
45 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_burst_shot_to_db", CallingConvention = CallingConvention.Cdecl)]
46 internal static extern int BurstShotInsert(string[] filePathArray, int arrayLength, MediaInsertBurstShotCompletedCallback callback, IntPtr userData);
48 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_delete_from_db", CallingConvention = CallingConvention.Cdecl)]
49 internal static extern int Delete(string mediaId);
51 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_delete_batch_from_db", CallingConvention = CallingConvention.Cdecl)]
52 internal static extern int BatchDelete(IntPtr filter);
54 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_destroy", CallingConvention = CallingConvention.Cdecl)]
55 internal static extern int Destroy(IntPtr mediaInformationHandle);
57 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_clone", CallingConvention = CallingConvention.Cdecl)]
58 internal static extern int Clone(out SafeMediaInformationHandle dst, IntPtr src);
60 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_count_from_db", CallingConvention = CallingConvention.Cdecl)]
61 internal static extern int GetMediaCount(IntPtr filter, out int mediaCount);
63 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_media_from_db", CallingConvention = CallingConvention.Cdecl)]
64 internal static extern int GetAllMedia(IntPtr filter, MediaInformationCallback callback, IntPtr userData);
66 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_tag_count_from_db", CallingConvention = CallingConvention.Cdecl)]
67 internal static extern int GetTagCount(string mediaId, IntPtr filter, out int tagCount);
69 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_tag_from_db", CallingConvention = CallingConvention.Cdecl)]
70 internal static extern int GetAllTags(string mediaId, IntPtr filter, MediaTagCallback callback, IntPtr userData);
72 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_bookmark_count_from_db", CallingConvention = CallingConvention.Cdecl)]
73 internal static extern int GetBookmarkCount(string mediaId, IntPtr filter, out int bookmarkCount);
75 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_bookmark_from_db", CallingConvention = CallingConvention.Cdecl)]
76 internal static extern int GetAllBookmarks(string mediaId, IntPtr filter, MediaBookMarkCallback callback, IntPtr userData);
78 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_face_count_from_db", CallingConvention = CallingConvention.Cdecl)]
79 internal static extern int GetFaceCount(string mediaId, IntPtr filter, out int bookmarkCount);
81 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_bookmark_from_db", CallingConvention = CallingConvention.Cdecl)]
82 internal static extern int GetAllFaces(string mediaId, IntPtr filter, MediaFaceCallback callback, IntPtr userData);
84 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_image", CallingConvention = CallingConvention.Cdecl)]
85 internal static extern int GetImage(IntPtr mediaInformationHandle, out Interop.ImageInformation.SafeImageInformationHandle image);
87 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_video", CallingConvention = CallingConvention.Cdecl)]
88 internal static extern int GetVideo(IntPtr mediaInformationHandle, out Interop.VideoInformation.SafeVideoInformationHandle video);
90 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_audio", CallingConvention = CallingConvention.Cdecl)]
91 internal static extern int GetAudio(IntPtr mediaInformationHandle, out Interop.AudioInformation.SafeAudioInformationHandle audio);
93 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_id", CallingConvention = CallingConvention.Cdecl)]
94 internal static extern int GetMediaId(SafeMediaInformationHandle mediaInformationHandle, out string mediaId);
96 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_file_path", CallingConvention = CallingConvention.Cdecl)]
97 internal static extern int GetFilePath(SafeMediaInformationHandle mediaInformationHandle, out string filePath);
99 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_display_name", CallingConvention = CallingConvention.Cdecl)]
100 internal static extern int GetDisplayName(SafeMediaInformationHandle mediaInformationHandle, out string name);
102 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_type", CallingConvention = CallingConvention.Cdecl)]
103 internal static extern int GetMediaType(SafeMediaInformationHandle mediaInformationHandle, out MediaContentType type);
105 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_mime_type", CallingConvention = CallingConvention.Cdecl)]
106 internal static extern int GetMimeType(SafeMediaInformationHandle mediaInformationHandle, out string mimeType);
108 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_size", CallingConvention = CallingConvention.Cdecl)]
109 internal static extern int GetSize(SafeMediaInformationHandle mediaInformationHandle, out long size);
111 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_added_time", CallingConvention = CallingConvention.Cdecl)]
112 internal static extern int GetAddedTime(SafeMediaInformationHandle mediaInformationHandle, out int addedTime);
114 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_modified_time", CallingConvention = CallingConvention.Cdecl)]
115 internal static extern int GetModifiedTime(SafeMediaInformationHandle mediaInformationHandle, out int time);
117 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_timeline", CallingConvention = CallingConvention.Cdecl)]
118 internal static extern int GetTimeline(SafeMediaInformationHandle mediaInformationHandle, out int time);
120 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_thumbnail_path", CallingConvention = CallingConvention.Cdecl)]
121 internal static extern int GetThumbnailPath(SafeMediaInformationHandle mediaInformationHandle, out string filePath);
123 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_description", CallingConvention = CallingConvention.Cdecl)]
124 internal static extern int GetDescription(SafeMediaInformationHandle mediaInformationHandle, out string description);
126 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_longitude", CallingConvention = CallingConvention.Cdecl)]
127 internal static extern int GetLongitude(SafeMediaInformationHandle mediaInformationHandle, out double longitude);
129 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_latitude", CallingConvention = CallingConvention.Cdecl)]
130 internal static extern int GetLatitude(SafeMediaInformationHandle mediaInformationHandle, out double latitude);
132 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_altitude", CallingConvention = CallingConvention.Cdecl)]
133 internal static extern int GetAltitude(SafeMediaInformationHandle mediaInformationHandle, out double altitude);
135 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_weather", CallingConvention = CallingConvention.Cdecl)]
136 internal static extern int GetWeather(SafeMediaInformationHandle mediaInformationHandle, out string weather);
138 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_rating", CallingConvention = CallingConvention.Cdecl)]
139 internal static extern int GetRating(SafeMediaInformationHandle mediaInformationHandle, out int rating);
141 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_favorite", CallingConvention = CallingConvention.Cdecl)]
142 internal static extern int GetFavorite(SafeMediaInformationHandle mediaInformationHandle, out bool favorite);
144 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_author", CallingConvention = CallingConvention.Cdecl)]
145 internal static extern int GetAuthor(SafeMediaInformationHandle mediaInformationHandle, out string author);
147 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_provider", CallingConvention = CallingConvention.Cdecl)]
148 internal static extern int GetProvider(SafeMediaInformationHandle mediaInformationHandle, out string provider);
150 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_content_name", CallingConvention = CallingConvention.Cdecl)]
151 internal static extern int GetContentName(SafeMediaInformationHandle mediaInformationHandle, out string contentName);
153 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_title", CallingConvention = CallingConvention.Cdecl)]
154 internal static extern int GetTitle(SafeMediaInformationHandle mediaInformationHandle, out string title);
156 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_category", CallingConvention = CallingConvention.Cdecl)]
157 internal static extern int GetCategory(SafeMediaInformationHandle mediaInformationHandle, out string category);
159 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_location_tag", CallingConvention = CallingConvention.Cdecl)]
160 internal static extern int GetLocationTag(SafeMediaInformationHandle mediaInformationHandle, out string locationTag);
162 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_age_rating", CallingConvention = CallingConvention.Cdecl)]
163 internal static extern int GetAgeRating(SafeMediaInformationHandle mediaInformationHandle, out string ageRating);
165 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_keyword", CallingConvention = CallingConvention.Cdecl)]
166 internal static extern int GetKeyword(SafeMediaInformationHandle mediaInformationHandle, out string keyword);
168 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_id", CallingConvention = CallingConvention.Cdecl)]
169 internal static extern int GetStorageId(SafeMediaInformationHandle mediaInformationHandle, out string storageId);
171 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_is_drm", CallingConvention = CallingConvention.Cdecl)]
172 internal static extern int IsDrm(SafeMediaInformationHandle mediaInformationHandle, out bool isDrm);
174 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_type", CallingConvention = CallingConvention.Cdecl)]
175 internal static extern int GetStorageType(SafeMediaInformationHandle mediaInformationHandle, out ContentStorageType storageType);
177 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_played_count", CallingConvention = CallingConvention.Cdecl)]
178 internal static extern int GetPlayedCount(SafeMediaInformationHandle mediaInformationHandle, out int playedCount);
180 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_played_time", CallingConvention = CallingConvention.Cdecl)]
181 internal static extern int GetPlayedTime(SafeMediaInformationHandle mediaInformationHandle, out int playedTime);
183 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_from_db", CallingConvention = CallingConvention.Cdecl)]
184 internal static extern int GetMediaFromDB(string mediaId, out SafeMediaInformationHandle mediaInformationHandle);
186 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_increase_played_count", CallingConvention = CallingConvention.Cdecl)]
187 internal static extern int IncreasePlayedCount(SafeMediaInformationHandle mediaInformationHandle);
189 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_played_time", CallingConvention = CallingConvention.Cdecl)]
190 internal static extern int SetPlayedTime(SafeMediaInformationHandle mediaInformationHandle);
192 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_display_name", CallingConvention = CallingConvention.Cdecl)]
193 internal static extern int SetDisplayName(SafeMediaInformationHandle mediaInformationHandle, string displayName);
195 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_description", CallingConvention = CallingConvention.Cdecl)]
196 internal static extern int SetDescription(SafeMediaInformationHandle mediaInformationHandle, string description);
198 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_longitude", CallingConvention = CallingConvention.Cdecl)]
199 internal static extern int SetLongitude(SafeMediaInformationHandle mediaInformationHandle, double longitude);
201 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_latitude", CallingConvention = CallingConvention.Cdecl)]
202 internal static extern int SetLatitude(SafeMediaInformationHandle mediaInformationHandle, double latitude);
204 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_altitude", CallingConvention = CallingConvention.Cdecl)]
205 internal static extern int SetAltitude(SafeMediaInformationHandle mediaInformationHandle, double altitude);
207 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_weather", CallingConvention = CallingConvention.Cdecl)]
208 internal static extern int SetWeather(SafeMediaInformationHandle mediaInformationHandle, string weather);
210 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_rating", CallingConvention = CallingConvention.Cdecl)]
211 internal static extern int SetRating(SafeMediaInformationHandle mediaInformationHandle, int rating);
213 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_favorite", CallingConvention = CallingConvention.Cdecl)]
214 internal static extern int SetFavorite(SafeMediaInformationHandle mediaInformationHandle, bool favorite);
216 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_author", CallingConvention = CallingConvention.Cdecl)]
217 internal static extern int SetAuthor(SafeMediaInformationHandle mediaInformationHandle, string author);
219 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_provider", CallingConvention = CallingConvention.Cdecl)]
220 internal static extern int SetProvider(SafeMediaInformationHandle mediaInformationHandle, string provider);
222 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_content_name", CallingConvention = CallingConvention.Cdecl)]
223 internal static extern int SetContentName(SafeMediaInformationHandle mediaInformationHandle, string contentName);
225 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_category", CallingConvention = CallingConvention.Cdecl)]
226 internal static extern int SetCategory(SafeMediaInformationHandle mediaInformationHandle, string category);
228 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_location_tag", CallingConvention = CallingConvention.Cdecl)]
229 internal static extern int SetLocationTag(SafeMediaInformationHandle mediaInformationHandle, string locationTag);
231 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_age_rating", CallingConvention = CallingConvention.Cdecl)]
232 internal static extern int SetAgeRating(SafeMediaInformationHandle mediaInformationHandle, string ageRating);
234 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_keyword", CallingConvention = CallingConvention.Cdecl)]
235 internal static extern int SetKeyword(SafeMediaInformationHandle mediaInformationHandle, string keyword);
237 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_update_to_db", CallingConvention = CallingConvention.Cdecl)]
238 internal static extern int UpdateToDB(IntPtr mediaInformationHandle);
240 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_refresh_metadata_to_db", CallingConvention = CallingConvention.Cdecl)]
241 internal static extern int RefreshMetadataToDB(string mediaId);
243 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_added_time", CallingConvention = CallingConvention.Cdecl)]
244 internal static extern int SetAddedTime(SafeMediaInformationHandle mediaInformationHandle, int addedTime);
246 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_move_to_db", CallingConvention = CallingConvention.Cdecl)]
247 internal static extern int MoveToDB(SafeMediaInformationHandle mediaInformationHandle, string dstPath);
249 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_create_thumbnail", CallingConvention = CallingConvention.Cdecl)]
250 internal static extern int CreateThumbnail(SafeMediaInformationHandle mediaInformationHandle, MediaThumbnailCompletedCallback callback, IntPtr userData);
252 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_cancel_thumbnail", CallingConvention = CallingConvention.Cdecl)]
253 internal static extern int CancelThumbnail(SafeMediaInformationHandle mediaInformationHandle);
255 internal sealed class SafeMediaInformationHandle : SafeHandle
257 public SafeMediaInformationHandle(IntPtr handle)
261 public SafeMediaInformationHandle()
262 : base(IntPtr.Zero, true)
266 public override bool IsInvalid
268 get { return this.handle == IntPtr.Zero; }
271 protected override bool ReleaseHandle()
273 Tizen.Log.Info(Globals.LogTag, "SafeMediaInformationHandle::ReleaseHandle called");
274 MediaInformation.Destroy(this.handle);
275 this.SetHandle(IntPtr.Zero);