ARM-Linux:设备-mixer-linux系统声音效果调节

系统:arm板/Linux系统
内核:2.6.7
设备:/dev/mixer
功能:linux系统声音效果调节
文件名:xxx.c
编译:gcc xxx.c -o mixerSet
终端执行:./mixerSet [leftvalue] [rightvalue]
测试:无问题

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/soundcard.h>


/* 用来存储所有可用混音设备的名称 */
const char *sound_device_names[] = SOUND_DEVICE_NAMES;
/* 混音设备所对应的文件描述符 */
int fd;
/* 混音器信息对应的位图掩码 */
int devmask, stereodevs;
char *name;

/* 显示命令的使用方法及所有可用的混音设备 */
void usage()
{
 int i;

 fprintf(stderr, "usage: %s <device> <left-gain%%> <right-gain%%>\n"
 " %s <device> <gain%%>\n\n"
 "Where <device> is one of:\n", name, name);
 for (i = 0 ; i < SOUND_MIXER_NRDEVICES ; i++)
  if ((1 << i) & devmask) /* 只显示有效的混音设备 */
  fprintf(stderr, "%s ", sound_device_names[i]);
 fprintf(stderr, "\n");
 exit(1);
}

int main(int argc, char *argv[])
{

 int left, right, level; /* 增益设置 */
 int status; /* 系统调用的返回值 */
 int device; /* 选用的混音设备 */
 char *dev; /* 混音设备的名称 */
 int i;
 name = argv[0];

 /* 以只读方式打开混音设备 */
 fd = open("/dev/mixer", O_RDONLY);
 if (fd == -1) {
  perror("unable to open /dev/mixer");
  exit(1);
 }

 /* 获得所需要的信息 */
 status = ioctl(fd, SOUND_MIXER_READ_DEVMASK, &devmask);
 if (status == -1)
  perror("SOUND_MIXER_READ_DEVMASK ioctl failed");
 status = ioctl(fd, SOUND_MIXER_READ_STEREODEVS, &stereodevs);

 if (status == -1)
  perror("SOUND_MIXER_READ_STEREODEVS ioctl failed");

 /* 检查用户输入 */
 if (argc != 3 && argc != 4)
  usage();
 /* 保存用户输入的混音器名称 */
 dev = argv[1];
 /* 确定即将用到的混音设备 */
 for (i = 0 ; i < SOUND_MIXER_NRDEVICES ; i++)
  if (((1 << i) & devmask) && !strcmp(dev, sound_device_names[i]))break;
 if (i == SOUND_MIXER_NRDEVICES) { /* 没有找到匹配项 */
  fprintf(stderr, "%s is not a valid mixer device\n", dev);
  usage();
 }
 /* 查找到有效的混音设备 */
 device = i;
 /* 获取增益值 */
 if (argc == 4) {
  /* 左、右声道均给定 */
  left = atoi(argv[2]);
  right = atoi(argv[3]);
 } else {
  /* 左、右声道设为相等 */
  left = atoi(argv[2]);
  right = atoi(argv[2]);
 }
 /* 对非立体声设备给出警告信息 */
 if ((left != right) && !((1 << i) & stereodevs)) {
  fprintf(stderr, "warning: %s is not a stereo device\n", dev);
 }
 /* 将两个声道的值合到同一变量中 */
 level = (right << 8) + left;
 /* 设置增益 */
 status = ioctl(fd, MIXER_WRITE(device), &level);
 if (status == -1) {
  perror("MIXER_WRITE ioctl failed");
  exit(1);
 }
 /* 获得从驱动返回的左右声道的增益 */
 left = level & 0xff;
 right = (level & 0xff00) >> 8;
 /* 显示实际设置的增益 */
 fprintf(stderr, "%s gain set to %d%% / %d%%\n", dev, left, right);
 /* 关闭混音设备 */
 close(fd);
 return 0;
}


