小编Dal*_*ber的帖子

修改音频样本缓冲区的音量增益

我想用语音数据增加缓冲区的音量.关键是我正在使用DirectSound,我有一个主缓冲区和一个辅助缓冲区 - 所有流混合都是手工完成的.在语音聊天中,所有参与者可以具有独立的音量级别.我将每个流数据乘以一个值(增益)并将其加到一个缓冲区.一切正常,但当我尝试将数据乘以大于1.0f的值时 - 我听到一些剪辑或什么.

我尝试过使用Audacity效果压缩器,但这无助于减少奇怪的噪音.

可能我应该以其他方式改变收益?或者只是使用另一种后处理算法?

更新:哇,我刚发现有趣的事情!在增加音量之前,我已经放弃了音频.

这是照片 剪辑的音频

对不起质量 - 我认为这应该是声音出现的方式(我自己画了红线).真的看起来像超过样本数据类型的值.但我无法理解为什么?我的samplebuffer是BYTE,但我只通过短指针访问它.它已签名但即使*ptr约为15-20万时也会发生剪辑.

c++ volume directsound audacity audio-processing

6
推荐指数
1
解决办法
4125
查看次数

虚拟音频驱动程序(麦克风)

我想开发一个虚拟麦克风驱动程序。请不要谈论任何有关 DirectShow 的内容 - 这不是“方法”。我需要一个适用于任何软件(包括 Skype 和 MSN)的解决方案。而DirectShow并不符合这些要求。

我在 Windows 7 WDK 中找到了AVStream Filter-Centric Simulated Capture Driver (avssamp.sys)。我需要的是它的音频部分。默认情况下,它读取 avssamp.wav 并播放它。但该驱动程序被注册为WDM流捕获设备。我想要它在音频捕获设备中。

网上有一些帖子,但都是一样的:

http://www.tech-archive.net/Archive/Development/microsoft.public.development.device.drivers/2005-05/msg00124.html

http://www.winvistatips.com/problem-installing-avssamp-audio-capture-sources-category-t184898.html

我认为将此过滤器驱动程序注册为音频捕获设备将使 Skype 将其识别为麦克风,因此我将能够推送任何 PCM 文件,就像它来自麦克风一样。

如果有人之前已经遇到过这个问题,请提供帮助。

提前致谢。

c audio kernel driver microphone

5
推荐指数
1
解决办法
5270
查看次数

G.711 c ++实现

你能用C/C++建议G.711音频编解码器实现吗?

我将在专有软件中使用它.

c c++ audio codec

5
推荐指数
1
解决办法
2097
查看次数

我可以安装带有测试证书的x64驱动程序而不禁用驱动程序签名吗?

我正在开发一个虚拟驱动程序,QA需要在几台Windows 7机器上查看x64版本.我严格按照生成证书的说明进行测试,但我仍然遇到一些问题.所以,我已经完成了以下步骤:

Makecert -r -pe -n "CN=TestCertForWDK" -ss "TestCert" mccert.cer
Run Code Online (Sandbox Code Playgroud)

我在安装程序中添加了以下两行,以便在远程计算机上安装自动证书

certmgr.exe -add mccert.cer -s -r localMachine root
certmgr.exe -add mccert.cer -s -r localMachine trustedpublisher
Run Code Online (Sandbox Code Playgroud)

Inf2cat.exe /driver:D:\Projects\MyDrv\package\ /os:7_X64
Run Code Online (Sandbox Code Playgroud)

最后

signtool sign /a /v /s "TestCert" /n "TestCertForWDK" mydrv.cat
signtool sign /a /v /s "TestCert" /n "TestCertForWDK" mydrv.sys
Run Code Online (Sandbox Code Playgroud)

顺便说一句,起初我尝试通过devcon安装.它报告"devcon成功",但设备管理器中的设备标有黄色感叹号(不受信任的签名).

后来,我尝试使用hdwwiz - 当我手动输入驱动程序的路径(有磁盘)时 - hdwwiz显示驱动程序有签名,安装过程没有任何警告.但在那之后,正如我已经提到的那样,由于签名无效,设备无法正常工作(黄色"!")

我在Winqual上有一个帐户,但是驱动程序仍处于开发状态,我还不想为提交付款.难道我做错了什么?是否可以使用我自己makecert.exe生成的证书安装x64驱动程序,而无需在最终用户PC上禁用驱动程序签名(这对我来说是不可接受的)?

driver windows-7-x64 driver-signing

4
推荐指数
1
解决办法
9790
查看次数

处理CoCreateInstance返回值

这是创建COM对象的代码示例:

CComPtr<IBaseFilter> pFilter;
auto hr = CoCreateInstance(CLSID_DMOWrapperFilter, NULL,
    CLSCTX_INPROC_SERVER, IID_IBaseFilter, reinterpret_cast<void**>(&pFilter));
Run Code Online (Sandbox Code Playgroud)

我已经看到某个地方检查是否CoCreateInstance()成功应该如下所示:

if (SUCCEEDED(hr) && pFilter != nullptr)
{
  // code goes here
}
Run Code Online (Sandbox Code Playgroud)

如果我只检查hr怎么办?这不够吗?我也应该检查一下filter != nullptr吗?

//would this be enough?
if (SUCCEEDED(hr))
{
  // code goes here
}
Run Code Online (Sandbox Code Playgroud)

这个问题还涉及其他COM方法QueryInterface().

c++ com atl queryinterface hresult

4
推荐指数
1
解决办法
1042
查看次数