mirror of
https://github.com/alsa-project/alsa-utils
synced 2024-12-22 11:56:57 +01:00
Stereo record source and route selection...
This commit is contained in:
parent
085591d89f
commit
18c2009b87
1 changed files with 71 additions and 2 deletions
|
@ -1,5 +1,7 @@
|
|||
/* 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
|
||||
* 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_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 --- */
|
||||
enum
|
||||
|
@ -314,7 +326,9 @@ mixer_update_cbar (int channel_index)
|
|||
(mixer_lvolume_delta || mixer_rvolume_delta ||
|
||||
mixer_toggle_mute_left || mixer_toggle_mute_right ||
|
||||
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)
|
||||
mixer_abort (ERR_FCN, "snd_mixer_channel_read");
|
||||
|
@ -353,6 +367,43 @@ mixer_update_cbar (int channel_index)
|
|||
}
|
||||
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)
|
||||
mixer_abort (ERR_FCN, "snd_mixer_channel_write");
|
||||
}
|
||||
|
@ -464,6 +515,10 @@ mixer_update_cbar (int channel_index)
|
|||
{
|
||||
mixer_dc (DC_CBAR_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)
|
||||
for (i = 0; i < 6; i++)
|
||||
|
@ -747,6 +802,20 @@ mixer_iteration (void)
|
|||
case ' ':
|
||||
mixer_toggle_record = 1;
|
||||
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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue