[AudioManager] Add new class for audio ducking (#979)
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia / Interop / Interop.Ducking.cs
1 /*
2  * Copyright (c) 2019 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 namespace Tizen.Multimedia
21 {
22     internal static partial class Interop
23     {
24         internal static partial class AudioDucking
25         {
26             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
27             internal delegate void DuckingStateChangedCallback(AudioDuckingHandle ducking, bool isDucked, IntPtr userData);
28
29             [DllImport(Libraries.SoundManager, EntryPoint = "sound_manager_create_stream_ducking")]
30             internal static extern AudioManagerError Create(AudioStreamType targetType,
31                 DuckingStateChangedCallback callback, IntPtr userData, out AudioDuckingHandle ducking);
32
33             [DllImport(Libraries.SoundManager, EntryPoint = "sound_manager_destroy_stream_ducking")]
34             internal static extern AudioManagerError Destroy(IntPtr ducking);
35
36             [DllImport(Libraries.SoundManager, EntryPoint = "sound_manager_is_ducked")]
37             internal static extern AudioManagerError IsDucked(AudioDuckingHandle ducking, out bool isDucked);
38
39             [DllImport(Libraries.SoundManager, EntryPoint = "sound_manager_activate_ducking")]
40             internal static extern AudioManagerError Activate(AudioDuckingHandle ducking, uint duration, double ratio);
41
42             [DllImport(Libraries.SoundManager, EntryPoint = "sound_manager_deactivate_ducking")]
43             internal static extern AudioManagerError Deactivate(AudioDuckingHandle ducking);
44         }
45     }
46 }