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_book")]
85 internal static extern MediaContentError GetBook(MediaInfoHandle handle, out IntPtr bookHandle);
87 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_id")]
88 internal static extern MediaContentError GetMediaId(MediaInfoHandle mediaInformationHandle, out IntPtr mediaId);
90 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_file_path")]
91 internal static extern MediaContentError GetFilePath(MediaInfoHandle mediaInformationHandle, out IntPtr filePath);
93 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_display_name")]
94 internal static extern MediaContentError GetDisplayName(MediaInfoHandle mediaInformationHandle, out IntPtr name);
96 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_type")]
97 internal static extern MediaContentError GetMediaType(MediaInfoHandle mediaInformationHandle, out MediaType type);
99 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_mime_type")]
100 internal static extern MediaContentError GetMimeType(MediaInfoHandle mediaInformationHandle, out IntPtr mimeType);
102 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_size")]
103 internal static extern MediaContentError GetSize(MediaInfoHandle mediaInformationHandle, out long size);
105 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_added_time")]
106 internal static extern MediaContentError GetAddedTime(MediaInfoHandle handle, out IntPtr posixTime);
108 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_modified_time")]
109 internal static extern MediaContentError GetModifiedTime(MediaInfoHandle handle, out IntPtr posixTime);
111 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_timeline")]
112 internal static extern MediaContentError GetTimeline(MediaInfoHandle handle, out IntPtr posixTime);
114 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_thumbnail_path")]
115 internal static extern MediaContentError GetThumbnailPath(MediaInfoHandle mediaInformationHandle, out IntPtr filePath);
117 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_description")]
118 internal static extern MediaContentError GetDescription(MediaInfoHandle mediaInformationHandle, out IntPtr description);
120 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_longitude")]
121 internal static extern MediaContentError GetLongitude(MediaInfoHandle mediaInformationHandle, out double longitude);
123 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_latitude")]
124 internal static extern MediaContentError GetLatitude(MediaInfoHandle mediaInformationHandle, out double latitude);
126 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_altitude")]
127 internal static extern MediaContentError GetAltitude(MediaInfoHandle mediaInformationHandle, out double altitude);
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_title")]
136 internal static extern MediaContentError GetTitle(MediaInfoHandle mediaInformationHandle, out IntPtr title);
138 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_id")]
139 internal static extern MediaContentError GetStorageId(MediaInfoHandle mediaInformationHandle, out IntPtr storageId);
141 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_is_drm")]
142 internal static extern MediaContentError IsDrm(MediaInfoHandle mediaInformationHandle, out bool isDrm);
144 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_type")]
145 internal static extern MediaContentError GetStorageType(MediaInfoHandle mediaInformationHandle, out StorageType storageType);
147 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_from_db")]
148 internal static extern MediaContentError GetMediaFromDB(string mediaId, out MediaInfoHandle handle);
150 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_favorite")]
151 internal static extern MediaContentError SetFavorite(MediaInfoHandle mediaInformationHandle, bool favorite);
153 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_update_to_db")]
154 internal static extern MediaContentError UpdateToDB(MediaInfoHandle mediaInformationHandle);
156 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_move_to_db")]
157 internal static extern MediaContentError MoveToDB(MediaInfoHandle mediaInformationHandle, string dstPath);
159 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_generate_thumbnail")]
160 internal static extern MediaContentError GenerateThumbnail(MediaInfoHandle handle);
162 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_start_face_detection")]
163 internal static extern MediaContentError StartFaceDetection(MediaInfoHandle handle,
164 FaceDetectionCompletedCallback callback, IntPtr userData = default(IntPtr));
166 [DllImport(Libraries.MediaContent, EntryPoint = "media_info_cancel_face_detection")]
167 internal static extern MediaContentError CancelFaceDetection(MediaInfoHandle handle);
170 internal sealed class MediaInfoHandle : SafeHandle
172 public MediaInfoHandle()
173 : base(IntPtr.Zero, true)
177 public MediaInfoHandle(IntPtr handle)
183 public override bool IsInvalid
185 get { return handle == IntPtr.Zero; }
188 protected override bool ReleaseHandle()
190 MediaInfo.Destroy(handle);