Stereo record source and route selection...

This commit is contained in:
Jaroslav Kysela 1998-11-04 19:43:45 +00:00
parent 085591d89f
commit 18c2009b87

View file

@ -1,5 +1,7 @@
/* AlsaMixer - Commandline mixer for the ALSA project /* AlsaMixer - Commandline mixer for the ALSA project
* Copyright (C) 1998 Jaroslav Kysela <perex@jcu.cz> & Tim Janik <timj@gtk.org> * Copyright (C) 1998 Jaroslav Kysela <perex@jcu.cz>,
* Tim Janik <timj@gtk.org>,
* Carl van Schaik <carl@dreamcoat.che.uct.ac.za>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -102,6 +104,16 @@ static int mixer_toggle_mute_left = 0;
static int mixer_toggle_mute_right = 0; static int mixer_toggle_mute_right = 0;
static int mixer_toggle_record = 0; static int mixer_toggle_record = 0;
/* By Carl */
static int mixer_toggle_rec_left = 0;
static int mixer_toggle_rec_right = 0;
static int mixer_route_ltor_in = 0;
static int mixer_route_rtol_in = 0;
#if 0
static int mixer_route_ltor_out = 0;
static int mixer_route_rtol_out = 0;
#endif
/* --- draw contexts --- */ /* --- draw contexts --- */
enum enum
@ -314,7 +326,9 @@ mixer_update_cbar (int channel_index)
(mixer_lvolume_delta || mixer_rvolume_delta || (mixer_lvolume_delta || mixer_rvolume_delta ||
mixer_toggle_mute_left || mixer_toggle_mute_right || mixer_toggle_mute_left || mixer_toggle_mute_right ||
mixer_balance_volumes || mixer_balance_volumes ||
mixer_toggle_record)) mixer_toggle_record || mixer_toggle_rec_left ||
mixer_toggle_rec_right ||
mixer_route_rtol_in || mixer_route_ltor_in))
{ {
if (snd_mixer_channel_read(mixer_handle, channel_index, &cdata)<0) if (snd_mixer_channel_read(mixer_handle, channel_index, &cdata)<0)
mixer_abort (ERR_FCN, "snd_mixer_channel_read"); mixer_abort (ERR_FCN, "snd_mixer_channel_read");
@ -353,6 +367,43 @@ mixer_update_cbar (int channel_index)
} }
mixer_toggle_record = 0; mixer_toggle_record = 0;
if (mixer_toggle_rec_left)
{
if (cdata.flags & SND_MIXER_FLG_RECORD_LEFT)
cdata.flags &= ~SND_MIXER_FLG_RECORD_LEFT;
else
cdata.flags |= SND_MIXER_FLG_RECORD_LEFT;
}
mixer_toggle_rec_left = 0;
if (mixer_toggle_rec_right)
{
if (cdata.flags & SND_MIXER_FLG_RECORD_RIGHT)
cdata.flags &= ~SND_MIXER_FLG_RECORD_RIGHT;
else
cdata.flags |= SND_MIXER_FLG_RECORD_RIGHT;
}
mixer_toggle_rec_right = 0;
if (mixer_route_ltor_in)
{
if (cdata.flags & SND_MIXER_FLG_LTOR_IN)
cdata.flags &= ~SND_MIXER_FLG_LTOR_IN;
else
cdata.flags |= SND_MIXER_FLG_LTOR_IN;
/* printf("state : \n %d \n",cdata.flags & SND_MIXER_FLG_LTOR_IN);
*/ }
mixer_route_ltor_in = 0;
if (mixer_route_rtol_in)
{
if (cdata.flags & SND_MIXER_FLG_RTOL_IN)
cdata.flags &= ~SND_MIXER_FLG_RTOL_IN;
else
cdata.flags |= SND_MIXER_FLG_RTOL_IN;
}
mixer_route_rtol_in = 0;
if (snd_mixer_channel_write(mixer_handle, channel_index, &cdata)<0) if (snd_mixer_channel_write(mixer_handle, channel_index, &cdata)<0)
mixer_abort (ERR_FCN, "snd_mixer_channel_write"); mixer_abort (ERR_FCN, "snd_mixer_channel_write");
} }
@ -464,6 +515,10 @@ mixer_update_cbar (int channel_index)
{ {
mixer_dc (DC_CBAR_RECORD); mixer_dc (DC_CBAR_RECORD);
mvaddstr (y, x + 1, "RECORD"); mvaddstr (y, x + 1, "RECORD");
if (cdata.flags & SND_MIXER_FLG_RECORD_LEFT)
mvaddstr (y+1, x + 1, "L");
if (cdata.flags & SND_MIXER_FLG_RECORD_RIGHT)
mvaddstr (y+1, x + 6, "R");
} }
else if (cinfo.caps & SND_MIXER_CINFO_CAP_RECORD) else if (cinfo.caps & SND_MIXER_CINFO_CAP_RECORD)
for (i = 0; i < 6; i++) for (i = 0; i < 6; i++)
@ -747,6 +802,20 @@ mixer_iteration (void)
case ' ': case ' ':
mixer_toggle_record = 1; mixer_toggle_record = 1;
break; break;
case KEY_IC:
case ';':
mixer_toggle_rec_left = 1;
break;
case '\'':
case KEY_DC:
mixer_toggle_rec_right = 1;
break;
case '1':
mixer_route_rtol_in = 1;
break;
case '2':
mixer_route_ltor_in = 1;
break;
} }
mixer_focus_channel = CLAMP (mixer_focus_channel, 0, mixer_n_channels - 1); mixer_focus_channel = CLAMP (mixer_focus_channel, 0, mixer_n_channels - 1);