Lines Matching defs:out

146  * the a2dp_stream_common (out or in) mutex.
921 struct a2dp_stream_out* out = (struct a2dp_stream_out*)stream;
925 DEBUG("write %zu bytes (fd %d)", bytes, out->common.audio_fd);
927 std::unique_lock<std::recursive_mutex> lock(*out->common.mutex);
928 if (out->common.state == AUDIO_A2DP_STATE_SUSPENDED ||
929 out->common.state == AUDIO_A2DP_STATE_STOPPING) {
935 if ((out->common.state == AUDIO_A2DP_STATE_STOPPED) ||
936 (out->common.state == AUDIO_A2DP_STATE_STANDBY)) {
937 if (start_audio_datapath(&out->common) < 0) {
940 } else if (out->common.state != AUDIO_A2DP_STATE_STARTED) {
946 if (out->common.cfg.is_stereo_to_mono) {
955 out->common.audio_fd);
959 sent = skt_write(out->common.audio_fd, buffer, write_bytes);
963 skt_disconnect(out->common.audio_fd);
964 out->common.audio_fd = AUDIO_SKT_DISCONNECTED;
965 if ((out->common.state != AUDIO_A2DP_STATE_SUSPENDED) &&
966 (out->common.state != AUDIO_A2DP_STATE_STOPPING)) {
967 out->common.state = AUDIO_A2DP_STATE_STOPPED;
976 out->frames_rendered += frames;
977 out->frames_presented += frames;
980 // If send didn't work out, sleep to emulate write delay.
982 const int us_delay = calc_audiotime_usec(out->common.cfg, bytes);
990 struct a2dp_stream_out* out = (struct a2dp_stream_out*)stream;
992 DEBUG("rate %" PRIu32, out->common.cfg.rate);
994 return out->common.cfg.rate;
998 struct a2dp_stream_out* out = (struct a2dp_stream_out*)stream;
1002 out->common.cfg.rate = rate;
1008 struct a2dp_stream_out* out = (struct a2dp_stream_out*)stream;
1011 out->common.buffer_sz / AUDIO_STREAM_OUTPUT_BUFFER_PERIODS;
1013 DEBUG("socket buffer size: %zu period size: %zu", out->common.buffer_sz,
1120 struct a2dp_stream_out* out = (struct a2dp_stream_out*)stream;
1122 DEBUG("channels 0x%" PRIx32, out->common.cfg.channel_mask);
1124 return out->common.cfg.channel_mask;
1128 struct a2dp_stream_out* out = (struct a2dp_stream_out*)stream;
1129 DEBUG("format 0x%x", out->common.cfg.format);
1130 return (audio_format_t)out->common.cfg.format;
1140 struct a2dp_stream_out* out = (struct a2dp_stream_out*)stream;
1145 std::lock_guard<std::recursive_mutex> lock(*out->common.mutex);
1147 if (out->common.state != AUDIO_A2DP_STATE_SUSPENDED)
1148 retVal = suspend_audio_datapath(&out->common, true);
1149 out->frames_rendered = 0; // rendered is reset, presented is not
1162 struct a2dp_stream_out* out = (struct a2dp_stream_out*)stream;
1164 INFO("state %d kvpairs %s", out->common.state, kvpairs);
1172 std::lock_guard<std::recursive_mutex> lock(*out->common.mutex);
1179 out->common.state = AUDIO_A2DP_STATE_STOPPING;
1183 if (out->common.state == AUDIO_A2DP_STATE_STARTED)
1184 status = suspend_audio_datapath(&out->common, false);
1189 if (out->common.state == AUDIO_A2DP_STATE_SUSPENDED)
1190 out->common.state = AUDIO_A2DP_STATE_STANDBY;
1204 struct a2dp_stream_out* out = (struct a2dp_stream_out*)stream;
1212 std::lock_guard<std::recursive_mutex> lock(*out->common.mutex);
1214 if (a2dp_read_output_audio_config(&out->common, &codec_config,
1315 struct a2dp_stream_out* out = (struct a2dp_stream_out*)stream;
1320 ((out->common.buffer_sz * 1000) /
1321 audio_stream_out_frame_size(&out->stream) / out->common.cfg.rate) *
1339 struct a2dp_stream_out* out = (struct a2dp_stream_out*)stream;
1344 std::lock_guard<std::recursive_mutex> lock(*out->common.mutex);
1357 a2dp_get_presentation_position_cmd(&out->common, &bytes, &delay_report,
1374 (uint64_t)out_get_latency(stream) * out->common.cfg.rate / 1000;
1375 if (out->frames_presented >= latency_frames) {
1377 *frames = out->frames_presented - latency_frames;
1386 struct a2dp_stream_out* out = (struct a2dp_stream_out*)stream;
1391 std::lock_guard<std::recursive_mutex> lock(*out->common.mutex);
1393 (uint64_t)out_get_latency(stream) * out->common.cfg.rate / 1000;
1394 if (out->frames_rendered >= latency_frames) {
1395 *dsp_frames = (uint32_t)(out->frames_rendered - latency_frames);
1534 DEBUG("read time out - return zeros");
1540 DEBUG("read %d bytes out of %zu bytes", read, bytes);
1581 struct a2dp_stream_out* out;
1587 out = (struct a2dp_stream_out*)calloc(1, sizeof(struct a2dp_stream_out));
1589 if (!out) return -ENOMEM;
1591 out->stream.common.get_sample_rate = out_get_sample_rate;
1592 out->stream.common.set_sample_rate = out_set_sample_rate;
1593 out->stream.common.get_buffer_size = out_get_buffer_size;
1594 out->stream.common.get_channels = out_get_channels;
1595 out->stream.common.get_format = out_get_format;
1596 out->stream.common.set_format = out_set_format;
1597 out->stream.common.standby = out_standby;
1598 out->stream.common.dump = out_dump;
1599 out->stream.common.set_parameters = out_set_parameters;
1600 out->stream.common.get_parameters = out_get_parameters;
1601 out->stream.common.add_audio_effect = out_add_audio_effect;
1602 out->stream.common.remove_audio_effect = out_remove_audio_effect;
1603 out->stream.get_latency = out_get_latency;
1604 out->stream.set_volume = out_set_volume;
1605 out->stream.write = out_write;
1606 out->stream.get_render_position = out_get_render_position;
1607 out->stream.get_presentation_position = out_get_presentation_position;
1610 a2dp_stream_common_init(&out->common);
1615 if (a2dp_read_output_audio_config(&out->common, &codec_config,
1628 if (config->format != 0) out->common.cfg.format = config->format;
1629 if (config->sample_rate != 0) out->common.cfg.rate = config->sample_rate;
1631 out->common.cfg.channel_mask = config->channel_mask;
1632 if ((out->common.cfg.format != 0) || (out->common.cfg.rate != 0) ||
1633 (out->common.cfg.channel_mask != 0)) {
1634 if (a2dp_write_output_audio_config(&out->common) < 0) {
1640 if (a2dp_read_output_audio_config(&out->common, &codec_config,
1648 config->format = out_get_format((const struct audio_stream*)&out->stream);
1650 out_get_sample_rate((const struct audio_stream*)&out->stream);
1652 out_get_channels((const struct audio_stream*)&out->stream);
1658 out->common.buffer_sz);
1660 *stream_out = &out->stream;
1661 a2dp_dev->output = out;
1670 a2dp_stream_common_destroy(&out->common);
1671 free(out);
1681 struct a2dp_stream_out* out = (struct a2dp_stream_out*)stream;
1686 std::lock_guard<std::recursive_mutex> lock(*out->common.mutex);
1687 const a2dp_state_t state = out->common.state;
1691 stop_audio_datapath(&out->common);
1694 skt_disconnect(out->common.ctrl_fd);
1695 out->common.ctrl_fd = AUDIO_SKT_DISCONNECTED;
1698 a2dp_stream_common_destroy(&out->common);
1712 struct a2dp_stream_out* out = a2dp_dev->output;
1714 if (out == NULL) return retval;
1716 INFO("state %d", out->common.state);
1719 out->stream.common.set_parameters((struct audio_stream*)out, kvpairs);