zoukankan      html  css  js  c++  java
  • dsp

    //下面的代码示范了如何以只写方式打开声卡进行放音(playback)操作:
    int handle = open("/dev/dsp", O_WRONLY);
    if (handle == -1) {
        perror("open /dev/dsp");
        return -1;
    }
    /**
     * 【注意】:缓冲区大小的设置通常应紧跟在设备文件打开之后,
     * 这是因为对声卡的其它操作有可能会导致驱动程序无法再修改其缓冲区的大小。
     */
     
    //下面的代码示范了怎样设置声卡驱动程序中的内核缓冲区的大小:
    int setting = 0xnnnnssss;
    int result = ioctl(handle, SNDCTL_DSP_SETFRAGMENT, &setting);
    if (result == -1) {
        perror("ioctl buffer size");
        return -1;
    }// 检查设置值的正确性
    
    /**在设置缓冲区大小时,参数setting实际上由两部分组成:
     * 参数setting: 低16位->标明缓冲区的尺寸,缓冲区大小 = 65536字节.
                        相应的公式 :buffer_size = 2^ssss。
     *              高16位->标明分片最大序号,取值范围 : 2 -- 0x7FFF.
                        分片(fragment);0x7FFF表示没有任何限制.
     */
     
     /**设置声卡工作时的声道(channel)数目,根据硬件设备和驱动程序的具体情况,
      *可以将其设置为0(单声道,mono)或者1(立体声,stereo)。
      */
    //下面的代码示范了应该怎样设置声道数目:
    int channels = 0; // 0 = mono ; 1 = stereo
    int result = ioctl(handle, SNDCTL_DSP_STEREO, &channels);
    if ( result == -1 ) {
        perror("ioctl channel number");
        return -1; 
    }
    if (channels != 0) {
        // 只支持立体声
    }
  • 相关阅读:
    调用百度地图API添加点聚合时,marker标注的label标签刷新丢失问题
    redis--基本命令
    centos8安装redis6.0.5
    centos8更改镜像源
    centos8重启网络服务
    搭建eureka高可用
    html5图片缩放后上传blob
    mysql主从复制
    zTree
    datetimepicker使用总结
  • 原文地址:https://www.cnblogs.com/xuejianhui/p/2780424.html
Copyright © 2011-2022 走看看