summaryrefslogtreecommitdiff
path: root/include/libaudio/audiohal/audio_proxy_interface.h
blob: 63934209a8c641c5275f645e6750b11690bfa5df (plain)
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 */