Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.AudioIO / Interop / Interop.AudioIO.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
20 internal static partial class Interop
21 {
22     internal static partial class AudioIO
23     {
24         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
25         public delegate void AudioStreamCallback(IntPtr handle, uint nbytes, IntPtr userdata);
26
27         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
28         public delegate void AudioStateChangedCallback(IntPtr handle, int previous, int current, bool byPolicy, IntPtr userData);
29
30         internal static partial class AudioInput
31         {
32             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_set_state_changed_cb")]
33             internal static extern int SetStateChangedCallback(IntPtr handle, AudioStateChangedCallback callback, IntPtr user_data);
34
35             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_set_stream_cb")]
36             internal static extern int SetStreamCallback(IntPtr handle, AudioStreamCallback callback, IntPtr user_data);
37
38             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_create")]
39             internal static extern int Create(int sampleRate, int channel, int type, out IntPtr handle);
40
41             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_destroy")]
42             internal static extern int Destroy(IntPtr handle);
43
44             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_set_sound_stream_info")]
45             internal static extern int SetStreamInfo(IntPtr handle, IntPtr streamInfoHandle);
46
47             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_prepare")]
48             internal static extern int Prepare(IntPtr handle);
49
50             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_unprepare")]
51             internal static extern int Unprepare(IntPtr handle);
52
53             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_pause")]
54             internal static extern int Pause(IntPtr handle);
55
56             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_resume")]
57             internal static extern int Resume(IntPtr handle);
58
59             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_flush")]
60             internal static extern int Flush(IntPtr handle);
61
62             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_read")]
63             internal static extern int Read(IntPtr handle, byte[] buffer, int length);
64
65             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_get_buffer_size")]
66             internal static extern int GetBufferSize(IntPtr handle, out int size);
67
68             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_get_sample_rate")]
69             internal static extern int GetSampleRate(IntPtr handle, out int sampleRate);
70
71             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_get_channel")]
72             internal static extern int GetChannel(IntPtr handle, out int channel);
73
74             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_get_sample_type")]
75             internal static extern int GetSampleType(IntPtr handle, out int sampleType);
76
77             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_peek")]
78             internal static extern int Peek(IntPtr handle, out IntPtr buffer, ref uint length);
79
80             [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_drop")]
81             internal static extern int Drop(IntPtr handle);
82         }
83         internal static partial class AudioOutput
84         {
85             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_set_state_changed_cb")]
86             internal static extern int SetStateChangedCallback(IntPtr handle, AudioStateChangedCallback callback, IntPtr user_data);
87
88             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_set_stream_cb")]
89             internal static extern int SetStreamChangedCallback(IntPtr handle, AudioStreamCallback callback, IntPtr user_data);
90
91             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_create_new")]
92             internal static extern int Create(int sampleRate, int channel, int type, out IntPtr handle);
93
94             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_destroy")]
95             internal static extern int Destroy(IntPtr handle);
96
97             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_drain")]
98             internal static extern int Drain(IntPtr handle);
99
100             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_flush")]
101             internal static extern int Flush(IntPtr handle);
102
103             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_get_buffer_size")]
104             internal static extern int GetBufferSize(IntPtr handle, out int size);
105
106             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_get_channel")]
107             internal static extern int GetChannel(IntPtr handle, out int channel);
108
109             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_get_sample_rate")]
110             internal static extern int GetSampleRate(IntPtr handle, out int sampleRate);
111
112             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_get_sample_type")]
113             internal static extern int GetSampleType(IntPtr handle, out int sampleType);
114
115             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_get_sound_type")]
116             internal static extern int GetSoundType(IntPtr handle, out int soundType);
117
118             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_pause")]
119             internal static extern int Pause(IntPtr handle);
120
121             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_prepare")]
122             internal static extern int Prepare(IntPtr handle);
123
124             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_resume")]
125             internal static extern int Resume(IntPtr handle);
126
127             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_set_sound_stream_info")]
128             internal static extern int SetStreamInfo(IntPtr handle, IntPtr streamInfoHandle);
129
130             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_unprepare")]
131             internal static extern int Unprepare(IntPtr handle);
132
133             [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_write")]
134             internal static extern int Write(IntPtr handle, byte[] buffer, uint length);
135         }
136     }
137 }