Справочник по консольным командам Toybox для Android 12


  Ver.0.8.4     Ver.0.8.9     Pending  

Путь: Toys/Other, команды версии: Ver.4     Ver.9


mix

Комментарии в файле mix.c :

usage: mix [-d DEV] [-c CHANNEL] [-l VOL] [-r RIGHT]

Список звуковых каналов OSS (модуль snd-mixer-oss) или установка громкости.
  • -c CHANNEL Установить/показать громкость CHANNEL (по умолчанию найден первый канал)
  • -d DEV Узел устройства (по умолчанию /dev/mixer)
  • -l VOL Уровень громкости
  • -r RIGHT Громкость правого стереоканала (с помощью -r, -l устанавливает громкость левого)

  • usage: mix [-d DEV] [-c CHANNEL] [-l VOL] [-r RIGHT]

    List OSS sound channels (module snd-mixer-oss), or set volume(s).
  • -c CHANNEL Set/show volume of CHANNEL (default first channel found)
  • -d DEV Device node (default /dev/mixer)
  • -l VOL Volume level
  • -r RIGHT Volume of right stereo channel (with -r, -l sets left volume)

  • Исходный текст в файле mix.c

    #define FOR_mix
    #include "toys.h"
    #include <linux/soundcard.h>
    
    GLOBALS(
       long r, l;
       char *d, *c;
    )
    
    void mix_main(void)
    {
      const char *channels[SOUND_MIXER_NRDEVICES] = SOUND_DEVICE_NAMES;
      int mask, channel = -1, level, fd;
    
      if (!TT.d) TT.d = "/dev/mixer";
      fd = xopen(TT.d, O_RDWR|O_NONBLOCK);
      xioctl(fd, SOUND_MIXER_READ_DEVMASK, &mask);
    
      for (channel = 0; channel < SOUND_MIXER_NRDEVICES; channel++) {
        if ((1<<channel) & mask) {
          if (TT.c) {
            if (!strcmp(channels[channel], TT.c)) break;
          } else if (toys.optflags & FLAG_l) break;
          else printf("%s\n", channels[channel]);
        }
      }
    
      if (!(toys.optflags & (FLAG_c|FLAG_l))) return;
      else if (channel == SOUND_MIXER_NRDEVICES) error_exit("bad -c '%s'", TT.c);
    
      if (!(toys.optflags & FLAG_l)) {
        xioctl(fd, MIXER_READ(channel), &level);
        if (level > 0xFF)
          xprintf("%s:%s = left:%d\t right:%d\n",
                  TT.d, channels[channel], level>>8, level & 0xFF);
        else xprintf("%s:%s = %d\n", TT.d, channels[channel], level);
      } else {
        level = TT.l;
        if (!(toys.optflags & FLAG_r)) level = TT.r | (level<<8);
    
        xioctl(fd, MIXER_WRITE(channel), &level);
      }
    
      if (CFG_TOYBOX_FREE) close(fd);
    }