Lines Matching refs:card

68 echo_channel_get_mix(void *card, MIXER_AUDIO_CHANNEL channel, int32 type, float *values) {
69 echo_dev *dev = (echo_dev*) card;
108 echo_channel_set_mix(void *card, MIXER_AUDIO_CHANNEL channel, int32 type, float *values) {
109 echo_dev *dev = (echo_dev*) card;
217 echo_dev *card = (echo_dev*)multi->card;
224 for (i = 0; i < card->caps.wNumBussesOut / 2; i++) {
229 card->caps.dwBusOutCaps[i * 2] & ECHOCAPS_NOMINAL_LEVEL);
235 for (i = 0; i < card->caps.wNumBussesIn / 2; i++) {
241 card->caps.dwBusInCaps[i * 2] & ECHOCAPS_NOMINAL_LEVEL);
251 echo_get_mix(echo_dev *card, multi_mix_value_info * mmvi)
258 if (id < 0 || (uint32)id >= card->multi.control_count) {
263 control = &card->multi.controls[id];
268 control->get(card, control->channel, control->type, values);
278 control->get(card, control->channel, control->type, values);
284 control->get(card, control->channel, control->type, values);
293 echo_set_mix(echo_dev *card, multi_mix_value_info * mmvi)
300 if (id < 0 || (uint32)id >= card->multi.control_count) {
305 control = &card->multi.controls[id];
311 if (id < 0 || (uint32)id >= card->multi.control_count) {
315 control2 = &card->multi.controls[id];
334 control->set(card, control->channel, control->type, values);
345 control->set(card, control->channel, control->type, values);
352 control->set(card, control->channel, control->type, values);
360 echo_list_mix_controls(echo_dev *card, multi_mix_control_info * mmci)
369 if (echo_create_controls_list(&card->multi) < B_OK)
371 for (i = 0; i < card->multi.control_count; i++) {
372 mmc[i] = card->multi.controls[i].mix_control;
375 mmci->control_count = card->multi.control_count;
381 echo_list_mix_connections(echo_dev* card, multi_mix_connection_info* data)
388 echo_list_mix_channels(echo_dev *card, multi_mix_channel_info *data)
447 LIST_FOREACH(stream, &((echo_dev*)multi->card)->streams, next) {
507 echo_get_description(echo_dev *card, multi_description *data)
514 strlcpy(data->friendly_name, card->caps.szName, sizeof(data->friendly_name));
517 data->output_channel_count = card->multi.output_channel_count;
518 data->input_channel_count = card->multi.input_channel_count;
519 data->output_bus_channel_count = card->multi.output_bus_channel_count;
520 data->input_bus_channel_count = card->multi.input_bus_channel_count;
521 data->aux_bus_channel_count = card->multi.aux_bus_channel_count;
523 size = card->multi.output_channel_count + card->multi.input_channel_count
524 + card->multi.output_bus_channel_count + card->multi.input_bus_channel_count
525 + card->multi.aux_bus_channel_count;
535 memcpy(data->channels, card->multi.chans, size * sizeof(card->multi.chans[0]));
565 echo_get_enabled_channels(echo_dev *card, multi_channel_enable *data)
583 echo_set_enabled_channels(echo_dev *card, multi_channel_enable *data)
594 echo_get_global_format(echo_dev *card, multi_format_info *data)
617 echo_get_buffers(echo_dev *card, multi_buffer_list *data)
643 LIST_FOREACH(stream, &card->streams, next) {
663 LIST_FOREACH(stream, &card->streams, next) {
699 //get_sem_count(stream->card->buffer_ready_sem, &count);
701 release_sem_etc(stream->card->buffer_ready_sem, 1, B_DO_NOT_RESCHEDULE);
721 //get_sem_count(stream->card->buffer_ready_sem, &count);
723 release_sem_etc(stream->card->buffer_ready_sem, 1, B_DO_NOT_RESCHEDULE);
728 echo_buffer_exchange(echo_dev *card, multi_buffer_info *data)
743 LIST_FOREACH(stream, &card->streams, next) {
750 if (acquire_sem_etc(card->buffer_ready_sem, 1, B_RELATIVE_TIMEOUT | B_CAN_INTERRUPT, 50000)
757 LIST_FOREACH(pstream, &card->streams, next) {
765 LIST_FOREACH(rstream, &card->streams, next) {
774 pstream = card->pstream;
776 rstream = card->rstream;
806 echo_buffer_force_stop(echo_dev *card)
808 //echo_voice_halt(card->pvoice);
816 echo_dev *card = (echo_dev *)cookie;
820 if (card->plugged == false) {
821 LOG(("device %s unplugged\n", card->name));
829 return echo_get_description(card, (multi_description *)data);
841 return echo_get_enabled_channels(card, (multi_channel_enable *)data);
844 return echo_set_enabled_channels(card, (multi_channel_enable *)data);
847 return echo_get_global_format(card, (multi_format_info *)data);
861 return echo_get_mix(card, (multi_mix_value_info *)data);
864 return echo_set_mix(card, (multi_mix_value_info *)data);
867 return echo_list_mix_channels(card, (multi_mix_channel_info *)data);
870 return echo_list_mix_controls(card, (multi_mix_control_info *)data);
873 return echo_list_mix_connections(card, (multi_mix_connection_info *)data);
876 return echo_get_buffers(card, (multi_buffer_list*)data);
885 return echo_buffer_exchange(card, (multi_buffer_info *)data);
888 return echo_buffer_force_stop(card);
920 echo_dev *card = NULL;
927 LIST_FOREACH(card, &devices, next) {
928 if (!strcmp(card->name, name)) {
935 card = &cards[i];
940 if (card == NULL) {
941 LOG(("open() card not found %s\n", name));
943 LIST_FOREACH(card, &devices, next) {
944 LOG(("open() card available %s\n", card->name));
948 LOG(("open() card available %s\n", cards[ix].name));
955 if (card->plugged == false) {
961 LOG(("open() got card\n"));
963 if (card->pstream != NULL)
965 if (card->rstream != NULL)
968 *cookie = card;
969 card->multi.card = card;
971 card->opened = true;
1022 i = card->caps.wNumPipesOut - 2;
1023 first_record_channel = card->caps.wNumPipesOut;
1026 i = card->caps.wFirstDigitalBusOut;
1027 first_record_channel = card->caps.wFirstDigitalBusOut + 2;
1032 stream = echo_stream_new(card, ECHO_USE_PLAY, current_settings.buffer_frames, current_settings.buffer_count);
1033 if (!card->pstream)
1034 card->pstream = stream;
1041 i = card->caps.wNumPipesIn - 2;
1044 i = card->caps.wFirstDigitalBusIn;
1049 stream = echo_stream_new(card, ECHO_USE_RECORD, current_settings.buffer_frames, current_settings.buffer_count);
1050 if (!card->rstream)
1051 card->rstream = stream;
1057 card->buffer_ready_sem = create_sem(0, "pbuffer ready");
1060 echo_create_channels_list(&card->multi);
1071 echo_dev *card = (echo_dev *) cookie;
1072 card->opened = false;
1082 echo_dev *card = (echo_dev *) cookie;
1086 if (card->buffer_ready_sem > B_OK)
1087 delete_sem(card->buffer_ready_sem);
1089 LIST_FOREACH(stream, &card->streams, next) {
1093 while (!LIST_EMPTY(&card->streams)) {
1094 echo_stream_delete(LIST_FIRST(&card->streams));
1097 card->pstream = NULL;
1098 card->rstream = NULL;