Home | History | Annotate | Download | only in audio

Lines Matching defs:out

89 static int start_output_stream(struct alsa_stream_out *out)
91 struct alsa_audio_device *adev = out->dev;
93 if (out->unavailable)
99 out->write_threshold = PLAYBACK_PERIOD_COUNT * PERIOD_SIZE;
100 out->config.start_threshold = PLAYBACK_PERIOD_START_THRESHOLD * PERIOD_SIZE;
101 out->config.avail_min = PERIOD_SIZE;
103 out->pcm = pcm_open(CARD_OUT, PORT_CODEC, PCM_OUT | PCM_MMAP | PCM_NOIRQ | PCM_MONOTONIC, &out->config);
105 if (!pcm_is_ready(out->pcm)) {
106 ALOGE("cannot open pcm_out driver: %s", pcm_get_error(out->pcm));
107 pcm_close(out->pcm);
109 out->unavailable = true;
113 adev->active_output = out;
119 struct alsa_stream_out *out = (struct alsa_stream_out *)stream;
120 return out->config.rate;
132 struct alsa_stream_out *out = (struct alsa_stream_out *)stream;
144 struct alsa_stream_out *out = (struct alsa_stream_out *)stream;
145 return audio_channel_out_mask_from_count(out->config.channels);
151 struct alsa_stream_out *out = (struct alsa_stream_out *)stream;
152 return audio_format_from_pcm_format(out->config.format);
161 static int do_output_standby(struct alsa_stream_out *out)
163 struct alsa_audio_device *adev = out->dev;
165 if (!out->standby) {
166 pcm_close(out->pcm);
167 out->pcm = NULL;
169 out->standby = 1;
177 struct alsa_stream_out *out = (struct alsa_stream_out *)stream;
180 pthread_mutex_lock(&out->dev->lock);
181 pthread_mutex_lock(&out->lock);
182 status = do_output_standby(out);
183 pthread_mutex_unlock(&out->lock);
184 pthread_mutex_unlock(&out->dev->lock);
197 struct alsa_stream_out *out = (struct alsa_stream_out *)stream;
198 struct alsa_audio_device *adev = out->dev;
210 pthread_mutex_lock(&out->lock);
215 pthread_mutex_unlock(&out->lock);
232 struct alsa_stream_out *out = (struct alsa_stream_out *)stream;
233 return (PERIOD_SIZE * PLAYBACK_PERIOD_COUNT * 1000) / out->config.rate;
247 struct alsa_stream_out *out = (struct alsa_stream_out *)stream;
248 struct alsa_audio_device *adev = out->dev;
258 pthread_mutex_lock(&out->lock);
259 if (out->standby) {
260 ret = start_output_stream(out);
265 out->standby = 0;
270 ret = pcm_mmap_write(out->pcm, buffer, out_frames * frame_size);
272 out->written += out_frames;
275 pthread_mutex_unlock(&out->lock);
296 struct alsa_stream_out *out = (struct alsa_stream_out *)stream;
299 if (out->pcm) {
301 if (pcm_get_htimestamp(out->pcm, &avail, timestamp) == 0) {
302 size_t kernel_buffer_size = out->config.period_size * out->config.period_count;
303 int64_t signed_frames = out->written - kernel_buffer_size + avail;
433 struct alsa_stream_out *out;
441 out = (struct alsa_stream_out *)calloc(1, sizeof(struct alsa_stream_out));
442 if (!out)
445 out->stream.common.get_sample_rate = out_get_sample_rate;
446 out->stream.common.set_sample_rate = out_set_sample_rate;
447 out->stream.common.get_buffer_size = out_get_buffer_size;
448 out->stream.common.get_channels = out_get_channels;
449 out->stream.common.get_format = out_get_format;
450 out->stream.common.set_format = out_set_format;
451 out->stream.common.standby = out_standby;
452 out->stream.common.dump = out_dump;
453 out->stream.common.set_parameters = out_set_parameters;
454 out->stream.common.get_parameters = out_get_parameters;
455 out->stream.common.add_audio_effect = out_add_audio_effect;
456 out->stream.common.remove_audio_effect = out_remove_audio_effect;
457 out->stream.get_latency = out_get_latency;
458 out->stream.set_volume = out_set_volume;
459 out->stream.write = out_write;
460 out->stream.get_render_position = out_get_render_position;
461 out->stream.get_next_write_timestamp = out_get_next_write_timestamp;
462 out->stream.get_presentation_position = out_get_presentation_position;
464 out->config.channels = CHANNEL_STEREO;
465 out->config.rate = CODEC_SAMPLING_RATE;
466 out->config.format = PCM_FORMAT_S16_LE;
467 out->config.period_size = PERIOD_SIZE;
468 out->config.period_count = PLAYBACK_PERIOD_COUNT;
470 if (out->config.rate != config->sample_rate ||
472 out->config.format != pcm_format_from_audio_format(config->format) ) {
473 config->sample_rate = out->config.rate;
474 config->format = audio_format_from_pcm_format(out->config.format);
480 out->config.channels, out->config.rate, out->config.format);
482 out->dev = ladev;
483 out->standby = 1;
484 out->unavailable = false;
486 config->format = out_get_format(&out->stream.common);
487 config->channel_mask = out_get_channels(&out->stream.common);
488 config->sample_rate = out_get_sample_rate(&out->stream.common);
490 *stream_out = &out->stream;