Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.Metadata / Interop / Interop.MetadataExtractor.cs
1 using System;
2 using System.Runtime.InteropServices;
3 using Tizen.Multimedia;
4
5 internal static partial class Interop
6 {
7     internal static partial class MetadataExtractor
8     {
9         [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_create")]
10         internal static extern MetadataExtractorError Create(out IntPtr handle);
11
12         [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_set_path")]
13         internal static extern MetadataExtractorError SetPath(IntPtr handle, string path);
14
15         [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_set_buffer")]
16         internal static extern MetadataExtractorError SetBuffer(IntPtr handle, IntPtr buffer, int size);
17
18         [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_destroy")]
19         internal static extern MetadataExtractorError Destroy(IntPtr handle);
20
21         [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_metadata")]
22         private static extern MetadataExtractorError GetMetadata(IntPtr handle, MetadataExtractorAttr attribute, out IntPtr value);
23
24         internal static string GetMetadata(IntPtr handle, MetadataExtractorAttr attr)
25         {
26             IntPtr valuePtr = IntPtr.Zero;
27
28             try
29             {
30                 var ret = GetMetadata(handle, attr, out valuePtr);
31                 MetadataExtractorRetValidator.ThrowIfError(ret, "Failed to get value for " + attr);
32                 return Marshal.PtrToStringAnsi(valuePtr);
33             }
34             finally
35             {
36                 Libc.Free(valuePtr);
37             }
38         }
39
40         [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_artwork")]
41         internal static extern MetadataExtractorError GetArtwork(IntPtr handle, out IntPtr artwork,
42             out int size, out IntPtr mimeType);
43
44         [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_frame")]
45         internal static extern MetadataExtractorError GetFrame(IntPtr handle, out IntPtr frame, out int size);
46
47         [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_synclyrics")]
48         internal static extern MetadataExtractorError GetSynclyrics(IntPtr handle, int index,
49             out uint timeStamp, out IntPtr lyrics);
50
51         [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_frame_at_time")]
52         internal static extern MetadataExtractorError GetFrameAtTime(IntPtr handle, uint timeStamp,
53             bool isAccurate, out IntPtr frame, out int size);
54     }
55 }