Lines Matching refs:proxy
42 void proxy_prepare(alsa_device_proxy * proxy, alsa_device_profile* profile, in proxy_prepare() argument
47 proxy->profile = profile; in proxy_prepare()
54 proxy->alsa_config.format = config->format; in proxy_prepare()
58 proxy->alsa_config.format = profile->default_config.format; in proxy_prepare()
62 proxy->alsa_config.rate = config->rate; in proxy_prepare()
66 proxy->alsa_config.rate = profile->default_config.rate; in proxy_prepare()
70 proxy->alsa_config.channels = config->channels; in proxy_prepare()
72 proxy->alsa_config.channels = profile_get_closest_channel_count(profile, config->channels); in proxy_prepare()
74 config->channels, proxy->alsa_config.channels); in proxy_prepare()
77 proxy->alsa_config.period_count = profile->default_config.period_count; in proxy_prepare()
78 proxy->alsa_config.period_size = in proxy_prepare()
79 profile_get_period_size(proxy->profile, proxy->alsa_config.rate); in proxy_prepare()
84 if (proxy->alsa_config.period_count == 0) { in proxy_prepare()
85 proxy->alsa_config.period_count = 4; in proxy_prepare()
88 proxy->pcm = NULL; in proxy_prepare()
91 proxy->frame_size = format_byte_size_map[config->format] * proxy->alsa_config.channels; in proxy_prepare()
93 proxy->frame_size = 1; in proxy_prepare()
97 int proxy_open(alsa_device_proxy * proxy) in proxy_open() argument
99 alsa_device_profile* profile = proxy->profile; in proxy_open()
107 proxy->pcm = pcm_open(profile->card, profile->device, in proxy_open()
108 profile->direction | PCM_MONOTONIC, &proxy->alsa_config); in proxy_open()
109 if (proxy->pcm == NULL) { in proxy_open()
113 if (!pcm_is_ready(proxy->pcm)) { in proxy_open()
114 ALOGE(" proxy_open() pcm_open() failed: %s", pcm_get_error(proxy->pcm)); in proxy_open()
116 log_pcm_config(&proxy->alsa_config, "config"); in proxy_open()
118 pcm_close(proxy->pcm); in proxy_open()
119 proxy->pcm = NULL; in proxy_open()
126 void proxy_close(alsa_device_proxy * proxy) in proxy_close() argument
128 ALOGV("proxy_close() [pcm:%p]", proxy->pcm); in proxy_close()
130 if (proxy->pcm != NULL) { in proxy_close()
131 pcm_close(proxy->pcm); in proxy_close()
132 proxy->pcm = NULL; in proxy_close()
139 unsigned proxy_get_sample_rate(const alsa_device_proxy * proxy) in proxy_get_sample_rate() argument
141 return proxy->alsa_config.rate; in proxy_get_sample_rate()
147 enum pcm_format proxy_get_format(const alsa_device_proxy * proxy) in proxy_get_format() argument
149 return proxy->alsa_config.format; in proxy_get_format()
155 unsigned proxy_get_channel_count(const alsa_device_proxy * proxy) in proxy_get_channel_count() argument
157 return proxy->alsa_config.channels; in proxy_get_channel_count()
163 unsigned int proxy_get_period_size(const alsa_device_proxy * proxy) in proxy_get_period_size() argument
165 return proxy->alsa_config.period_size; in proxy_get_period_size()
168 unsigned int proxy_get_period_count(const alsa_device_proxy * proxy) in proxy_get_period_count() argument
170 return proxy->alsa_config.period_count; in proxy_get_period_count()
173 unsigned proxy_get_latency(const alsa_device_proxy * proxy) in proxy_get_latency() argument
175 return (proxy_get_period_size(proxy) * proxy_get_period_count(proxy) * 1000) in proxy_get_latency()
176 / proxy_get_sample_rate(proxy); in proxy_get_latency()
179 int proxy_get_presentation_position(const alsa_device_proxy * proxy, in proxy_get_presentation_position() argument
184 if (proxy->pcm != NULL in proxy_get_presentation_position()
185 && pcm_get_htimestamp(proxy->pcm, &avail, timestamp) == 0) { in proxy_get_presentation_position()
187 proxy->alsa_config.period_size * proxy->alsa_config.period_count; in proxy_get_presentation_position()
191 int64_t signed_frames = proxy->transferred - kernel_buffer_size + avail; in proxy_get_presentation_position()
207 int proxy_write(alsa_device_proxy * proxy, const void *data, unsigned int count) in proxy_write() argument
209 int ret = pcm_write(proxy->pcm, data, count); in proxy_write()
211 proxy->transferred += count / proxy->frame_size; in proxy_write()
216 int proxy_read(const alsa_device_proxy * proxy, void *data, unsigned int count) in proxy_read() argument
218 return pcm_read(proxy->pcm, data, count); in proxy_read()
224 void proxy_dump(const alsa_device_proxy* proxy, int fd) in proxy_dump() argument
226 if (proxy != NULL) { in proxy_dump()
227 dprintf(fd, " channels: %d\n", proxy->alsa_config.channels); in proxy_dump()
228 dprintf(fd, " rate: %d\n", proxy->alsa_config.rate); in proxy_dump()
229 dprintf(fd, " period_size: %d\n", proxy->alsa_config.period_size); in proxy_dump()
230 dprintf(fd, " period_count: %d\n", proxy->alsa_config.period_count); in proxy_dump()
231 dprintf(fd, " format: %d\n", proxy->alsa_config.format); in proxy_dump()