Lines Matching refs:play

126   struct oss_stream play;  member
696 if (s->play.fd != -1) { in oss_stream_destroy()
697 close(s->play.fd); in oss_stream_destroy()
702 free(s->play.buf); in oss_stream_destroy()
769 size_t rem = nframes * s->play.frame_size; in oss_put_play_frames()
773 if ((n = write(s->play.fd, (uint8_t *)s->play.buf + write_ofs, rem)) < 0) { in oss_put_play_frames()
779 s->frames_written += n / s->play.frame_size; in oss_put_play_frames()
795 assert(s->play.fd != -1 || s->record.fd != -1); in oss_wait_fds_for_space()
798 pfds[0].fd = s->play.fd; in oss_wait_fds_for_space()
816 if (s->play.fd != -1) { in oss_wait_fds_for_space()
817 if (ioctl(s->play.fd, SNDCTL_DSP_GETOSPACE, &bi) == -1) { in oss_wait_fds_for_space()
820 tnfr = bi.bytes / s->play.frame_size; in oss_wait_fds_for_space()
823 pfds[0].fd = s->play.fd; in oss_wait_fds_for_space()
826 } else if (tnfr > (long)s->play.maxframes) { in oss_wait_fds_for_space()
828 tnfr = (long)s->play.maxframes; in oss_wait_fds_for_space()
863 const bool play_on = s->play.fd != -1, record_on = s->record.fd != -1; in oss_audio_loop()
912 got = s->data_cb(s, s->user_ptr, s->record.buf, s->play.buf, nfr); in oss_audio_loop()
918 if (s->play.fd != -1) { in oss_audio_loop()
938 if (s->play.floating) { in oss_audio_loop()
939 oss_float_to_linear32(s->play.buf, s->play.info.channels * got, vol); in oss_audio_loop()
941 oss_linear16_set_vol((int16_t *)s->play.buf, in oss_audio_loop()
942 s->play.info.channels * got, vol); in oss_audio_loop()
1050 s->record.fd = s->play.fd = -1; in oss_stream_init()
1057 strlcpy(s->play.name, output_device, sizeof(s->play.name)); in oss_stream_init()
1059 strlcpy(s->play.name, defdsp, sizeof(s->play.name)); in oss_stream_init()
1118 if ((s->play.fd = open(s->play.name, O_WRONLY)) == -1) { in oss_stream_init()
1120 s->play.name); in oss_stream_init()
1124 if ((ret = oss_copy_params(s->play.fd, s, output_stream_params, in oss_stream_init()
1125 &s->play.info)) != CUBEB_OK) { in oss_stream_init()
1129 s->play.floating = (output_stream_params->format == CUBEB_SAMPLE_FLOAT32NE); in oss_stream_init()
1130 s->play.frame_size = s->play.info.channels * (s->play.info.precision / 8); in oss_stream_init()
1131 s->play.bufframes = latency_frames; in oss_stream_init()
1134 if (s->play.bufframes < minframes) { in oss_stream_init()
1135 s->play.bufframes = minframes; in oss_stream_init()
1138 if (s->play.fd != -1) { in oss_stream_init()
1140 oss_calc_frag_shift(s->play.bufframes, s->play.frame_size)); in oss_stream_init()
1141 if (ioctl(s->play.fd, SNDCTL_DSP_SETFRAGMENT, &frag)) in oss_stream_init()
1145 if (ioctl(s->play.fd, SNDCTL_DSP_GETOSPACE, &bi)) in oss_stream_init()
1148 s->play.bufframes = (bi.fragsize * bi.fragstotal) / s->play.frame_size; in oss_stream_init()
1156 s->play.maxframes = (32 * output_stream_params->rate) / 1000; in oss_stream_init()
1157 if (s->record.fd != -1 || s->play.maxframes >= s->play.bufframes) { in oss_stream_init()
1158 lw = s->play.frame_size; /* Feed data when possible. */ in oss_stream_init()
1159 s->play.maxframes = s->play.bufframes; in oss_stream_init()
1161 lw = (s->play.bufframes - s->play.maxframes) * s->play.frame_size; in oss_stream_init()
1163 if (ioctl(s->play.fd, SNDCTL_DSP_LOW_WATER, &lw)) in oss_stream_init()
1165 s->play.name); in oss_stream_init()
1207 if (s->play.fd != -1) { in oss_stream_init()
1208 if ((s->play.buf = calloc(s->play.bufframes, s->play.frame_size)) == NULL) { in oss_stream_init()
1280 if (ioctl(s->play.fd, SNDCTL_DSP_GETODELAY, &delay) == -1) { in oss_stream_get_latency()
1285 *latency = delay / s->play.frame_size; in oss_stream_get_latency()
1312 stream->play.fd != -1 ? strdup(stream->play.name) : NULL; in oss_get_current_device()