Fixed review comments and updated CSProj file.
[platform/core/csapi/media-content.git] / Tizen.Content / Interop / Interop.MediaInformation.cs
1 /// Copyright 2016 by Samsung Electronics, Inc.,
2 ///
3 /// This software is the confidential and proprietary information
4 /// of Samsung Electronics, Inc.("Confidential Information"). You
5 /// shall not disclose such Confidential Information and shall use
6 /// it only in accordance with the terms of the license agreement
7 /// you entered into with Samsung.
8
9
10 using System;
11 using System.Runtime.InteropServices;
12 using Tizen.Content.MediaContent;
13
14 internal static partial class Interop
15 {
16     internal static partial class MediaInformation
17     {
18         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
19         internal delegate void MediaThumbnailCompletedCallback(MediaContentError error, string filePath, IntPtr UserData);
20
21         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
22         internal delegate bool MediaTagCallback(IntPtr tagHandle, IntPtr UserData);
23
24         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
25         internal delegate bool MediaBookMarkCallback(IntPtr bookmarkHandle, IntPtr UserData);
26
27         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
28         internal delegate bool MediaFaceCallback(IntPtr bookmarkHandle, IntPtr UserData);
29
30         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
31         internal delegate void MediaInsertCompletedCallback(MediaContentError error, IntPtr UserData);
32
33         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
34         internal delegate void MediaInsertBurstShotCompletedCallback(MediaContentError error, IntPtr UserData);
35
36         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
37         internal delegate bool MediaInformationCallback(IntPtr mediaInformationHandle, IntPtr UserData);
38
39         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_to_db", CallingConvention = CallingConvention.Cdecl)]
40         internal static extern int Insert(string filePath, out SafeMediaInformationHandle info);
41
42         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_batch_to_db", CallingConvention = CallingConvention.Cdecl)]
43         internal static extern int BatchInsert(string[] filePathArray, int arrayLength, MediaInsertCompletedCallback callback, IntPtr userData);
44
45         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_burst_shot_to_db", CallingConvention = CallingConvention.Cdecl)]
46         internal static extern int BurstShotInsert(string[] filePathArray, int arrayLength, MediaInsertBurstShotCompletedCallback callback, IntPtr userData);
47
48         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_delete_from_db", CallingConvention = CallingConvention.Cdecl)]
49         internal static extern int Delete(string mediaId);
50
51         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_delete_batch_from_db", CallingConvention = CallingConvention.Cdecl)]
52         internal static extern int BatchDelete(IntPtr filter);
53
54         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_destroy", CallingConvention = CallingConvention.Cdecl)]
55         internal static extern int Destroy(IntPtr mediaInformationHandle);
56
57         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_clone", CallingConvention = CallingConvention.Cdecl)]
58         internal static extern int Clone(out SafeMediaInformationHandle dst, IntPtr src);
59
60         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_count_from_db", CallingConvention = CallingConvention.Cdecl)]
61         internal static extern int GetMediaCount(IntPtr filter, out int mediaCount);
62
63         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_media_from_db", CallingConvention = CallingConvention.Cdecl)]
64         internal static extern int GetAllMedia(IntPtr filter, MediaInformationCallback callback, IntPtr userData);
65
66         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_tag_count_from_db", CallingConvention = CallingConvention.Cdecl)]
67         internal static extern int GetTagCount(string mediaId, IntPtr filter, out int tagCount);
68
69         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_tag_from_db", CallingConvention = CallingConvention.Cdecl)]
70         internal static extern int GetAllTags(string mediaId, IntPtr filter, MediaTagCallback callback, IntPtr userData);
71
72         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_bookmark_count_from_db", CallingConvention = CallingConvention.Cdecl)]
73         internal static extern int GetBookmarkCount(string mediaId, IntPtr filter, out int bookmarkCount);
74
75         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_bookmark_from_db", CallingConvention = CallingConvention.Cdecl)]
76         internal static extern int GetAllBookmarks(string mediaId, IntPtr filter, MediaBookMarkCallback callback, IntPtr userData);
77
78         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_face_count_from_db", CallingConvention = CallingConvention.Cdecl)]
79         internal static extern int GetFaceCount(string mediaId, IntPtr filter, out int bookmarkCount);
80
81         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_foreach_bookmark_from_db", CallingConvention = CallingConvention.Cdecl)]
82         internal static extern int GetAllFaces(string mediaId, IntPtr filter, MediaFaceCallback callback, IntPtr userData);
83
84         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_image", CallingConvention = CallingConvention.Cdecl)]
85         internal static extern int GetImage(IntPtr mediaInformationHandle, out Interop.ImageInformation.SafeImageInformationHandle image);
86
87         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_video", CallingConvention = CallingConvention.Cdecl)]
88         internal static extern int GetVideo(IntPtr mediaInformationHandle, out Interop.VideoInformation.SafeVideoInformationHandle video);
89
90         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_audio", CallingConvention = CallingConvention.Cdecl)]
91         internal static extern int GetAudio(IntPtr mediaInformationHandle, out Interop.AudioInformation.SafeAudioInformationHandle audio);
92
93         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_id", CallingConvention = CallingConvention.Cdecl)]
94         internal static extern int GetMediaId(SafeMediaInformationHandle mediaInformationHandle, out string mediaId);
95
96         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_file_path", CallingConvention = CallingConvention.Cdecl)]
97         internal static extern int GetFilePath(SafeMediaInformationHandle mediaInformationHandle, out string filePath);
98
99         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_display_name", CallingConvention = CallingConvention.Cdecl)]
100         internal static extern int GetDisplayName(SafeMediaInformationHandle mediaInformationHandle, out string name);
101
102         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_type", CallingConvention = CallingConvention.Cdecl)]
103         internal static extern int GetMediaType(SafeMediaInformationHandle mediaInformationHandle, out MediaContentType type);
104
105         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_mime_type", CallingConvention = CallingConvention.Cdecl)]
106         internal static extern int GetMimeType(SafeMediaInformationHandle mediaInformationHandle, out string mimeType);
107
108         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_size", CallingConvention = CallingConvention.Cdecl)]
109         internal static extern int GetSize(SafeMediaInformationHandle mediaInformationHandle, out long size);
110
111         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_added_time", CallingConvention = CallingConvention.Cdecl)]
112         internal static extern int GetAddedTime(SafeMediaInformationHandle mediaInformationHandle, out int addedTime);
113
114         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_modified_time", CallingConvention = CallingConvention.Cdecl)]
115         internal static extern int GetModifiedTime(SafeMediaInformationHandle mediaInformationHandle, out int time);
116
117         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_timeline", CallingConvention = CallingConvention.Cdecl)]
118         internal static extern int GetTimeline(SafeMediaInformationHandle mediaInformationHandle, out int time);
119
120         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_thumbnail_path", CallingConvention = CallingConvention.Cdecl)]
121         internal static extern int GetThumbnailPath(SafeMediaInformationHandle mediaInformationHandle, out string filePath);
122
123         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_description", CallingConvention = CallingConvention.Cdecl)]
124         internal static extern int GetDescription(SafeMediaInformationHandle mediaInformationHandle, out string description);
125
126         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_longitude", CallingConvention = CallingConvention.Cdecl)]
127         internal static extern int GetLongitude(SafeMediaInformationHandle mediaInformationHandle, out double longitude);
128
129         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_latitude", CallingConvention = CallingConvention.Cdecl)]
130         internal static extern int GetLatitude(SafeMediaInformationHandle mediaInformationHandle, out double latitude);
131
132         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_altitude", CallingConvention = CallingConvention.Cdecl)]
133         internal static extern int GetAltitude(SafeMediaInformationHandle mediaInformationHandle, out double altitude);
134
135         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_weather", CallingConvention = CallingConvention.Cdecl)]
136         internal static extern int GetWeather(SafeMediaInformationHandle mediaInformationHandle, out string weather);
137
138         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_rating", CallingConvention = CallingConvention.Cdecl)]
139         internal static extern int GetRating(SafeMediaInformationHandle mediaInformationHandle, out int rating);
140
141         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_favorite", CallingConvention = CallingConvention.Cdecl)]
142         internal static extern int GetFavorite(SafeMediaInformationHandle mediaInformationHandle, out bool favorite);
143
144         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_author", CallingConvention = CallingConvention.Cdecl)]
145         internal static extern int GetAuthor(SafeMediaInformationHandle mediaInformationHandle, out string author);
146
147         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_provider", CallingConvention = CallingConvention.Cdecl)]
148         internal static extern int GetProvider(SafeMediaInformationHandle mediaInformationHandle, out string provider);
149
150         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_content_name", CallingConvention = CallingConvention.Cdecl)]
151         internal static extern int GetContentName(SafeMediaInformationHandle mediaInformationHandle, out string contentName);
152
153         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_title", CallingConvention = CallingConvention.Cdecl)]
154         internal static extern int GetTitle(SafeMediaInformationHandle mediaInformationHandle, out string title);
155
156         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_category", CallingConvention = CallingConvention.Cdecl)]
157         internal static extern int GetCategory(SafeMediaInformationHandle mediaInformationHandle, out string category);
158
159         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_location_tag", CallingConvention = CallingConvention.Cdecl)]
160         internal static extern int GetLocationTag(SafeMediaInformationHandle mediaInformationHandle, out string locationTag);
161
162         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_age_rating", CallingConvention = CallingConvention.Cdecl)]
163         internal static extern int GetAgeRating(SafeMediaInformationHandle mediaInformationHandle, out string ageRating);
164
165         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_keyword", CallingConvention = CallingConvention.Cdecl)]
166         internal static extern int GetKeyword(SafeMediaInformationHandle mediaInformationHandle, out string keyword);
167
168         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_id", CallingConvention = CallingConvention.Cdecl)]
169         internal static extern int GetStorageId(SafeMediaInformationHandle mediaInformationHandle, out string storageId);
170
171         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_is_drm", CallingConvention = CallingConvention.Cdecl)]
172         internal static extern int IsDrm(SafeMediaInformationHandle mediaInformationHandle, out bool isDrm);
173
174         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_storage_type", CallingConvention = CallingConvention.Cdecl)]
175         internal static extern int GetStorageType(SafeMediaInformationHandle mediaInformationHandle, out ContentStorageType storageType);
176
177         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_played_count", CallingConvention = CallingConvention.Cdecl)]
178         internal static extern int GetPlayedCount(SafeMediaInformationHandle mediaInformationHandle, out int playedCount);
179
180         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_played_time", CallingConvention = CallingConvention.Cdecl)]
181         internal static extern int GetPlayedTime(SafeMediaInformationHandle mediaInformationHandle, out int playedTime);
182
183         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_get_media_from_db", CallingConvention = CallingConvention.Cdecl)]
184         internal static extern int GetMediaFromDB(string mediaId, out SafeMediaInformationHandle mediaInformationHandle);
185
186         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_increase_played_count", CallingConvention = CallingConvention.Cdecl)]
187         internal static extern int IncreasePlayedCount(SafeMediaInformationHandle mediaInformationHandle);
188
189         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_played_time", CallingConvention = CallingConvention.Cdecl)]
190         internal static extern int SetPlayedTime(SafeMediaInformationHandle mediaInformationHandle);
191
192         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_display_name", CallingConvention = CallingConvention.Cdecl)]
193         internal static extern int SetDisplayName(SafeMediaInformationHandle mediaInformationHandle, string displayName);
194
195         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_description", CallingConvention = CallingConvention.Cdecl)]
196         internal static extern int SetDescription(SafeMediaInformationHandle mediaInformationHandle, string description);
197
198         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_longitude", CallingConvention = CallingConvention.Cdecl)]
199         internal static extern int SetLongitude(SafeMediaInformationHandle mediaInformationHandle, double longitude);
200
201         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_latitude", CallingConvention = CallingConvention.Cdecl)]
202         internal static extern int SetLatitude(SafeMediaInformationHandle mediaInformationHandle, double latitude);
203
204         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_altitude", CallingConvention = CallingConvention.Cdecl)]
205         internal static extern int SetAltitude(SafeMediaInformationHandle mediaInformationHandle, double altitude);
206
207         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_weather", CallingConvention = CallingConvention.Cdecl)]
208         internal static extern int SetWeather(SafeMediaInformationHandle mediaInformationHandle, string weather);
209
210         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_rating", CallingConvention = CallingConvention.Cdecl)]
211         internal static extern int SetRating(SafeMediaInformationHandle mediaInformationHandle, int rating);
212
213         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_favorite", CallingConvention = CallingConvention.Cdecl)]
214         internal static extern int SetFavorite(SafeMediaInformationHandle mediaInformationHandle, bool favorite);
215
216         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_author", CallingConvention = CallingConvention.Cdecl)]
217         internal static extern int SetAuthor(SafeMediaInformationHandle mediaInformationHandle, string author);
218
219         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_provider", CallingConvention = CallingConvention.Cdecl)]
220         internal static extern int SetProvider(SafeMediaInformationHandle mediaInformationHandle, string provider);
221
222         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_content_name", CallingConvention = CallingConvention.Cdecl)]
223         internal static extern int SetContentName(SafeMediaInformationHandle mediaInformationHandle, string contentName);
224
225         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_category", CallingConvention = CallingConvention.Cdecl)]
226         internal static extern int SetCategory(SafeMediaInformationHandle mediaInformationHandle, string category);
227
228         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_location_tag", CallingConvention = CallingConvention.Cdecl)]
229         internal static extern int SetLocationTag(SafeMediaInformationHandle mediaInformationHandle, string locationTag);
230
231         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_age_rating", CallingConvention = CallingConvention.Cdecl)]
232         internal static extern int SetAgeRating(SafeMediaInformationHandle mediaInformationHandle, string ageRating);
233
234         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_keyword", CallingConvention = CallingConvention.Cdecl)]
235         internal static extern int SetKeyword(SafeMediaInformationHandle mediaInformationHandle, string keyword);
236
237         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_update_to_db", CallingConvention = CallingConvention.Cdecl)]
238         internal static extern int UpdateToDB(IntPtr mediaInformationHandle);
239
240         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_refresh_metadata_to_db", CallingConvention = CallingConvention.Cdecl)]
241         internal static extern int RefreshMetadataToDB(string mediaId);
242
243         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_set_added_time", CallingConvention = CallingConvention.Cdecl)]
244         internal static extern int SetAddedTime(SafeMediaInformationHandle mediaInformationHandle, int addedTime);
245
246         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_move_to_db", CallingConvention = CallingConvention.Cdecl)]
247         internal static extern int MoveToDB(SafeMediaInformationHandle mediaInformationHandle, string dstPath);
248
249         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_create_thumbnail", CallingConvention = CallingConvention.Cdecl)]
250         internal static extern int CreateThumbnail(SafeMediaInformationHandle mediaInformationHandle, MediaThumbnailCompletedCallback callback, IntPtr userData);
251
252         [DllImport(Libraries.MediaContent, EntryPoint = "media_info_cancel_thumbnail", CallingConvention = CallingConvention.Cdecl)]
253         internal static extern int CancelThumbnail(SafeMediaInformationHandle mediaInformationHandle);
254
255         internal sealed class SafeMediaInformationHandle : SafeHandle
256         {
257             public SafeMediaInformationHandle(IntPtr handle)
258                 : base(handle, true)
259             {
260             }
261             public SafeMediaInformationHandle()
262                 : base(IntPtr.Zero, true)
263             {
264             }
265
266             public override bool IsInvalid
267             {
268                 get { return this.handle == IntPtr.Zero; }
269             }
270
271             protected override bool ReleaseHandle()
272             {
273                 Tizen.Log.Info(Globals.LogTag, "SafeMediaInformationHandle::ReleaseHandle called");
274                 MediaInformation.Destroy(this.handle);
275                 this.SetHandle(IntPtr.Zero);
276                 return true;
277             }
278         }
279     }
280 }