2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 using System.Runtime.InteropServices;
20 internal static partial class Interop
22 internal static partial class AudioIO
24 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
25 public delegate void AudioStreamCallback(IntPtr handle, uint nbytes, IntPtr userdata);
27 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
28 public delegate void AudioStateChangedCallback(IntPtr handle, int previous, int current, bool byPolicy, IntPtr userData);
30 internal static partial class AudioInput
32 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_set_state_changed_cb")]
33 internal static extern int SetStateChangedCallback(IntPtr handle, AudioStateChangedCallback callback, IntPtr user_data);
35 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_set_stream_cb")]
36 internal static extern int SetStreamCallback(IntPtr handle, AudioStreamCallback callback, IntPtr user_data);
38 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_create")]
39 internal static extern int Create(int sampleRate, int channel, int type, out IntPtr handle);
41 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_destroy")]
42 internal static extern int Destroy(IntPtr handle);
44 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_set_sound_stream_info")]
45 internal static extern int SetStreamInfo(IntPtr handle, IntPtr streamInfoHandle);
47 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_prepare")]
48 internal static extern int Prepare(IntPtr handle);
50 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_unprepare")]
51 internal static extern int Unprepare(IntPtr handle);
53 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_pause")]
54 internal static extern int Pause(IntPtr handle);
56 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_resume")]
57 internal static extern int Resume(IntPtr handle);
59 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_flush")]
60 internal static extern int Flush(IntPtr handle);
62 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_read")]
63 internal static extern int Read(IntPtr handle, byte[] buffer, int length);
65 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_get_buffer_size")]
66 internal static extern int GetBufferSize(IntPtr handle, out int size);
68 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_get_sample_rate")]
69 internal static extern int GetSampleRate(IntPtr handle, out int sampleRate);
71 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_get_channel")]
72 internal static extern int GetChannel(IntPtr handle, out int channel);
74 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_get_sample_type")]
75 internal static extern int GetSampleType(IntPtr handle, out int sampleType);
77 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_peek")]
78 internal static extern int Peek(IntPtr handle, out IntPtr buffer, ref uint length);
80 [DllImport(Libraries.AudioIO, EntryPoint = "audio_in_drop")]
81 internal static extern int Drop(IntPtr handle);
83 internal static partial class AudioOutput
85 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_set_state_changed_cb")]
86 internal static extern int SetStateChangedCallback(IntPtr handle, AudioStateChangedCallback callback, IntPtr user_data);
88 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_set_stream_cb")]
89 internal static extern int SetStreamChangedCallback(IntPtr handle, AudioStreamCallback callback, IntPtr user_data);
91 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_create_new")]
92 internal static extern int Create(int sampleRate, int channel, int type, out IntPtr handle);
94 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_destroy")]
95 internal static extern int Destroy(IntPtr handle);
97 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_drain")]
98 internal static extern int Drain(IntPtr handle);
100 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_flush")]
101 internal static extern int Flush(IntPtr handle);
103 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_get_buffer_size")]
104 internal static extern int GetBufferSize(IntPtr handle, out int size);
106 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_get_channel")]
107 internal static extern int GetChannel(IntPtr handle, out int channel);
109 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_get_sample_rate")]
110 internal static extern int GetSampleRate(IntPtr handle, out int sampleRate);
112 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_get_sample_type")]
113 internal static extern int GetSampleType(IntPtr handle, out int sampleType);
115 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_get_sound_type")]
116 internal static extern int GetSoundType(IntPtr handle, out int soundType);
118 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_pause")]
119 internal static extern int Pause(IntPtr handle);
121 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_prepare")]
122 internal static extern int Prepare(IntPtr handle);
124 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_resume")]
125 internal static extern int Resume(IntPtr handle);
127 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_set_sound_stream_info")]
128 internal static extern int SetStreamInfo(IntPtr handle, IntPtr streamInfoHandle);
130 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_unprepare")]
131 internal static extern int Unprepare(IntPtr handle);
133 [DllImport(Libraries.AudioIO, EntryPoint = "audio_out_write")]
134 internal static extern int Write(IntPtr handle, byte[] buffer, uint length);