首先不带参数执行编译出来的程序,得到系统中有效的混音设备,我使用的是飞凌OK210,里面已经有的设备有:speakerpcm2 igain ogain phout 共五个。
speaker:测试无效果
pcm2:测试可以调节音量大小,在40%时已经听不见声音了,在100%时声音最大
igain:测试无效果
ogain:测试可以调节音量大小,在40%时已经听不见声音了,在100%时声音最大,但相对于pcm2设备来说,效果较差。
phout:测试无效果

### 回答1: mlp-mixer是一种全MLP架构,用于视觉任务。它使用多层感知机(MLP)来代替传统的卷积神经网络(CNN)来处理图像。这种架构的优点是可以更好地处理不同尺度和方向的特征,同时减少了计算和内存消耗。它在许多视觉任务中表现出色,例如图像分类、目标检测和语义分割。 ### 回答2: mlp-mixer是一种全连接多层感知器(Multi-Layer Perceptron,MLP)网络架构,用于视觉场景的图像分类任务。它是在自然语言处理领域中Transformer的启发下发展起来的。与CNN、ResNet等传统的卷积神经网络架构不同,mlp-mixer主要采用全连接层(FC)和MLP Block。 mlp-mixer架构设计的主要思想是将全局信息和本地信息分离,然后通过一系列由FC和MLP Block组成的混合层进行特征提取。在每个MLP Block中,特征向量会被分成多个部分进行局部特征提取,之后再全局汇聚。这样可以保证局部信息不会在多次卷积操作后丢失,并且全局信息的汇聚也是非常高效的。 另外,mlp-mixer架构中的Layer Norm和MLP Block中的GELU激活函数等技术也是有其特点的。Layer Norm是比Batch Norm更加具有一般性的归一化技术,可以提高模型对小批量数据的扩展性。而GELU激活函数在接近0处光滑,对精度保持了很好的提升。这些技术的运用让mlp-mixer模型具有了更好的稳定性和鲁棒性。 综上所述,mlp-mixer是一个全新的神经网络架构,其与传统的卷积神经网络的不同点在于摆脱了卷积操作,通过全连接层和MLP Block等模块提取图像特征。该模型有很强的泛化性,并且在图像分类任务上取得了不错的效果。它的优点在于良好的可扩展性和可解释性,且训练效果非常稳定。在未来,mlp-mixer模型或许有望在计算机视觉领域中取得更进一步的发展。 ### 回答3: MLP-Mixer是一种全MLP(多层感知器)的架构,可以应用于视觉任务中的图像分类和目标检测等任务。MLP-Mixer在CVPR 2021中被提出并于同年6月被公开发布。 传统的卷积神经网络(CNN)被广泛应用于计算机视觉领域。但是,随着计算机视觉任务的不断发展和增加,如何更好地处理不同类型和规模的数据集,成为了一个挑战。因此,MLP-Mixer尝试解决传统卷积神经网络中一些问题,例如参数共享、池化和批归一化等。 MLP-Mixer的主要思想是将传统的卷积操作替换为由若干密集连接层(全连接层)组成的mixing层。传统的卷积操作只考虑空间上的邻居关系,而mixing层考虑全局视角。mixing层通过对不同通道(channel)的信息进行交互,捕捉不同通道之间的全局相关性,提高了特征提取的效率和性能,同时降低卷积神经网络的复杂性。 此外,MLP-Mixer还引入了多层感知器池化层(MLP Pooling Layer)代替传统的最大池化层(Max Pooling Layer),使神经网络更加灵活和高效。MLP-Mixer考虑到了计算机视觉中不同尺度的特征信息,通过MLP池化层进行特征重组和降维,使得神经网络可以处理多尺度特征信息,提高特征提取的精度和速度。 总的来说,MLP-Mixer是一种全MLP的架构,其独特的mixing层和MLP Pooling层相比传统的卷积神经网络有着更好的性能和可扩展性。未来,MLP-Mixer有望在计算机视觉领域的各种任务中得到广泛的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值