zoukankan      html  css  js  c++  java
  • C++ 调节PCM音频音量大小

    在用解码器解码音频数据得到PCM音频数据块之后,可以在将数据送给声卡播放之前调节其音量大小,具体的实现函数如下:

    [cpp] view plain copy
     
    1. void RaiseVolume(char* buf, UINT32 size, UINT32 uRepeat, double vol)//buf为需要调节音量的音频数据块首地址指针,size为长度,uRepeat为重复次数,通常设为1,vol为增益倍数,可以小于1  
    2. {  
    3.     if (!size)  
    4.     {  
    5.         return;  
    6.     }  
    7.     for (int i = 0; i < size;)  
    8.     {  
    9.         signed long minData = -0x8000; //如果是8bit编码这里变成-0x80  
    10.         signed long maxData = 0x7FFF;//如果是8bit编码这里变成0xFF  
    11.   
    12.         signed short wData = buf[i + 1];  
    13.         wData = MAKEWORD(buf[i], buf[i + 1]);  
    14.         signed long dwData = wData;  
    15.   
    16.         for (int j = 0; j < uRepeat; j++)  
    17.         {  
    18.             dwData = dwData * vol;  
    19.             if (dwData < -0x8000)  
    20.             {  
    21.                 dwData = -0x8000;  
    22.             }  
    23.             else if (dwData > 0x7FFF)  
    24.             {  
    25.                 dwData = 0x7FFF;  
    26.             }  
    27.         }  
    28.         wData = LOWORD(dwData);  
    29.         buf[i] = LOBYTE(wData);  
    30.         buf[i + 1] = HIBYTE(wData);  
    31.         i += 2;  
    32.     }  
    33. }  
  • 相关阅读:
    Unity shader之金属质感衣服
    Unity之如何使用夜神模拟器logcat
    Unity XLua之协程
    Unity shader之ColorMask
    NGUI之实现连连看小游戏
    NGUI之使用UISprite画线
    Unity如何退出游戏
    c#之AES加密解密
    Unity shader学习之屏幕后期处理效果之高度雾,重建world pos方法2
    Unity shader学习之屏幕后期处理效果之高度雾,重建world pos方法1
  • 原文地址:https://www.cnblogs.com/lidabo/p/6834317.html
Copyright © 2011-2022 走看看