1 #ifndef footizenaudiofoo
2 #define footizenaudiofoo
7 * Copyright (c) 2015 - 2016 Samsung Electronics Co., Ltd. All rights reserved.
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
26 typedef enum audio_return {
28 AUDIO_ERR_UNDEFINED = (int32_t)0x80001000,
29 AUDIO_ERR_RESOURCE = (int32_t)0x80001001,
30 AUDIO_ERR_PARAMETER = (int32_t)0x80001002,
31 AUDIO_ERR_IOCTL = (int32_t)0x80001003,
32 AUDIO_ERR_INVALID_STATE = (int32_t)0x80001004,
33 AUDIO_ERR_INTERNAL = (int32_t)0x80001005,
35 AUDIO_ERR_NOT_IMPLEMENTED = (int32_t)0x80001100,
38 typedef enum audio_direction {
39 AUDIO_DIRECTION_IN, /**< Capture */
40 AUDIO_DIRECTION_OUT, /**< Playback */
43 typedef struct device_info {
49 typedef struct audio_volume_info {
53 } audio_volume_info_t ;
55 typedef struct audio_route_info {
57 device_info_t *device_infos;
58 uint32_t num_of_devices;
61 typedef struct audio_route_option {
65 } audio_route_option_t;
67 typedef struct audio_stream_info {
71 } audio_stream_info_t ;
74 typedef struct audio_interface {
75 /* Initialization & de-initialization */
76 audio_return_t (*init)(void **audio_handle);
77 audio_return_t (*deinit)(void *audio_handle);
79 audio_return_t (*get_volume_level_max)(void *audio_handle, audio_volume_info_t *info, uint32_t *level);
80 audio_return_t (*get_volume_level)(void *audio_handle, audio_volume_info_t *info, uint32_t *level);
81 audio_return_t (*set_volume_level)(void *audio_handle, audio_volume_info_t *info, uint32_t level);
82 audio_return_t (*get_volume_value)(void *audio_handle, audio_volume_info_t *info, uint32_t level, double *value);
83 audio_return_t (*get_volume_mute)(void *audio_handle, audio_volume_info_t *info, uint32_t *mute);
84 audio_return_t (*set_volume_mute)(void *audio_handle, audio_volume_info_t *info, uint32_t mute);
86 audio_return_t (*update_route)(void *audio_handle, audio_route_info_t *info);
87 audio_return_t (*update_route_option)(void *audio_handle, audio_route_option_t *option);
89 audio_return_t (*notify_stream_connection_changed)(void *audio_handle, audio_stream_info_t *info, uint32_t is_connected);
90 audio_return_t (*get_buffer_attr)(void *audio_handle, uint32_t direction, const char *latency, uint32_t samplerate, int format, uint32_t channels,
91 uint32_t *maxlength, uint32_t *tlength, uint32_t *prebuf, uint32_t* minreq, uint32_t *fragsize);
93 audio_return_t (*pcm_open)(void *audio_handle, void **pcm_handle, uint32_t direction, void *sample_spec, uint32_t period_size, uint32_t periods);
94 audio_return_t (*pcm_start)(void *audio_handle, void *pcm_handle);
95 audio_return_t (*pcm_stop)(void *audio_handle, void *pcm_handle);
96 audio_return_t (*pcm_close)(void *audio_handle, void *pcm_handle);
97 audio_return_t (*pcm_avail)(void *audio_handle, void *pcm_handle, uint32_t *avail);
98 audio_return_t (*pcm_write)(void *audio_handle, void *pcm_handle, const void *buffer, uint32_t frames);
99 audio_return_t (*pcm_read)(void *audio_handle, void *pcm_handle, void *buffer, uint32_t frames);
100 audio_return_t (*pcm_get_fd)(void *audio_handle, void *pcm_handle, int *fd);
101 audio_return_t (*pcm_recover)(void *audio_handle, void *pcm_handle, int revents);
102 audio_return_t (*pcm_get_params)(void *audio_handle, void *pcm_handle, uint32_t direction, void **sample_spec, uint32_t *period_size, uint32_t *periods);
103 audio_return_t (*pcm_set_params)(void *audio_handle, void *pcm_handle, uint32_t direction, void *sample_spec, uint32_t period_size, uint32_t periods);
106 audio_return_t audio_init(void **audio_handle);
107 audio_return_t audio_deinit(void *audio_handle);
108 audio_return_t audio_get_volume_level_max(void *audio_handle, audio_volume_info_t *info, uint32_t *level);
109 audio_return_t audio_get_volume_level(void *audio_handle, audio_volume_info_t *info, uint32_t *level);
110 audio_return_t audio_set_volume_level(void *audio_handle, audio_volume_info_t *info, uint32_t level);
111 audio_return_t audio_get_volume_value(void *audio_handle, audio_volume_info_t *info, uint32_t level, double *value);
112 audio_return_t audio_get_volume_mute(void *audio_handle, audio_volume_info_t *info, uint32_t *mute);
113 audio_return_t audio_set_volume_mute(void *audio_handle, audio_volume_info_t *info, uint32_t mute);
114 audio_return_t audio_update_route(void *audio_handle, audio_route_info_t *info);
115 audio_return_t audio_update_route_option(void *audio_handle, audio_route_option_t *option);
116 audio_return_t audio_notify_stream_connection_changed(void *audio_handle, audio_stream_info_t *info, uint32_t is_connected);
117 audio_return_t audio_get_buffer_attr(void *audio_handle, uint32_t direction, const char *latency, uint32_t samplerate, int format, uint32_t channels,
118 uint32_t *maxlength, uint32_t *tlength, uint32_t *prebuf, uint32_t* minreq, uint32_t *fragsize);
119 audio_return_t audio_pcm_open(void *audio_handle, void **pcm_handle, uint32_t direction, void *sample_spec, uint32_t period_size, uint32_t periods);
120 audio_return_t audio_pcm_start(void *audio_handle, void *pcm_handle);
121 audio_return_t audio_pcm_stop(void *audio_handle, void *pcm_handle);
122 audio_return_t audio_pcm_close(void *audio_handle, void *pcm_handle);
123 audio_return_t audio_pcm_avail(void *audio_handle, void *pcm_handle, uint32_t *avail);
124 audio_return_t audio_pcm_write(void *audio_handle, void *pcm_handle, const void *buffer, uint32_t frames);
125 audio_return_t audio_pcm_read(void *audio_handle, void *pcm_handle, void *buffer, uint32_t frames);
126 audio_return_t audio_pcm_get_fd(void *audio_handle, void *pcm_handle, int *fd);
127 audio_return_t audio_pcm_recover(void *audio_handle, void *pcm_handle, int revents);
128 audio_return_t audio_pcm_get_params(void *audio_handle, void *pcm_handle, uint32_t direction, void **sample_spec, uint32_t *period_size, uint32_t *periods);
129 audio_return_t audio_pcm_set_params(void *audio_handle, void *pcm_handle, uint32_t direction, void *sample_spec, uint32_t period_size, uint32_t periods);