Merge "[Connection][TCSACR-106] Remove unused enum AddressInformationType"
[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_media_id")]
85         internal static extern MediaContentError GetMediaId(MediaInfoHandle mediaInformationHandle, out IntPtr mediaId);
86
87         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_file_path")]
88         internal static extern MediaContentError GetFilePath(MediaInfoHandle mediaInformationHandle, out IntPtr filePath);
89
90         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_display_name")]
91         internal static extern MediaContentError GetDisplayName(MediaInfoHandle mediaInformationHandle, out IntPtr name);
92
93         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_type")]
94         internal static extern MediaContentError GetMediaType(MediaInfoHandle mediaInformationHandle, out MediaType type);
95
96         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_mime_type")]
97         internal static extern MediaContentError GetMimeType(MediaInfoHandle mediaInformationHandle, out IntPtr mimeType);
98
99         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_size")]
100         internal static extern MediaContentError GetSize(MediaInfoHandle mediaInformationHandle, out long size);
101
102         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_added_time")]
103         internal static extern MediaContentError GetAddedTime(MediaInfoHandle handle, out IntPtr posixTime);
104
105         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_modified_time")]
106         internal static extern MediaContentError GetModifiedTime(MediaInfoHandle handle, out IntPtr posixTime);
107
108         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_timeline")]
109         internal static extern MediaContentError GetTimeline(MediaInfoHandle handle, out IntPtr posixTime);
110
111         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_thumbnail_path")]
112         internal static extern MediaContentError GetThumbnailPath(MediaInfoHandle mediaInformationHandle, out IntPtr filePath);
113
114         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_description")]
115         internal static extern MediaContentError GetDescription(MediaInfoHandle mediaInformationHandle, out IntPtr description);
116
117         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_longitude")]
118         internal static extern MediaContentError GetLongitude(MediaInfoHandle mediaInformationHandle, out double longitude);
119
120         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_latitude")]
121         internal static extern MediaContentError GetLatitude(MediaInfoHandle mediaInformationHandle, out double latitude);
122
123         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_altitude")]
124         internal static extern MediaContentError GetAltitude(MediaInfoHandle mediaInformationHandle, out double altitude);
125
126         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_weather")]
127         internal static extern MediaContentError GetWeather(MediaInfoHandle mediaInformationHandle, out IntPtr weather);
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_provider")]
136         internal static extern MediaContentError GetProvider(MediaInfoHandle mediaInformationHandle, out IntPtr provider);
137
138         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_title")]
139         internal static extern MediaContentError GetTitle(MediaInfoHandle mediaInformationHandle, out IntPtr title);
140
141         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_category")]
142         internal static extern MediaContentError GetCategory(MediaInfoHandle mediaInformationHandle, out IntPtr category);
143
144         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_location_tag")]
145         internal static extern MediaContentError GetLocationTag(MediaInfoHandle mediaInformationHandle, out IntPtr locationTag);
146
147         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_age_rating")]
148         internal static extern MediaContentError GetAgeRating(MediaInfoHandle mediaInformationHandle, out IntPtr ageRating);
149
150         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_id")]
151         internal static extern MediaContentError GetStorageId(MediaInfoHandle mediaInformationHandle, out IntPtr storageId);
152
153         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_is_drm")]
154         internal static extern MediaContentError IsDrm(MediaInfoHandle mediaInformationHandle, out bool isDrm);
155
156         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_type")]
157         internal static extern MediaContentError GetStorageType(MediaInfoHandle mediaInformationHandle, out StorageType storageType);
158
159         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_from_db")]
160         internal static extern MediaContentError GetMediaFromDB(string mediaId, out MediaInfoHandle handle);
161
162         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_weather")]
163         internal static extern MediaContentError SetWeather(MediaInfoHandle mediaInformationHandle, string weather);
164
165         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_favorite")]
166         internal static extern MediaContentError SetFavorite(MediaInfoHandle mediaInformationHandle, bool favorite);
167
168         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_provider")]
169         internal static extern MediaContentError SetProvider(MediaInfoHandle mediaInformationHandle, string provider);
170
171         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_category")]
172         internal static extern MediaContentError SetCategory(MediaInfoHandle mediaInformationHandle, string category);
173
174         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_location_tag")]
175         internal static extern MediaContentError SetLocationTag(MediaInfoHandle mediaInformationHandle, string locationTag);
176
177         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_age_rating")]
178         internal static extern MediaContentError SetAgeRating(MediaInfoHandle mediaInformationHandle, string ageRating);
179
180         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_update_to_db")]
181         internal static extern MediaContentError UpdateToDB(MediaInfoHandle mediaInformationHandle);
182
183         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_move_to_db")]
184         internal static extern MediaContentError MoveToDB(MediaInfoHandle mediaInformationHandle, string dstPath);
185
186         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_create_thumbnail")]
187         internal static extern MediaContentError CreateThumbnail(MediaInfoHandle handle,
188             ThumbnailCompletedCallback callback, IntPtr userData = default(IntPtr));
189
190         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_cancel_thumbnail")]
191         internal static extern MediaContentError CancelThumbnail(MediaInfoHandle mediaInformationHandle);
192
193         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_start_face_detection")]
194         internal static extern MediaContentError StartFaceDetection(MediaInfoHandle handle,
195             FaceDetectionCompletedCallback callback, IntPtr userData = default(IntPtr));
196
197         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_cancel_face_detection")]
198         internal static extern MediaContentError CancelFaceDetection(MediaInfoHandle handle);
199     }
200
201     internal sealed class MediaInfoHandle : SafeHandle
202     {
203         public MediaInfoHandle()
204             : base(IntPtr.Zero, true)
205         {
206         }
207
208         public MediaInfoHandle(IntPtr handle)
209             : this()
210         {
211             SetHandle(handle);
212         }
213
214         public override bool IsInvalid
215         {
216             get { return handle == IntPtr.Zero; }
217         }
218
219         protected override bool ReleaseHandle()
220         {
221             MediaInfo.Destroy(handle);
222             return true;
223         }
224     }
225 }