baa7e3310c2809b3b078537a34838d59e3aee7f9
[platform/core/csapi/tizenfx.git] / src / Tizen.Content.MediaContent / Interop / Interop.MediaInfo.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 using System;
18 using System.Runtime.InteropServices;
19 using Tizen.Content.MediaContent;
20
21 internal static partial class Interop
22 {
23     internal static partial class MediaInfo
24     {
25         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
26         internal delegate void ThumbnailCompletedCallback(MediaContentError error, string filePath, IntPtr userData);
27
28         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
29         internal delegate void FaceDetectionCompletedCallback(MediaContentError error, int count, IntPtr userData);
30
31         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
32         internal delegate void InsertCompletedCallback(MediaContentError error, IntPtr userData);
33
34         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_to_db")]
35         internal static extern MediaContentError Insert(string filePath, out MediaInfoHandle info);
36
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));
40
41         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_delete_from_db")]
42         internal static extern MediaContentError Delete(string mediaId);
43
44         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_destroy")]
45         internal static extern MediaContentError Destroy(IntPtr handle);
46
47         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_count_from_db")]
48         internal static extern MediaContentError GetMediaCount(FilterHandle filter, out int mediaCount);
49
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));
53
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);
56
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));
60
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);
63
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));
67
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);
70
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));
74
75         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_image")]
76         internal static extern MediaContentError GetImage(MediaInfoHandle handle, out IntPtr imageHandle);
77
78         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_video")]
79         internal static extern MediaContentError GetVideo(MediaInfoHandle handle, out IntPtr videoHandle);
80
81         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_audio")]
82         internal static extern MediaContentError GetAudio(MediaInfoHandle handle, out IntPtr audioHandle);
83
84         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_book")]
85         internal static extern MediaContentError GetBook(MediaInfoHandle handle, out IntPtr bookHandle);
86
87         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_id")]
88         internal static extern MediaContentError GetMediaId(MediaInfoHandle mediaInformationHandle, out IntPtr mediaId);
89
90         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_file_path")]
91         internal static extern MediaContentError GetFilePath(MediaInfoHandle mediaInformationHandle, out IntPtr filePath);
92
93         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_display_name")]
94         internal static extern MediaContentError GetDisplayName(MediaInfoHandle mediaInformationHandle, out IntPtr name);
95
96         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_type")]
97         internal static extern MediaContentError GetMediaType(MediaInfoHandle mediaInformationHandle, out MediaType type);
98
99         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_mime_type")]
100         internal static extern MediaContentError GetMimeType(MediaInfoHandle mediaInformationHandle, out IntPtr mimeType);
101
102         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_size")]
103         internal static extern MediaContentError GetSize(MediaInfoHandle mediaInformationHandle, out long size);
104
105         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_added_time")]
106         internal static extern MediaContentError GetAddedTime(MediaInfoHandle handle, out IntPtr posixTime);
107
108         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_modified_time")]
109         internal static extern MediaContentError GetModifiedTime(MediaInfoHandle handle, out IntPtr posixTime);
110
111         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_timeline")]
112         internal static extern MediaContentError GetTimeline(MediaInfoHandle handle, out IntPtr posixTime);
113
114         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_thumbnail_path")]
115         internal static extern MediaContentError GetThumbnailPath(MediaInfoHandle mediaInformationHandle, out IntPtr filePath);
116
117         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_description")]
118         internal static extern MediaContentError GetDescription(MediaInfoHandle mediaInformationHandle, out IntPtr description);
119
120         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_longitude")]
121         internal static extern MediaContentError GetLongitude(MediaInfoHandle mediaInformationHandle, out double longitude);
122
123         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_latitude")]
124         internal static extern MediaContentError GetLatitude(MediaInfoHandle mediaInformationHandle, out double latitude);
125
126         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_altitude")]
127         internal static extern MediaContentError GetAltitude(MediaInfoHandle mediaInformationHandle, out double altitude);
128
129         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_rating")]
130         internal static extern MediaContentError GetRating(MediaInfoHandle mediaInformationHandle, out int rating);
131
132         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_favorite")]
133         internal static extern MediaContentError GetFavorite(MediaInfoHandle mediaInformationHandle, out bool favorite);
134
135         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_title")]
136         internal static extern MediaContentError GetTitle(MediaInfoHandle mediaInformationHandle, out IntPtr title);
137
138         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_id")]
139         internal static extern MediaContentError GetStorageId(MediaInfoHandle mediaInformationHandle, out IntPtr storageId);
140
141         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_is_drm")]
142         internal static extern MediaContentError IsDrm(MediaInfoHandle mediaInformationHandle, out bool isDrm);
143
144         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_type")]
145         internal static extern MediaContentError GetStorageType(MediaInfoHandle mediaInformationHandle, out StorageType storageType);
146
147         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_from_db")]
148         internal static extern MediaContentError GetMediaFromDB(string mediaId, out MediaInfoHandle handle);
149
150         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_favorite")]
151         internal static extern MediaContentError SetFavorite(MediaInfoHandle mediaInformationHandle, bool favorite);
152
153         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_update_to_db")]
154         internal static extern MediaContentError UpdateToDB(MediaInfoHandle mediaInformationHandle);
155
156         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_move_to_db")]
157         internal static extern MediaContentError MoveToDB(MediaInfoHandle mediaInformationHandle, string dstPath);
158
159         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_generate_thumbnail")]
160         internal static extern MediaContentError GenerateThumbnail(MediaInfoHandle handle);
161
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));
165
166         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_cancel_face_detection")]
167         internal static extern MediaContentError CancelFaceDetection(MediaInfoHandle handle);
168     }
169
170     internal sealed class MediaInfoHandle : SafeHandle
171     {
172         public MediaInfoHandle()
173             : base(IntPtr.Zero, true)
174         {
175         }
176
177         public MediaInfoHandle(IntPtr handle)
178             : this()
179         {
180             SetHandle(handle);
181         }
182
183         public override bool IsInvalid
184         {
185             get { return handle == IntPtr.Zero; }
186         }
187
188         protected override bool ReleaseHandle()
189         {
190             MediaInfo.Destroy(handle);
191             return true;
192         }
193     }
194 }