Merge "[Connection][TCSACR-86] Modify event type"
[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         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
35         internal delegate void InsertBurstShotCompletedCallback(MediaContentError error, IntPtr userData);
36
37         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_to_db")]
38         internal static extern MediaContentError Insert(string filePath, out MediaInfoHandle info);
39
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));
43
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));
47
48         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_delete_from_db")]
49         internal static extern MediaContentError Delete(string mediaId);
50
51         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_delete_batch_from_db")]
52         internal static extern MediaContentError BatchDelete(FilterHandle filter);
53
54         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_destroy")]
55         internal static extern MediaContentError Destroy(IntPtr handle);
56
57         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_count_from_db")]
58         internal static extern MediaContentError GetMediaCount(FilterHandle filter, out int mediaCount);
59
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));
63
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);
66
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));
70
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);
73
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));
77
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);
80
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));
84
85         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_image")]
86         internal static extern MediaContentError GetImage(MediaInfoHandle handle, out IntPtr imageHandle);
87
88         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_video")]
89         internal static extern MediaContentError GetVideo(MediaInfoHandle handle, out IntPtr videoHandle);
90
91         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_audio")]
92         internal static extern MediaContentError GetAudio(MediaInfoHandle handle, out IntPtr audioHandle);
93
94         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_id")]
95         internal static extern MediaContentError GetMediaId(MediaInfoHandle mediaInformationHandle, out IntPtr mediaId);
96
97         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_file_path")]
98         internal static extern MediaContentError GetFilePath(MediaInfoHandle mediaInformationHandle, out IntPtr filePath);
99
100         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_display_name")]
101         internal static extern MediaContentError GetDisplayName(MediaInfoHandle mediaInformationHandle, out IntPtr name);
102
103         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_type")]
104         internal static extern MediaContentError GetMediaType(MediaInfoHandle mediaInformationHandle, out MediaType type);
105
106         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_mime_type")]
107         internal static extern MediaContentError GetMimeType(MediaInfoHandle mediaInformationHandle, out IntPtr mimeType);
108
109         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_size")]
110         internal static extern MediaContentError GetSize(MediaInfoHandle mediaInformationHandle, out long size);
111
112         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_added_time")]
113         internal static extern MediaContentError GetAddedTime(MediaInfoHandle handle, out IntPtr posixTime);
114
115         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_modified_time")]
116         internal static extern MediaContentError GetModifiedTime(MediaInfoHandle handle, out IntPtr posixTime);
117
118         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_timeline")]
119         internal static extern MediaContentError GetTimeline(MediaInfoHandle handle, out IntPtr posixTime);
120
121         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_thumbnail_path")]
122         internal static extern MediaContentError GetThumbnailPath(MediaInfoHandle mediaInformationHandle, out IntPtr filePath);
123
124         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_description")]
125         internal static extern MediaContentError GetDescription(MediaInfoHandle mediaInformationHandle, out IntPtr description);
126
127         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_longitude")]
128         internal static extern MediaContentError GetLongitude(MediaInfoHandle mediaInformationHandle, out double longitude);
129
130         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_latitude")]
131         internal static extern MediaContentError GetLatitude(MediaInfoHandle mediaInformationHandle, out double latitude);
132
133         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_altitude")]
134         internal static extern MediaContentError GetAltitude(MediaInfoHandle mediaInformationHandle, out double altitude);
135
136         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_weather")]
137         internal static extern MediaContentError GetWeather(MediaInfoHandle mediaInformationHandle, out IntPtr weather);
138
139         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_rating")]
140         internal static extern MediaContentError GetRating(MediaInfoHandle mediaInformationHandle, out int rating);
141
142         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_favorite")]
143         internal static extern MediaContentError GetFavorite(MediaInfoHandle mediaInformationHandle, out bool favorite);
144
145         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_provider")]
146         internal static extern MediaContentError GetProvider(MediaInfoHandle mediaInformationHandle, out IntPtr provider);
147
148         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_title")]
149         internal static extern MediaContentError GetTitle(MediaInfoHandle mediaInformationHandle, out IntPtr title);
150
151         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_category")]
152         internal static extern MediaContentError GetCategory(MediaInfoHandle mediaInformationHandle, out IntPtr category);
153
154         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_location_tag")]
155         internal static extern MediaContentError GetLocationTag(MediaInfoHandle mediaInformationHandle, out IntPtr locationTag);
156
157         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_age_rating")]
158         internal static extern MediaContentError GetAgeRating(MediaInfoHandle mediaInformationHandle, out IntPtr ageRating);
159
160         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_id")]
161         internal static extern MediaContentError GetStorageId(MediaInfoHandle mediaInformationHandle, out IntPtr storageId);
162
163         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_is_drm")]
164         internal static extern MediaContentError IsDrm(MediaInfoHandle mediaInformationHandle, out bool isDrm);
165
166         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_type")]
167         internal static extern MediaContentError GetStorageType(MediaInfoHandle mediaInformationHandle, out StorageType storageType);
168
169         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_from_db")]
170         internal static extern MediaContentError GetMediaFromDB(string mediaId, out MediaInfoHandle handle);
171
172         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_weather")]
173         internal static extern MediaContentError SetWeather(MediaInfoHandle mediaInformationHandle, string weather);
174
175         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_favorite")]
176         internal static extern MediaContentError SetFavorite(MediaInfoHandle mediaInformationHandle, bool favorite);
177
178         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_provider")]
179         internal static extern MediaContentError SetProvider(MediaInfoHandle mediaInformationHandle, string provider);
180
181         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_category")]
182         internal static extern MediaContentError SetCategory(MediaInfoHandle mediaInformationHandle, string category);
183
184         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_location_tag")]
185         internal static extern MediaContentError SetLocationTag(MediaInfoHandle mediaInformationHandle, string locationTag);
186
187         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_age_rating")]
188         internal static extern MediaContentError SetAgeRating(MediaInfoHandle mediaInformationHandle, string ageRating);
189
190         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_update_to_db")]
191         internal static extern MediaContentError UpdateToDB(MediaInfoHandle mediaInformationHandle);
192
193         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_move_to_db")]
194         internal static extern MediaContentError MoveToDB(MediaInfoHandle mediaInformationHandle, string dstPath);
195
196         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_create_thumbnail")]
197         internal static extern MediaContentError CreateThumbnail(MediaInfoHandle handle,
198             ThumbnailCompletedCallback callback, IntPtr userData = default(IntPtr));
199
200         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_cancel_thumbnail")]
201         internal static extern MediaContentError CancelThumbnail(MediaInfoHandle mediaInformationHandle);
202
203
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));
207
208         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_cancel_face_detection")]
209         internal static extern MediaContentError CancelFaceDetection(MediaInfoHandle handle);
210     }
211
212     internal sealed class MediaInfoHandle : SafeHandle
213     {
214         public MediaInfoHandle()
215             : base(IntPtr.Zero, true)
216         {
217         }
218
219         public MediaInfoHandle(IntPtr handle)
220             : this()
221         {
222             SetHandle(handle);
223         }
224
225         public override bool IsInvalid
226         {
227             get { return handle == IntPtr.Zero; }
228         }
229
230         protected override bool ReleaseHandle()
231         {
232             MediaInfo.Destroy(handle);
233             return true;
234         }
235     }
236 }