1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef AUDIO_PROXY_INTERFACE_H
#define AUDIO_PROXY_INTERFACE_H
/* Volume Type */
enum {
VOLUME_TYPE_OFFLOAD = 0,
};
/* Compress Function Type */
enum {
COMPRESS_TYPE_WAIT = 0,
COMPRESS_TYPE_NEXTTRACK,
COMPRESS_TYPE_PARTIALDRAIN,
COMPRESS_TYPE_DRAIN,
};
/* Special Audio Device Type */
enum {
BUILTIN_HANDSET = 0,
BUILTIN_SPEAKER,
BUILTIN_MIC,
PROXIMITY_SENSOR,
};
/* Audio Device Configuration Type */
enum {
DEVICE_CONFIG_NONE = 0,
DEVICE_CONFIG_INTERNAL,
DEVICE_CONFIG_EXTERNAL,
};
enum {
DEVICE_BLUETOOTH = 0,
DEVICE_FMRADIO,
};
/* A-Box Configuration Type */
enum {
NEED_VOICEPCM_REOPEN = 0,
SUPPORT_USB_BY_PRIMARY,
SUPPORT_A2DP_BY_PRIMARY,
};
// Audio Capability Check Utility Functions
int get_supported_device_number(void *proxy, int device_type);
int get_supported_config(void *proxy, int device_type);
bool is_needed_config(void *proxy, int config_type);
// Audio Usage Check Utility Functions
bool is_active_usage_APCall(void *proxy);
bool is_usage_CPCall(audio_usage ausage);
bool is_active_usage_CPCall(void *proxy);
bool is_usage_APCall(audio_usage ausage);
// Audio Stream Proxy Get/Set Fungtions
uint32_t proxy_get_actual_channel_count(void *proxy_stream); // Return Actual Channel Count
uint32_t proxy_get_actual_sampling_rate(void *proxy_stream); // Return Actual Samplung Rate
uint32_t proxy_get_actual_period_size(void *proxy_stream);
uint32_t proxy_get_actual_period_count(void *proxy_stream);
int32_t proxy_get_actual_format(void *proxy_stream); // Return Actual Android Audio Format, not PCM Format
// Audio Stream Proxy Offload Functions
void proxy_offload_set_nonblock(void *proxy_stream);
int proxy_offload_compress_func(void *proxy_stream, int func_type);
int proxy_offload_pause(void *proxy_stream);
int proxy_offload_resume(void *proxy_stream);
// Audio Stream Proxy Playback Stream Functions
void *proxy_create_playback_stream(void *proxy, int type, void *config, char *address);
void proxy_destroy_playback_stream(void *proxy_stream);
int proxy_close_playback_stream(void *proxy_stream);
int proxy_open_playback_stream(void *proxy_stream, int32_t min_size_frames, void *mmap_info);
int proxy_start_playback_stream(void *proxy_stream);
int proxy_write_playback_buffer(void *proxy_stream, void *buffer, int bytes);
int proxy_stop_playback_stream(void *proxy_stream);
int proxy_reconfig_playback_stream(void *proxy_stream, int type, void *config);
int proxy_get_render_position(void *proxy_stream, uint32_t *frames);
int proxy_get_presen_position(void *proxy_stream, uint64_t *frames, struct timespec *timestamp);
char *proxy_getparam_playback_stream(void *proxy_stream, const char *keys);
int proxy_setparam_playback_stream(void *proxy_stream, void *parameters);
uint32_t proxy_get_playback_latency(void *proxy_stream);
void proxy_dump_playback_stream(void *proxy_stream, int fd);
// Audio Stream Proxy Capture Stream Functions
void *proxy_create_capture_stream(void *proxy, int type, int usage, void *config, char *address);
void proxy_destroy_capture_stream(void *proxy_stream);
int proxy_close_capture_stream(void *proxy_stream);
int proxy_open_capture_stream(void *proxy_stream, int32_t min_size_frames, void *mmap_info);
int proxy_start_capture_stream(void *proxy_stream);
int proxy_read_capture_buffer(void *proxy_stream, void *buffer, int bytes);
int proxy_stop_capture_stream(void *proxy_stream);
int proxy_reconfig_capture_stream(void *proxy_stream, int type, int usage);
int __proxy_get_capture_position(void *proxy_stream, int64_t *frames, int64_t *time);
char *proxy_getparam_capture_stream(void *proxy_stream, const char *keys);
int proxy_setparam_capture_stream(void *proxy_stream, void *parameters);
void proxy_dump_capture_stream(void *proxy_stream, int fd);
int proxy_get_mmap_position(void *proxy_stream, void *pos);
// Audio Device Proxy Path Route Functions
bool proxy_init_route(void *proxy, char *path);
void proxy_deinit_route(void *proxy);
bool proxy_update_route(void *proxy, int ausage, int device);
bool proxy_set_route(void *proxy, int ausage, int device, int modifier, bool set);
// Audio Device Proxy Functions
void proxy_stop_voice_call(void *proxy);
void proxy_start_voice_call(void *proxy);
void proxy_stop_fm_radio(void *proxy);
void proxy_start_fm_radio(void *proxy);
int proxy_get_mixer_value_int(void *proxy, const char *name);
int proxy_get_mixer_value_array(void *proxy, const char *name, void *value, int count);
void proxy_set_mixer_value_int(void *proxy, const char *name, int value);
void proxy_set_mixer_value_string(void *proxy, const char *name, const char *value);
void proxy_set_mixer_value_array(void *proxy, const char *name, const void *value, int count);
void proxy_set_audiomode(void *proxy, int audiomode);
void proxy_set_volume(void *proxy, int volume_type, float left, float right);
void proxy_set_upscale(void *proxy, int sampling_rate, int pcm_format);
#ifdef SUPPORT_STHAL_INTERFACE
int proxy_check_sthalstate(void *proxy);
#endif
void proxy_call_status(void *proxy, int status);
int proxy_set_parameters(void *proxy, void *parameters);
void proxy_init_offload_effect_lib(void *proxy);
void proxy_update_offload_effect(void *proxy_stream, int type);
// Audio Device Proxy Dump Function
int proxy_fw_dump(int fd);
// Audio Device Proxy Creation/Destruction
bool proxy_is_initialized(void);
void *proxy_init(void);
void proxy_deinit(void *proxy);
#endif /* AUDIO_PROXY_INTERFACE_H */
|