Home | History | Annotate | Download | only in hal

Lines Matching defs:out

1465 static void lock_output_stream(struct stream_out *out)
1467 pthread_mutex_lock(&out->pre_lock);
1468 pthread_mutex_lock(&out->lock);
1469 pthread_mutex_unlock(&out->pre_lock);
1474 struct stream_out *out = (struct stream_out *)usecase->stream;
1479 list_for_each_safe(node, next, &out->pcm_dev_list) {
1492 struct stream_out *out = (struct stream_out *)usecase->stream;
1499 list_init(&out->pcm_dev_list);
1505 list_add_tail(&out->pcm_dev_list, &pcm_device->stream_list_node);
1508 mixer_card = adev_get_mixer_for_card(out->dev, pcm_profile->card);
1520 static int out_close_pcm_devices(struct stream_out *out)
1524 struct audio_device *adev = out->dev;
1526 list_for_each(node, &out->pcm_dev_list) {
1554 static int out_open_pcm_devices(struct stream_out *out)
1558 struct audio_device *adev = out->dev;
1561 list_for_each(node, &out->pcm_dev_list) {
1590 if (out->sample_rate != pcm_device->pcm_profile->config.rate) {
1594 out->sample_rate, pcm_device->pcm_profile->config.rate);
1595 ret = create_resampler(out->sample_rate,
1597 audio_channel_count_from_out_mask(out->channel_mask),
1608 out_close_pcm_devices(out);
1612 static int disable_output_path_l(struct stream_out *out)
1614 struct audio_device *adev = out->dev;
1617 uc_info = get_usecase_from_id(adev, out->usecase);
1620 __func__, out->usecase);
1631 static void enable_output_path_l(struct stream_out *out)
1633 struct audio_device *adev = out->dev;
1637 uc_info->id = out->usecase;
1639 uc_info->stream = (struct audio_stream *)out;
1640 uc_info->devices = out->devices;
1647 select_devices(adev, out->usecase);
1650 static int stop_output_stream(struct stream_out *out)
1653 struct audio_device *adev = out->dev;
1657 out->usecase, use_case_table[out->usecase]);
1659 ret = disable_output_path_l(out);
1665 int start_output_stream(struct stream_out *out)
1668 struct audio_device *adev = out->dev;
1671 __func__, out->usecase, use_case_table[out->usecase], out->devices, out->config.channels);
1673 enable_output_path_l(out);
1675 ret = out_open_pcm_devices(out);
1681 stop_output_stream(out);
1800 struct stream_out *out = (struct stream_out *)stream;
1802 return out->sample_rate;
1814 struct stream_out *out = (struct stream_out *)stream;
1816 return out->config.period_size *
1822 struct stream_out *out = (struct stream_out *)stream;
1824 return out->channel_mask;
1829 struct stream_out *out = (struct stream_out *)stream;
1831 return out->format;
1841 static int do_out_standby_l(struct stream_out *out)
1843 struct audio_device *adev = out->dev;
1846 out->standby = true;
1847 out_close_pcm_devices(out);
1848 status = stop_output_stream(out);
1855 struct stream_out *out = (struct stream_out *)stream;
1856 struct audio_device *adev = out->dev;
1859 out->usecase, use_case_table[out->usecase]);
1860 lock_output_stream(out);
1861 if (!out->standby) {
1863 do_out_standby_l(out);
1866 pthread_mutex_unlock(&out->lock);
1881 struct stream_out *out = (struct stream_out *)stream;
1882 struct audio_device *adev = out->dev;
1896 out->devices(%d) adev->mode(%d)",
1897 __func__, out->usecase, use_case_table[out->usecase], kvpairs, out->devices, adev->mode);
1903 lock_output_stream(out);
1906 if (((int)out->devices != val) && (val != 0) && (!out->standby) &&
1907 (out->usecase == USECASE_AUDIO_PLAYBACK)) {
1918 out->devices = val;
1920 if (!out->standby) {
1921 uc_info = get_usecase_from_id(adev, out->usecase);
1924 __func__, out->usecase);
1926 list_for_each(node, &out->pcm_dev_list) {
1936 do_out_standby_l(out);
1938 select_devices(adev, out->usecase);
1942 (out == adev->primary_output)) {
1945 (out == adev->primary_output)) {
1951 (out == adev->primary_output)) {
1955 pthread_mutex_unlock(&out->lock);
1977 struct stream_out *out = (struct stream_out *)stream;
1990 while (out->supported_channel_masks[i] != 0) {
1992 if (out_channels_name_to_enum_table[j].value == out->supported_channel_masks[i]) {
2016 struct stream_out *out = (struct stream_out *)stream;
2018 return (out->config.period_count * out->config.period_size * 1000) /
2019 (out->config.rate);
2025 struct stream_out *out = (struct stream_out *)stream;
2026 struct audio_device *adev = out->dev;
2029 if (out->usecase == USECASE_AUDIO_PLAYBACK_MULTI_CH) {
2031 out->muted = (left == 0.0f);
2062 struct stream_out *out = (struct stream_out *)stream;
2063 struct audio_device *adev = out->dev;
2077 lock_output_stream(out);
2078 if (out->standby) {
2080 pthread_mutex_unlock(&out->lock);
2083 lock_output_stream(out);
2084 if (!out->standby) {
2090 ret = start_output_stream(out);
2098 out->standby = false;
2119 if (out->muted)
2121 list_for_each(node, &out->pcm_dev_list) {
2124 if (bytes * pcm_device->pcm_profile->config.rate / out->sample_rate + frame_size
2127 bytes * pcm_device->pcm_profile->config.rate / out->sample_rate + frame_size;
2142 size_t src_channels = audio_channel_count_from_out_mask(out->channel_mask);
2170 if (out->proc_buf_size < dest_buffer_size) {
2171 out->proc_buf_size = dest_buffer_size;
2172 out->proc_buf_out = realloc(out->proc_buf_out, dest_buffer_size);
2173 ALOG_ASSERT((out->proc_buf_out != NULL),
2176 new_size = adjust_channels(audio_data, src_channels, out->proc_buf_out, dst_channels,
2179 audio_data = out->proc_buf_out;
2189 out->written += bytes / frame_size;
2192 pthread_mutex_unlock(&out->lock);
2195 list_for_each(node, &out->pcm_dev_list) {
2200 out_standby(&out->stream.common);
2202 out_get_sample_rate(&out->stream.common));
2255 struct stream_out *out = (struct stream_out *)stream;
2259 lock_output_stream(out);
2262 if (!list_empty(&out->pcm_dev_list)) {
2264 struct pcm_device *pcm_device = node_to_item(list_head(&out->pcm_dev_list),
2268 size_t kernel_buffer_size = out->config.period_size * out->config.period_count;
2269 int64_t signed_frames = out->written - kernel_buffer_size + avail;
2273 (render_latency(out->usecase) * out->sample_rate / 1000000LL);
2283 pthread_mutex_unlock(&out->lock);
2693 struct stream_out *out;
2700 out = (struct stream_out *)calloc(1, sizeof(struct stream_out));
2705 out->flags = flags;
2706 out->devices = devices;
2707 out->dev = adev;
2708 out->format = config->format;
2709 out->sample_rate = config->sample_rate;
2710 out->channel_mask = AUDIO_CHANNEL_OUT_STEREO;
2711 out->supported_channel_masks[0] = AUDIO_CHANNEL_OUT_STEREO;
2712 out->handle = handle;
2719 out->config = pcm_profile->config;
2722 if (out->flags & (AUDIO_OUTPUT_FLAG_DEEP_BUFFER)) {
2723 out->usecase = USECASE_AUDIO_PLAYBACK_DEEP_BUFFER;
2724 out->config = pcm_config_deep_buffer;
2725 out->sample_rate = out->config.rate;
2728 out->usecase = USECASE_AUDIO_PLAYBACK;
2729 out->sample_rate = out->config.rate;
2734 adev->primary_output = out;
2744 if (get_usecase_from_id(adev, out->usecase) != NULL) {
2745 ALOGE("%s: Usecase (%d) is already present", __func__, out->usecase);
2752 out->stream.common.get_sample_rate = out_get_sample_rate;
2753 out->stream.common.set_sample_rate = out_set_sample_rate;
2754 out->stream.common.get_buffer_size = out_get_buffer_size;
2755 out->stream.common.get_channels = out_get_channels;
2756 out->stream.common.get_format = out_get_format;
2757 out->stream.common.set_format = out_set_format;
2758 out->stream.common.standby = out_standby;
2759 out->stream.common.dump = out_dump;
2760 out->stream.common.set_parameters = out_set_parameters;
2761 out->stream.common.get_parameters = out_get_parameters;
2762 out->stream.common.add_audio_effect = out_add_audio_effect;
2763 out->stream.common.remove_audio_effect = out_remove_audio_effect;
2764 out->stream.get_latency = out_get_latency;
2765 out->stream.set_volume = out_set_volume;
2766 out->stream.write = out_write;
2767 out->stream.get_render_position = out_get_render_position;
2768 out->stream.get_next_write_timestamp = out_get_next_write_timestamp;
2769 out->stream.get_presentation_position = out_get_presentation_position;
2771 out->standby = 1;
2772 /* out->muted = false; by calloc() */
2773 /* out->written = 0; by calloc() */
2775 pthread_mutex_init(&out->lock, (const pthread_mutexattr_t *) NULL);
2776 pthread_mutex_init(&out->pre_lock, (const pthread_mutexattr_t *) NULL);
2777 pthread_cond_init(&out->cond, (const pthread_condattr_t *) NULL);
2779 config->format = out->stream.common.get_format(&out->stream.common);
2780 config->channel_mask = out->stream.common.get_channels(&out->stream.common);
2781 config->sample_rate = out->stream.common.get_sample_rate(&out->stream.common);
2783 *stream_out = &out->stream;
2788 free(out);
2797 struct stream_out *out = (struct stream_out *)stream;
2798 struct audio_device *adev = out->dev;
2803 pthread_cond_destroy(&out->cond);
2804 pthread_mutex_destroy(&out->lock);
2805 pthread_mutex_destroy(&out->pre_lock);
2806 free(out->proc_buf_out);