Lines Matching defs:out
1467 static void lock_output_stream(struct stream_out *out)
1469 pthread_mutex_lock(&out->pre_lock);
1470 pthread_mutex_lock(&out->lock);
1471 pthread_mutex_unlock(&out->pre_lock);
1476 struct stream_out *out = (struct stream_out *)usecase->stream;
1481 list_for_each_safe(node, next, &out->pcm_dev_list) {
1494 struct stream_out *out = (struct stream_out *)usecase->stream;
1501 list_init(&out->pcm_dev_list);
1507 list_add_tail(&out->pcm_dev_list, &pcm_device->stream_list_node);
1510 mixer_card = adev_get_mixer_for_card(out->dev, pcm_profile->card);
1522 static int out_close_pcm_devices(struct stream_out *out)
1526 struct audio_device *adev = out->dev;
1528 list_for_each(node, &out->pcm_dev_list) {
1556 static int out_open_pcm_devices(struct stream_out *out)
1560 struct audio_device *adev = out->dev;
1563 list_for_each(node, &out->pcm_dev_list) {
1592 if (out->sample_rate != pcm_device->pcm_profile->config.rate) {
1596 out->sample_rate, pcm_device->pcm_profile->config.rate);
1597 ret = create_resampler(out->sample_rate,
1599 audio_channel_count_from_out_mask(out->channel_mask),
1610 out_close_pcm_devices(out);
1614 static int disable_output_path_l(struct stream_out *out)
1616 struct audio_device *adev = out->dev;
1619 uc_info = get_usecase_from_id(adev, out->usecase);
1622 __func__, out->usecase);
1633 static void enable_output_path_l(struct stream_out *out)
1635 struct audio_device *adev = out->dev;
1639 uc_info->id = out->usecase;
1641 uc_info->stream = (struct audio_stream *)out;
1642 uc_info->devices = out->devices;
1649 select_devices(adev, out->usecase);
1652 static int stop_output_stream(struct stream_out *out)
1655 struct audio_device *adev = out->dev;
1659 out->usecase, use_case_table[out->usecase]);
1661 ret = disable_output_path_l(out);
1667 int start_output_stream(struct stream_out *out)
1670 struct audio_device *adev = out->dev;
1673 __func__, out->usecase, use_case_table[out->usecase], out->devices, out->config.channels);
1675 enable_output_path_l(out);
1677 ret = out_open_pcm_devices(out);
1683 stop_output_stream(out);
1802 struct stream_out *out = (struct stream_out *)stream;
1804 return out->sample_rate;
1816 struct stream_out *out = (struct stream_out *)stream;
1818 return out->config.period_size *
1824 struct stream_out *out = (struct stream_out *)stream;
1826 return out->channel_mask;
1831 struct stream_out *out = (struct stream_out *)stream;
1833 return out->format;
1843 static int do_out_standby_l(struct stream_out *out)
1845 struct audio_device *adev = out->dev;
1848 out->standby = true;
1849 out_close_pcm_devices(out);
1850 status = stop_output_stream(out);
1857 struct stream_out *out = (struct stream_out *)stream;
1858 struct audio_device *adev = out->dev;
1861 out->usecase, use_case_table[out->usecase]);
1862 lock_output_stream(out);
1863 if (!out->standby) {
1865 do_out_standby_l(out);
1868 pthread_mutex_unlock(&out->lock);
1883 struct stream_out *out = (struct stream_out *)stream;
1884 struct audio_device *adev = out->dev;
1897 ALOGV("%s: enter: usecase(%d: %s) kvpairs: %s out->devices(%d) adev->mode(%d)",
1898 __func__, out->usecase, use_case_table[out->usecase], kvpairs, out->devices, adev->mode);
1904 lock_output_stream(out);
1907 if (((int)out->devices != val) && (val != 0) && (!out->standby) &&
1908 (out->usecase == USECASE_AUDIO_PLAYBACK)) {
1919 devices_changed = out->devices != (audio_devices_t)val;
1920 out->devices = val;
1922 if (!out->standby) {
1924 do_out_standby_l(out);
1926 select_devices(adev, out->usecase);
1930 (out == adev->primary_output)) {
1933 (out == adev->primary_output)) {
1939 (out == adev->primary_output)) {
1943 pthread_mutex_unlock(&out->lock);
1965 struct stream_out *out = (struct stream_out *)stream;
1978 while (out->supported_channel_masks[i] != 0) {
1980 if (out_channels_name_to_enum_table[j].value == out->supported_channel_masks[i]) {
2004 struct stream_out *out = (struct stream_out *)stream;
2006 return (out->config.period_count * out->config.period_size * 1000) /
2007 (out->config.rate);
2013 struct stream_out *out = (struct stream_out *)stream;
2014 struct audio_device *adev = out->dev;
2017 if (out->usecase == USECASE_AUDIO_PLAYBACK_MULTI_CH) {
2019 out->muted = (left == 0.0f);
2050 struct stream_out *out = (struct stream_out *)stream;
2051 struct audio_device *adev = out->dev;
2065 lock_output_stream(out);
2066 if (out->standby) {
2068 pthread_mutex_unlock(&out->lock);
2071 lock_output_stream(out);
2072 if (!out->standby) {
2078 ret = start_output_stream(out);
2086 out->standby = false;
2107 if (out->muted)
2109 list_for_each(node, &out->pcm_dev_list) {
2112 if (bytes * pcm_device->pcm_profile->config.rate / out->sample_rate + frame_size
2115 bytes * pcm_device->pcm_profile->config.rate / out->sample_rate + frame_size;
2130 size_t src_channels = audio_channel_count_from_out_mask(out->channel_mask);
2158 if (out->proc_buf_size < dest_buffer_size) {
2159 out->proc_buf_size = dest_buffer_size;
2160 out->proc_buf_out = realloc(out->proc_buf_out, dest_buffer_size);
2161 ALOG_ASSERT((out->proc_buf_out != NULL),
2164 new_size = adjust_channels(audio_data, src_channels, out->proc_buf_out, dst_channels,
2167 audio_data = out->proc_buf_out;
2177 out->written += bytes / frame_size;
2180 pthread_mutex_unlock(&out->lock);
2183 list_for_each(node, &out->pcm_dev_list) {
2188 out_standby(&out->stream.common);
2190 out_get_sample_rate(&out->stream.common));
2243 struct stream_out *out = (struct stream_out *)stream;
2247 lock_output_stream(out);
2250 if (!list_empty(&out->pcm_dev_list)) {
2252 struct pcm_device *pcm_device = node_to_item(list_head(&out->pcm_dev_list),
2256 size_t kernel_buffer_size = out->config.period_size * out->config.period_count;
2257 int64_t signed_frames = out->written - kernel_buffer_size + avail;
2261 (render_latency(out->usecase) * out->sample_rate / 1000000LL);
2271 pthread_mutex_unlock(&out->lock);
2681 struct stream_out *out;
2688 out = (struct stream_out *)calloc(1, sizeof(struct stream_out));
2693 out->flags = flags;
2694 out->devices = devices;
2695 out->dev = adev;
2696 out->format = config->format;
2697 out->sample_rate = config->sample_rate;
2698 out->channel_mask = AUDIO_CHANNEL_OUT_STEREO;
2699 out->supported_channel_masks[0] = AUDIO_CHANNEL_OUT_STEREO;
2700 out->handle = handle;
2707 out->config = pcm_profile->config;
2710 if (out->flags & (AUDIO_OUTPUT_FLAG_DEEP_BUFFER)) {
2711 out->usecase = USECASE_AUDIO_PLAYBACK_DEEP_BUFFER;
2712 out->config = pcm_config_deep_buffer;
2713 out->sample_rate = out->config.rate;
2716 out->usecase = USECASE_AUDIO_PLAYBACK;
2717 out->sample_rate = out->config.rate;
2722 adev->primary_output = out;
2732 if (get_usecase_from_id(adev, out->usecase) != NULL) {
2733 ALOGE("%s: Usecase (%d) is already present", __func__, out->usecase);
2740 out->stream.common.get_sample_rate = out_get_sample_rate;
2741 out->stream.common.set_sample_rate = out_set_sample_rate;
2742 out->stream.common.get_buffer_size = out_get_buffer_size;
2743 out->stream.common.get_channels = out_get_channels;
2744 out->stream.common.get_format = out_get_format;
2745 out->stream.common.set_format = out_set_format;
2746 out->stream.common.standby = out_standby;
2747 out->stream.common.dump = out_dump;
2748 out->stream.common.set_parameters = out_set_parameters;
2749 out->stream.common.get_parameters = out_get_parameters;
2750 out->stream.common.add_audio_effect = out_add_audio_effect;
2751 out->stream.common.remove_audio_effect = out_remove_audio_effect;
2752 out->stream.get_latency = out_get_latency;
2753 out->stream.set_volume = out_set_volume;
2754 out->stream.write = out_write;
2755 out->stream.get_render_position = out_get_render_position;
2756 out->stream.get_next_write_timestamp = out_get_next_write_timestamp;
2757 out->stream.get_presentation_position = out_get_presentation_position;
2759 out->standby = 1;
2760 /* out->muted = false; by calloc() */
2761 /* out->written = 0; by calloc() */
2763 pthread_mutex_init(&out->lock, (const pthread_mutexattr_t *) NULL);
2764 pthread_mutex_init(&out->pre_lock, (const pthread_mutexattr_t *) NULL);
2765 pthread_cond_init(&out->cond, (const pthread_condattr_t *) NULL);
2767 config->format = out->stream.common.get_format(&out->stream.common);
2768 config->channel_mask = out->stream.common.get_channels(&out->stream.common);
2769 config->sample_rate = out->stream.common.get_sample_rate(&out->stream.common);
2771 *stream_out = &out->stream;
2776 free(out);
2785 struct stream_out *out = (struct stream_out *)stream;
2786 struct audio_device *adev = out->dev;
2791 pthread_cond_destroy(&out->cond);
2792 pthread_mutex_destroy(&out->lock);
2793 pthread_mutex_destroy(&out->pre_lock);
2794 free(out->proc_buf_out);