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. }  
时间: 2024-09-11 18:59:47

C++ 调节PCM音频音量大小的相关文章

如何在Windows8中调节亮度和音量大小方式

  1.进入系统桌面后,右键点击电池图标,在弹出对话框后,左键点击"调整屏幕亮度"; 2.在弹出对话框中,在已选的电源方案的后面选择"更改计划设置"; 3.在弹出对话框中,可以更改在电池和电源选项下面的亮度方案,然后选择保存修改. 调节音量方法: 1.进入系统桌面后,左键点击左下角"音量图标",拉动滚动条即可调节音量.

电脑Realtek HD Audio无法调节麦克风音量大小解决方法

安装方法: 把rtkhdaud.dat文件复制到C:/WINDOWS/system32/drivers下,然后重新启动计算机即可解决 其实也可以通过批处理来搞定的,将下面的代码保存为 *.bat 的文件后缀,如Realtek_mic_fix.bat  代码如下 复制代码 @echo off echo Realtek HD Audio无法调节麦克风音量大小的补 echo by:pop http://www.111cn.net/ echo. copy rtkhdaud.dat %SystemRoot

Windows 7电脑调节麦克风和声音输出的音量大小图解

1.在电脑右下角有一个的音量图标,拖动滑块 如下图所示,以前我的笔记本也是这样的. 2.如果我们任何栏上没看到调整图标, 我们可在在"开始"-->"控制面板"点击它,如下图所示:   3.进入到控制面板中点击"硬件和声音"细节如图所示: 4.好了进入到了硬件界面点击"声音"(第二个红框处): 5.在我们双击或点击"声音"时会弹出一个声音面板,在声音面板中我们点击"播放"-->

win7下载后音量大小调整不了该怎么办

  很多人现在仍然在使用传统的win7系统,当我们使用系统看电视或者看网页的时候,一般都需要对音量大小进行一个相关的调整.不过有的用户反应说在win7旗舰版下载后打开音量图标发现找不到音量调节了,找来找去仍然是找不到.那么win7旗舰版下载后音量大小调整不了该怎么办呢?下面来看看具体的解决方法. 1.打开系统之后,在开始菜单里面直接运行对话框,接着在运行窗口里面直接输入regedit字符,然后点击回车键确认,就打开了注册表编辑器; 2.注册表编辑器打开之后,依次打开下面的几个选项HKEY_LOC

MediaRecorder测量音量大小

1. 2.MediaRecorder mMediaRecorder; 3.int ratio = mMediaRecorder.getMaxAmplitude() / BASE; 4.int db = 0;// 分贝 也可以理解为定义的音量大小 5.if (ratio > 1) 6.db = (int) (20 * Math.log10(ratio));//db就是我们需要取得的音量的值. 7.//(int) (20 * Math.log10(ratio))振幅和音量大小的公式 8.//BASE

android编程获取和设置系统铃声和音量大小的方法

本文实例讲述了android编程获取和设置系统铃声和音量大小的方法.分享给大家供大家参考,具体如下: 通过程序获取android系统手机的铃声和音量.同样,设置铃声和音量的方法也很简单! 设置音量的方法也很简单,AudioManager提供了方法: public voidsetStreamVolume(intstreamType,intindex,intflags) 其中streamType有内置的常量,去文档里面就可以看到. JAVA代码: AudioManager mAudioManager

qt gstreamer怎么通过sink单元控制其音量大小

问题描述 qt gstreamer怎么通过sink单元控制其音量大小 gstreamer怎么通过sink单元控制其音量大小 在开发中我已经知道怎么用gstreamer创建管道进行媒体的播放,但没找到怎么控制该管道的音量大小的方法,在线求高手解答!!!

c#实现麦克风音量大小的监控

问题描述 c#实现麦克风音量大小的监控 最差要能检测是否有声音输入?求大牛 现在已经可以正常录音 主要是想来做语音连续识别,现在必须手动点开始录音 停止录音来完成一次识别过程 解决方案 http://blog.csdn.net/zhuweisky/article/details/46828703 解决方案二: 不是需要这个啊,获取声音大小.....大小.....播放声音录音我知道

使用WindowsAPI实现播放PCM音频的方法_C 语言

本文介绍了使用WindowsAPI实现播放PCM音频的方法,同前面一篇使用WindowsAPI获取录音音频的方法原理具有相似之处,这里就不再详细介绍具体的函数与结构体的参数,相同的部分加以省略,只介绍主要的功能部分代码.如下所示: 1. waveOutGetNumDevs 2. waveOutGetDevCaps 3. waveOutOpen 回调函数: void CALLBACK PlayCallback(HWAVEOUT hwaveout, UINT uMsg, DWORD dwInstan