resetting manifest requested domain to floor
[platform/core/multimedia/avsystem.git] / include / avsys-audio-logical-volume.h
1 /*
2  * avsystem
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Jonghyuk Choi <jhchoi.choi@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21
22 #ifndef __AVSYS_AUDIO_LOGICAL_VOLUME_H__
23 #define __AVSYS_AUDIO_LOGICAL_VOLUME_H__
24
25 #include "avsys-audio.h"
26
27 #define LVOLUME_MAX_MULTIMEDIA  16 /**< same with AVSYS_AUDIO_VOLUME_MAX_MULTIMEDIA */
28 #define LVOLUME_MAX_BASIC               8 /**< same with AVSYS_AUDIO_VOLUME_MAX_BASIC */
29 #define LVOLUME_MAX_SINGLE              1 /**< same with AVSYS_AUDIO_VOLUME_MAX_SINGLE */
30
31 #define FADE_UP_MULTIPLIER 1//2
32 #define FADE_DOWN_MULTIPLIER 1
33
34 #define AVSYS_VOLUME_INI_DEFAULT_PATH   "/usr/etc/mmfw_audio_volume.ini"
35 #define AVSYS_VOLUME_INI_TEMP_PATH              "/opt/system/mmfw_audio_volume.ini"
36
37 enum {
38         AVSYS_AUDIO_LVOL_GAIN_TYPE_0 = 0,       /* system */
39         AVSYS_AUDIO_LVOL_GAIN_TYPE_1,           /* notification */
40         AVSYS_AUDIO_LVOL_GAIN_TYPE_2,           /* alarm */
41         AVSYS_AUDIO_LVOL_GAIN_TYPE_3,           /* ringtone */
42         AVSYS_AUDIO_LVOL_GAIN_TYPE_4,           /* media */
43         AVSYS_AUDIO_LVOL_GAIN_TYPE_5,           /* call */
44         AVSYS_AUDIO_LVOL_GAIN_TYPE_6,           /* voip */
45         AVSYS_AUDIO_LVOL_GAIN_TYPE_7,           /* android */
46         AVSYS_AUDIO_LVOL_GAIN_TYPE_8,           /* java */
47         AVSYS_AUDIO_LVOL_GAIN_TYPE_MAX,
48 };
49
50 enum {
51         AVSYS_AUDIO_LVOL_GAIN_EXT_DIALER                = 1<<8,
52         AVSYS_AUDIO_LVOL_GAIN_EXT_TOUCH                 = 2<<8,
53         AVSYS_AUDIO_LVOL_GAIN_EXT_AF                    = 3<<8,
54         AVSYS_AUDIO_LVOL_GAIN_EXT_SHUTTER1              = 4<<8,
55         AVSYS_AUDIO_LVOL_GAIN_EXT_SHUTTER2              = 5<<8,
56         AVSYS_AUDIO_LVOL_GAIN_EXT_CAMCORDING    = 6<<8,
57         AVSYS_AUDIO_LVOL_GAIN_EXT_MIDI                  = 7<<8,
58         AVSYS_AUDIO_LVOL_GAIN_EXT_BOOTING               = 8<<8,
59         AVSYS_AUDIO_LVOL_GAIN_EXT_VIDEO                 = 9<<8,
60         AVSYS_AUDIO_LVOL_GAIN_EXT_VIDEO_HDMI    = 10<<8,
61         AVSYS_AUDIO_LVOL_GAIN_EXT_TYPE_MAX,
62         AVSYS_AUDIO_LVOL_GAIN_EXT_TYPE_MAX_IDX          = AVSYS_AUDIO_LVOL_GAIN_EXT_TYPE_MAX>>8
63 };
64
65 enum
66 {
67         AVSYS_AUDIO_LVOL_DEV_TYPE_SPK,
68         AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET,
69         AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET,
70         AVSYS_AUDIO_LVOL_DEV_TYPE_MAX,
71 };
72
73 typedef struct {
74         struct {
75                 int max_level;
76                 avsys_audio_volume_t logical_values[LVOLUME_MAX_MULTIMEDIA];
77         } devices[AVSYS_AUDIO_LVOL_DEV_TYPE_MAX];
78 } avsys_audio_lvol_volume_info_t;
79
80 typedef struct {
81         float devices[AVSYS_AUDIO_LVOL_DEV_TYPE_MAX];
82 } avsys_audio_lvol_gain_info_t;
83
84 typedef struct {
85         avsys_audio_lvol_volume_info_t volume_table[AVSYS_AUDIO_LVOL_GAIN_TYPE_MAX];
86         avsys_audio_lvol_gain_info_t gain_table[AVSYS_AUDIO_LVOL_GAIN_EXT_TYPE_MAX_IDX];
87 } avsys_audio_lvol_info_t;
88
89 typedef struct {
90         int volume_config;
91         int dev_type;
92         int max_level;
93 } avsys_audio_volume_setting_t;
94
95 int avsys_audio_logical_volume_get_max(int volume_type, int dev_type, int *max_level);
96 int avsys_audio_logical_volume_set_table(int volume_config, int dev_type, avsys_audio_volume_setting_t *setting);
97 int avsys_audio_logical_volume_update_table(int dev_type, avsys_audio_volume_setting_t *setting);
98 int avsys_audio_logical_volume_convert(avsys_audio_volume_t *level, avsys_audio_volume_t *converted, avsys_audio_volume_setting_t *setting);
99 /* Tuning */
100 int avsys_audio_logical_volume_init(void);
101 int avsys_audio_logical_volume_set_to_table(int volume_type, int dev_type, int step, int lv, int rv);
102 int avsys_audio_logical_volume_get_from_table(int volume_type, int dev_type, int step, int *lv, int *rv);
103 int avsys_audio_logical_volume_set_gain_to_table(int volume_gain, int dev_type, float lv, float rv);
104 int avsys_audio_logical_volume_get_gain_from_table(int volume_gain, int dev_type, float*lv, float *rv);
105 int avsys_audio_load_volume_from_ini(void);
106
107 #endif /* __AVSYS_AUDIO_LOGICAL_VOLUME_H__ */