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 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
35 internal delegate void InsertBurstShotCompletedCallback(MediaContentError error, IntPtr userData);
37 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_to_db")]
38 internal static extern MediaContentError Insert(string filePath, out MediaInfoHandle info);
40 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_batch_to_db")]
41 internal static extern MediaContentError BatchInsert(string[] filePathArray, int arrayLength,
42 InsertCompletedCallback callback, IntPtr userData = default(IntPtr));
44 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_burst_shot_to_db")]
45 internal static extern MediaContentError BurstShotInsert(string[] filePathArray, int arrayLength,
46 InsertBurstShotCompletedCallback callback, IntPtr userData = default(IntPtr));
48 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_delete_from_db")]
49 internal static extern MediaContentError Delete(string mediaId);
51 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_delete_batch_from_db")]
52 internal static extern MediaContentError BatchDelete(FilterHandle filter);
54 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_destroy")]
55 internal static extern MediaContentError Destroy(IntPtr handle);
57 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_count_from_db")]
58 internal static extern MediaContentError GetMediaCount(FilterHandle filter, out int mediaCount);
60 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_media_from_db")]
61 internal static extern MediaContentError ForeachMedia(FilterHandle filter, Common.ItemCallback callback,
62 IntPtr userData = default(IntPtr));
64 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_tag_count_from_db")]
65 internal static extern MediaContentError GetTagCount(string mediaId, FilterHandle filter, out int tagCount);
67 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_tag_from_db")]
68 internal static extern MediaContentError ForeachTags(string mediaId, FilterHandle filter,
69 Common.ItemCallback callback, IntPtr userData = default(IntPtr));
71 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_bookmark_count_from_db")]
72 internal static extern MediaContentError GetBookmarkCount(string mediaId, FilterHandle filter, out int bookmarkCount);
74 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_bookmark_from_db")]
75 internal static extern MediaContentError ForeachBookmarks(string mediaId, FilterHandle filter,
76 Common.ItemCallback callback, IntPtr userData = default(IntPtr));
78 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_face_count_from_db")]
79 internal static extern MediaContentError GetFaceCount(string mediaId, FilterHandle filter, out int bookmarkCount);
81 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_face_from_db")]
82 internal static extern MediaContentError ForeachFaces(string mediaId, FilterHandle filter,
83 Common.ItemCallback callback, IntPtr userData = default(IntPtr));
85 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_image")]
86 internal static extern MediaContentError GetImage(MediaInfoHandle handle, out IntPtr imageHandle);
88 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_video")]
89 internal static extern MediaContentError GetVideo(MediaInfoHandle handle, out IntPtr videoHandle);
91 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_audio")]
92 internal static extern MediaContentError GetAudio(MediaInfoHandle handle, out IntPtr audioHandle);
94 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_id")]
95 internal static extern MediaContentError GetMediaId(MediaInfoHandle mediaInformationHandle, out IntPtr mediaId);
97 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_file_path")]
98 internal static extern MediaContentError GetFilePath(MediaInfoHandle mediaInformationHandle, out IntPtr filePath);
100 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_display_name")]
101 internal static extern MediaContentError GetDisplayName(MediaInfoHandle mediaInformationHandle, out IntPtr name);
103 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_type")]
104 internal static extern MediaContentError GetMediaType(MediaInfoHandle mediaInformationHandle, out MediaType type);
106 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_mime_type")]
107 internal static extern MediaContentError GetMimeType(MediaInfoHandle mediaInformationHandle, out IntPtr mimeType);
109 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_size")]
110 internal static extern MediaContentError GetSize(MediaInfoHandle mediaInformationHandle, out long size);
112 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_added_time")]
113 internal static extern MediaContentError GetAddedTime(MediaInfoHandle handle, out IntPtr posixTime);
115 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_modified_time")]
116 internal static extern MediaContentError GetModifiedTime(MediaInfoHandle handle, out IntPtr posixTime);
118 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_timeline")]
119 internal static extern MediaContentError GetTimeline(MediaInfoHandle handle, out IntPtr posixTime);
121 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_thumbnail_path")]
122 internal static extern MediaContentError GetThumbnailPath(MediaInfoHandle mediaInformationHandle, out IntPtr filePath);
124 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_description")]
125 internal static extern MediaContentError GetDescription(MediaInfoHandle mediaInformationHandle, out IntPtr description);
127 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_longitude")]
128 internal static extern MediaContentError GetLongitude(MediaInfoHandle mediaInformationHandle, out double longitude);
130 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_latitude")]
131 internal static extern MediaContentError GetLatitude(MediaInfoHandle mediaInformationHandle, out double latitude);
133 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_altitude")]
134 internal static extern MediaContentError GetAltitude(MediaInfoHandle mediaInformationHandle, out double altitude);
136 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_weather")]
137 internal static extern MediaContentError GetWeather(MediaInfoHandle mediaInformationHandle, out IntPtr weather);
139 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_rating")]
140 internal static extern MediaContentError GetRating(MediaInfoHandle mediaInformationHandle, out int rating);
142 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_favorite")]
143 internal static extern MediaContentError GetFavorite(MediaInfoHandle mediaInformationHandle, out bool favorite);
145 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_provider")]
146 internal static extern MediaContentError GetProvider(MediaInfoHandle mediaInformationHandle, out IntPtr provider);
148 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_title")]
149 internal static extern MediaContentError GetTitle(MediaInfoHandle mediaInformationHandle, out IntPtr title);
151 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_category")]
152 internal static extern MediaContentError GetCategory(MediaInfoHandle mediaInformationHandle, out IntPtr category);
154 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_location_tag")]
155 internal static extern MediaContentError GetLocationTag(MediaInfoHandle mediaInformationHandle, out IntPtr locationTag);
157 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_age_rating")]
158 internal static extern MediaContentError GetAgeRating(MediaInfoHandle mediaInformationHandle, out IntPtr ageRating);
160 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_id")]
161 internal static extern MediaContentError GetStorageId(MediaInfoHandle mediaInformationHandle, out IntPtr storageId);
163 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_is_drm")]
164 internal static extern MediaContentError IsDrm(MediaInfoHandle mediaInformationHandle, out bool isDrm);
166 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_type")]
167 internal static extern MediaContentError GetStorageType(MediaInfoHandle mediaInformationHandle, out StorageType storageType);
169 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_from_db")]
170 internal static extern MediaContentError GetMediaFromDB(string mediaId, out MediaInfoHandle handle);
172 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_weather")]
173 internal static extern MediaContentError SetWeather(MediaInfoHandle mediaInformationHandle, string weather);
175 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_favorite")]
176 internal static extern MediaContentError SetFavorite(MediaInfoHandle mediaInformationHandle, bool favorite);
178 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_provider")]
179 internal static extern MediaContentError SetProvider(MediaInfoHandle mediaInformationHandle, string provider);
181 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_category")]
182 internal static extern MediaContentError SetCategory(MediaInfoHandle mediaInformationHandle, string category);
184 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_location_tag")]
185 internal static extern MediaContentError SetLocationTag(MediaInfoHandle mediaInformationHandle, string locationTag);
187 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_age_rating")]
188 internal static extern MediaContentError SetAgeRating(MediaInfoHandle mediaInformationHandle, string ageRating);
190 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_update_to_db")]
191 internal static extern MediaContentError UpdateToDB(MediaInfoHandle mediaInformationHandle);
193 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_move_to_db")]
194 internal static extern MediaContentError MoveToDB(MediaInfoHandle mediaInformationHandle, string dstPath);
196 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_create_thumbnail")]
197 internal static extern MediaContentError CreateThumbnail(MediaInfoHandle handle,
198 ThumbnailCompletedCallback callback, IntPtr userData = default(IntPtr));
200 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_cancel_thumbnail")]
201 internal static extern MediaContentError CancelThumbnail(MediaInfoHandle mediaInformationHandle);
204 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_start_face_detection")]
205 internal static extern MediaContentError StartFaceDetection(MediaInfoHandle handle,
206 FaceDetectionCompletedCallback callback, IntPtr userData = default(IntPtr));
208 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_cancel_face_detection")]
209 internal static extern MediaContentError CancelFaceDetection(MediaInfoHandle handle);
212 internal sealed class MediaInfoHandle : SafeHandle
214 public MediaInfoHandle()
215 : base(IntPtr.Zero, true)
219 public MediaInfoHandle(IntPtr handle)
225 public override bool IsInvalid
227 get { return handle == IntPtr.Zero; }
230 protected override bool ReleaseHandle()
232 MediaInfo.Destroy(handle);