Lines Matching defs:out
588 struct a2dp_stream_out *out = (struct a2dp_stream_out *)stream;
591 DEBUG("write %zu bytes (fd %d)", bytes, out->common.audio_fd);
593 pthread_mutex_lock(&out->common.lock);
594 if (out->common.state == AUDIO_A2DP_STATE_SUSPENDED ||
595 out->common.state == AUDIO_A2DP_STATE_STOPPING) {
601 if ((out->common.state == AUDIO_A2DP_STATE_STOPPED) ||
602 (out->common.state == AUDIO_A2DP_STATE_STANDBY))
604 if (start_audio_datapath(&out->common) < 0)
609 else if (out->common.state != AUDIO_A2DP_STATE_STARTED)
615 pthread_mutex_unlock(&out->common.lock);
616 sent = skt_write(out->common.audio_fd, buffer, bytes);
617 pthread_mutex_lock(&out->common.lock);
620 skt_disconnect(out->common.audio_fd);
621 out->common.audio_fd = AUDIO_SKT_DISCONNECTED;
622 if ((out->common.state != AUDIO_A2DP_STATE_SUSPENDED) &&
623 (out->common.state != AUDIO_A2DP_STATE_STOPPING)) {
624 out->common.state = AUDIO_A2DP_STATE_STOPPED;
633 out->frames_rendered += frames;
634 out->frames_presented += frames;
635 pthread_mutex_unlock(&out->common.lock);
637 // If send didn't work out, sleep to emulate write delay.
639 const int us_delay = calc_audiotime(out->common.cfg, bytes);
648 struct a2dp_stream_out *out = (struct a2dp_stream_out *)stream;
650 DEBUG("rate %" PRIu32,out->common.cfg.rate);
652 return out->common.cfg.rate;
657 struct a2dp_stream_out *out = (struct a2dp_stream_out *)stream;
667 out->common.cfg.rate = rate;
674 struct a2dp_stream_out *out = (struct a2dp_stream_out *)stream;
676 const size_t period_size = out->common.buffer_sz / AUDIO_STREAM_OUTPUT_BUFFER_PERIODS;
679 DEBUG("socket buffer size: %zu period size: %zu", out->common.buffer_sz, period_size);
689 struct a2dp_stream_out *out = (struct a2dp_stream_out *)stream;
691 DEBUG("channels 0x%" PRIx32, out->common.cfg.channel_flags);
693 return out->common.cfg.channel_flags;
698 struct a2dp_stream_out *out = (struct a2dp_stream_out *)stream;
699 DEBUG("format 0x%x", out->common.cfg.format);
700 return out->common.cfg.format;
713 struct a2dp_stream_out *out = (struct a2dp_stream_out *)stream;
718 pthread_mutex_lock(&out->common.lock);
720 if (out->common.state != AUDIO_A2DP_STATE_SUSPENDED)
721 retVal = suspend_audio_datapath(&out->common, true);
722 out->frames_rendered = 0; // rendered is reset, presented is not
723 pthread_mutex_unlock (&out->common.lock);
738 struct a2dp_stream_out *out = (struct a2dp_stream_out *)stream;
740 INFO("state %d", out->common.state);
748 pthread_mutex_lock(&out->common.lock);
758 out->common.state = AUDIO_A2DP_STATE_STOPPING;
765 if (out->common.state == AUDIO_A2DP_STATE_STARTED)
766 status = suspend_audio_datapath(&out->common, false);
773 if (out->common.state == AUDIO_A2DP_STATE_SUSPENDED)
774 out->common.state = AUDIO_A2DP_STATE_STANDBY;
778 pthread_mutex_unlock(&out->common.lock);
799 struct a2dp_stream_out *out = (struct a2dp_stream_out *)stream;
803 latency_us = ((out->common.buffer_sz * 1000 ) /
804 audio_stream_out_frame_size(&out->stream) /
805 out->common.cfg.rate) * 1000;
828 struct a2dp_stream_out *out = (struct a2dp_stream_out *)stream;
835 pthread_mutex_lock(&out->common.lock);
836 uint64_t latency_frames = (uint64_t)out_get_latency(stream) * out->common.cfg.rate / 1000;
837 if (out->frames_presented >= latency_frames) {
838 *frames = out->frames_presented - latency_frames;
842 pthread_mutex_unlock(&out->common.lock);
849 struct a2dp_stream_out *out = (struct a2dp_stream_out *)stream;
855 pthread_mutex_lock(&out->common.lock);
856 uint64_t latency_frames = (uint64_t)out_get_latency(stream) * out->common.cfg.rate / 1000;
857 if (out->frames_rendered >= latency_frames) {
858 *dsp_frames = (uint32_t)(out->frames_rendered - latency_frames);
862 pthread_mutex_unlock(&out->common.lock);
1036 DEBUG("read time out - return zeros");
1042 DEBUG("read %d bytes out of %zu bytes", read, bytes);
1092 struct a2dp_stream_out *out;
1101 out = (struct a2dp_stream_out *)calloc(1, sizeof(struct a2dp_stream_out));
1103 if (!out)
1106 out->stream.common.get_sample_rate = out_get_sample_rate;
1107 out->stream.common.set_sample_rate = out_set_sample_rate;
1108 out->stream.common.get_buffer_size = out_get_buffer_size;
1109 out->stream.common.get_channels = out_get_channels;
1110 out->stream.common.get_format = out_get_format;
1111 out->stream.common.set_format = out_set_format;
1112 out->stream.common.standby = out_standby;
1113 out->stream.common.dump = out_dump;
1114 out->stream.common.set_parameters = out_set_parameters;
1115 out->stream.common.get_parameters = out_get_parameters;
1116 out->stream.common.add_audio_effect = out_add_audio_effect;
1117 out->stream.common.remove_audio_effect = out_remove_audio_effect;
1118 out->stream.get_latency = out_get_latency;
1119 out->stream.set_volume = out_set_volume;
1120 out->stream.write = out_write;
1121 out->stream.get_render_position = out_get_render_position;
1122 out->stream.get_presentation_position = out_get_presentation_position;
1126 a2dp_stream_common_init(&out->common);
1128 out->common.cfg.channel_flags = AUDIO_STREAM_DEFAULT_CHANNEL_FLAG;
1129 out->common.cfg.format = AUDIO_STREAM_DEFAULT_FORMAT;
1130 out->common.cfg.rate = AUDIO_STREAM_DEFAULT_RATE;
1135 config->format = out_get_format((const struct audio_stream *)&out->stream);
1136 config->sample_rate = out_get_sample_rate((const struct audio_stream *)&out->stream);
1137 config->channel_mask = out_get_channels((const struct audio_stream *)&out->stream);
1139 *stream_out = &out->stream;
1140 a2dp_dev->output = out;
1142 a2dp_open_ctrl_path(&out->common);
1143 if (out->common.ctrl_fd == AUDIO_SKT_DISCONNECTED)
1157 free(out);
1168 struct a2dp_stream_out *out = (struct a2dp_stream_out *)stream;
1170 INFO("closing output (state %d)", out->common.state);
1172 pthread_mutex_lock(&out->common.lock);
1173 if ((out->common.state == AUDIO_A2DP_STATE_STARTED) ||
1174 (out->common.state == AUDIO_A2DP_STATE_STOPPING)) {
1175 stop_audio_datapath(&out->common);
1178 skt_disconnect(out->common.ctrl_fd);
1179 out->common.ctrl_fd = AUDIO_SKT_DISCONNECTED;
1182 pthread_mutex_unlock(&out->common.lock);
1190 struct a2dp_stream_out *out = a2dp_dev->output;
1193 if (out == NULL)
1196 INFO("state %d", out->common.state);
1198 retval = out->stream.common.set_parameters((struct audio_stream *)out, kvpairs);