Lines Matching refs:out

426 static void do_out_standby(struct stream_out *out);
474 static int read_hdmi_channel_masks(struct audio_device *adev, struct stream_out *out) { in read_hdmi_channel_masks() argument
494 out->supported_channel_masks[0] = AUDIO_CHANNEL_OUT_5POINT1; in read_hdmi_channel_masks()
496 out->supported_channel_masks[1] = AUDIO_CHANNEL_OUT_7POINT1; in read_hdmi_channel_masks()
632 struct stream_out *out; in force_non_hdmi_out_standby() local
635 out = adev->outputs[type]; in force_non_hdmi_out_standby()
636 if (type == OUTPUT_HDMI || !out) in force_non_hdmi_out_standby()
639 do_out_standby(out); in force_non_hdmi_out_standby()
707 static int start_output_stream(struct stream_out *out) in start_output_stream() argument
709 struct audio_device *adev = out->dev; in start_output_stream()
712 if (out == adev->outputs[OUTPUT_HDMI]) { in start_output_stream()
715 out->disabled = true; in start_output_stream()
719 out->disabled = false; in start_output_stream()
721 if (out->device & (AUDIO_DEVICE_OUT_SPEAKER | in start_output_stream()
727 out->pcm[PCM_CARD] = pcm_open(PCM_CARD, out->pcm_device, in start_output_stream()
728 PCM_OUT | PCM_MONOTONIC, &out->config); in start_output_stream()
730 if (out->pcm[PCM_CARD] && !pcm_is_ready(out->pcm[PCM_CARD])) { in start_output_stream()
732 pcm_get_error(out->pcm[PCM_CARD])); in start_output_stream()
733 pcm_close(out->pcm[PCM_CARD]); in start_output_stream()
738 if (out->device & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET) { in start_output_stream()
739 out->pcm[PCM_CARD_SPDIF] = pcm_open(PCM_CARD_SPDIF, out->pcm_device, in start_output_stream()
740 PCM_OUT | PCM_MONOTONIC, &out->config); in start_output_stream()
742 if (out->pcm[PCM_CARD_SPDIF] && in start_output_stream()
743 !pcm_is_ready(out->pcm[PCM_CARD_SPDIF])) { in start_output_stream()
745 pcm_get_error(out->pcm[PCM_CARD_SPDIF])); in start_output_stream()
746 pcm_close(out->pcm[PCM_CARD_SPDIF]); in start_output_stream()
751 adev->out_device |= out->device; in start_output_stream()
754 if (out->device & AUDIO_DEVICE_OUT_ALL_SCO) in start_output_stream()
757 if (out->device & AUDIO_DEVICE_OUT_AUX_DIGITAL) in start_output_stream()
758 set_hdmi_channels(adev, out->config.channels); in start_output_stream()
933 struct stream_out *out = (struct stream_out *)stream; in out_get_sample_rate() local
935 return out->config.rate; in out_get_sample_rate()
945 struct stream_out *out = (struct stream_out *)stream; in out_get_buffer_size() local
947 return out->config.period_size * in out_get_buffer_size()
953 struct stream_out *out = (struct stream_out *)stream; in out_get_channels() local
955 return out->channel_mask; in out_get_channels()
971 static audio_devices_t output_devices(struct stream_out *out) in output_devices() argument
973 struct audio_device *dev = out->dev; in output_devices()
979 if (other && (other != out) && !other->standby) { in output_devices()
993 static void do_out_standby(struct stream_out *out) in do_out_standby() argument
995 struct audio_device *adev = out->dev; in do_out_standby()
998 if (!out->standby) { in do_out_standby()
1000 if (out->pcm[i]) { in do_out_standby()
1001 pcm_close(out->pcm[i]); in do_out_standby()
1002 out->pcm[i] = NULL; in do_out_standby()
1005 out->standby = true; in do_out_standby()
1007 if (out == adev->outputs[OUTPUT_HDMI]) { in do_out_standby()
1013 if (out->device & AUDIO_DEVICE_OUT_ALL_SCO) in do_out_standby()
1017 adev->out_device = output_devices(out); in do_out_standby()
1031 struct stream_out *out = adev->outputs[type]; in lock_all_outputs() local
1032 if (out) in lock_all_outputs()
1033 pthread_mutex_lock(&out->lock); in lock_all_outputs()
1045 struct stream_out *out = adev->outputs[--type]; in unlock_all_outputs() local
1046 if (out && out != except) in unlock_all_outputs()
1047 pthread_mutex_unlock(&out->lock); in unlock_all_outputs()
1054 struct stream_out *out = (struct stream_out *)stream; in out_standby() local
1055 struct audio_device *adev = out->dev; in out_standby()
1059 do_out_standby(out); in out_standby()
1073 struct stream_out *out = (struct stream_out *)stream; in out_set_parameters() local
1074 struct audio_device *adev = out->dev; in out_set_parameters()
1087 if ((out->device != val) && (val != 0)) { in out_set_parameters()
1093 do_out_standby(out); in out_set_parameters()
1098 (out->device & AUDIO_DEVICE_OUT_ALL_SCO)) { in out_set_parameters()
1099 do_out_standby(out); in out_set_parameters()
1102 if (!out->standby && (out == adev->outputs[OUTPUT_HDMI] || in out_set_parameters()
1105 adev->out_device = output_devices(out) | val; in out_set_parameters()
1108 out->device = val; in out_set_parameters()
1119 struct stream_out *out = (struct stream_out *)stream; in out_get_parameters() local
1133 while (out->supported_channel_masks[i] != 0) { in out_get_parameters()
1135 if (out_channels_name_to_enum_table[j].value == out->supported_channel_masks[i]) { in out_get_parameters()
1159 struct stream_out *out = (struct stream_out *)stream; in out_get_latency() local
1161 return (out->config.period_size * out->config.period_count * 1000) / in out_get_latency()
1162 out->config.rate; in out_get_latency()
1168 struct stream_out *out = (struct stream_out *)stream; in out_set_volume() local
1169 struct audio_device *adev = out->dev; in out_set_volume()
1175 bool is_HDMI = out == adev->outputs[OUTPUT_HDMI]; in out_set_volume()
1179 out->muted = (left == 0.0f); in out_set_volume()
1189 struct stream_out *out = (struct stream_out *)stream; in out_write() local
1190 struct audio_device *adev = out->dev; in out_write()
1199 pthread_mutex_lock(&out->lock); in out_write()
1200 if (out->standby) { in out_write()
1201 pthread_mutex_unlock(&out->lock); in out_write()
1203 if (!out->standby) { in out_write()
1204 unlock_all_outputs(adev, out); in out_write()
1207 ret = start_output_stream(out); in out_write()
1212 out->standby = false; in out_write()
1213 unlock_all_outputs(adev, out); in out_write()
1217 if (out->disabled) { in out_write()
1222 if (out->muted) in out_write()
1227 if (out->pcm[i]) { in out_write()
1228 ret = pcm_write(out->pcm[i], (void *)buffer, bytes); in out_write()
1233 out->written += bytes / (out->config.channels * sizeof(short)); in out_write()
1236 pthread_mutex_unlock(&out->lock); in out_write()
1272 struct stream_out *out = (struct stream_out *)stream; in out_get_presentation_position() local
1275 pthread_mutex_lock(&out->lock); in out_get_presentation_position()
1283 if (out->pcm[i]) { in out_get_presentation_position()
1285 if (pcm_get_htimestamp(out->pcm[i], &avail, timestamp) == 0) { in out_get_presentation_position()
1286 size_t kernel_buffer_size = out->config.period_size * out->config.period_count; in out_get_presentation_position()
1288 int64_t signed_frames = out->written - kernel_buffer_size + avail; in out_get_presentation_position()
1298 pthread_mutex_unlock(&out->lock); in out_get_presentation_position()
1585 struct stream_out *out; in adev_open_output_stream() local
1589 out = (struct stream_out *)calloc(1, sizeof(struct stream_out)); in adev_open_output_stream()
1590 if (!out) in adev_open_output_stream()
1593 out->supported_channel_masks[0] = AUDIO_CHANNEL_OUT_STEREO; in adev_open_output_stream()
1594 out->channel_mask = AUDIO_CHANNEL_OUT_STEREO; in adev_open_output_stream()
1597 out->device = devices; in adev_open_output_stream()
1602 ret = read_hdmi_channel_masks(adev, out); in adev_open_output_stream()
1610 out->channel_mask = config->channel_mask; in adev_open_output_stream()
1611 out->config = pcm_config_hdmi_multi; in adev_open_output_stream()
1612 out->config.rate = config->sample_rate; in adev_open_output_stream()
1613 out->config.channels = audio_channel_count_from_out_mask(config->channel_mask); in adev_open_output_stream()
1614 out->pcm_device = PCM_DEVICE; in adev_open_output_stream()
1617 out->config = pcm_config_deep; in adev_open_output_stream()
1618 out->pcm_device = PCM_DEVICE_DEEP; in adev_open_output_stream()
1621 out->config = pcm_config; in adev_open_output_stream()
1622 out->pcm_device = PCM_DEVICE; in adev_open_output_stream()
1626 out->stream.common.get_sample_rate = out_get_sample_rate; in adev_open_output_stream()
1627 out->stream.common.set_sample_rate = out_set_sample_rate; in adev_open_output_stream()
1628 out->stream.common.get_buffer_size = out_get_buffer_size; in adev_open_output_stream()
1629 out->stream.common.get_channels = out_get_channels; in adev_open_output_stream()
1630 out->stream.common.get_format = out_get_format; in adev_open_output_stream()
1631 out->stream.common.set_format = out_set_format; in adev_open_output_stream()
1632 out->stream.common.standby = out_standby; in adev_open_output_stream()
1633 out->stream.common.dump = out_dump; in adev_open_output_stream()
1634 out->stream.common.set_parameters = out_set_parameters; in adev_open_output_stream()
1635 out->stream.common.get_parameters = out_get_parameters; in adev_open_output_stream()
1636 out->stream.common.add_audio_effect = out_add_audio_effect; in adev_open_output_stream()
1637 out->stream.common.remove_audio_effect = out_remove_audio_effect; in adev_open_output_stream()
1638 out->stream.get_latency = out_get_latency; in adev_open_output_stream()
1639 out->stream.set_volume = out_set_volume; in adev_open_output_stream()
1640 out->stream.write = out_write; in adev_open_output_stream()
1641 out->stream.get_render_position = out_get_render_position; in adev_open_output_stream()
1642 out->stream.get_next_write_timestamp = out_get_next_write_timestamp; in adev_open_output_stream()
1643 out->stream.get_presentation_position = out_get_presentation_position; in adev_open_output_stream()
1645 out->dev = adev; in adev_open_output_stream()
1647 config->format = out_get_format(&out->stream.common); in adev_open_output_stream()
1648 config->channel_mask = out_get_channels(&out->stream.common); in adev_open_output_stream()
1649 config->sample_rate = out_get_sample_rate(&out->stream.common); in adev_open_output_stream()
1651 out->standby = true; in adev_open_output_stream()
1661 adev->outputs[type] = out; in adev_open_output_stream()
1664 *stream_out = &out->stream; in adev_open_output_stream()
1669 free(out); in adev_open_output_stream()