4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Jonghyuk Choi <jhchoi.choi@samsung.com>
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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.
22 #ifndef __AVSYS_AUDIO_LOGICAL_VOLUME_H__
23 #define __AVSYS_AUDIO_LOGICAL_VOLUME_H__
25 #include "avsys-audio.h"
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 */
31 #define FADE_UP_MULTIPLIER 1//2
32 #define FADE_DOWN_MULTIPLIER 1
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"
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,
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
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,
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;
81 float devices[AVSYS_AUDIO_LVOL_DEV_TYPE_MAX];
82 } avsys_audio_lvol_gain_info_t;
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;
93 } avsys_audio_volume_setting_t;
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);
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);
107 #endif /* __AVSYS_AUDIO_LOGICAL_VOLUME_H__ */