重新编译 PulseAudio

重新编译 PulseAudio

我在重新编译 PulseAudio 时遇到了问题。我决定重新编译以尝试 WebRTC 回声消除以及访问均衡器。

我在这里没有做任何疯狂的事情,我只是做了以下事情:

apt-get source pulseaudio
sudo apt-get build-dep pulseaudio
sudo apt-get install libwebrtc-audio-processing-dev
cd pulsaudio-4.0
#Add --enable-webrtc-aec to debian/rules
dpkg-builpackage -uc -us -b -j8

我在编译时遇到以下错误:

In file included from /usr/include/x86_64-linux-gnu/sys/soundcard.h:1:0,
             from utils/padsp.c:35:
utils/padsp.c: In function 'dsp_ioctl':
utils/padsp.c:2280:14: error: 'SOUND_PCM_READ_RATE_is_obsolete' undeclared (first use in this function)
     case SOUND_PCM_READ_RATE:
          ^
utils/padsp.c:2280:14: note: each undeclared identifier is reported only once for each function it appears in
utils/padsp.c:2288:14: error: 'SOUND_PCM_READ_CHANNELS_is_obsolete' undeclared (first use in this function)
     case SOUND_PCM_READ_CHANNELS:
          ^
utils/padsp.c:2296:14: error: 'SOUND_PCM_READ_BITS_is_obsolete' undeclared (first use in this function)
     case SOUND_PCM_READ_BITS:
          ^
make[4]: *** [libpulsedsp_la-padsp.lo] Error 1

即使从构建选项中删除 --enable-webrtc-aec,它也无法正确编译。有人知道这里出了什么问题吗?

澄清:有一种方法可以通过使用 --disable-oss-wrapper 来避免此构建问题,但是此选项在源包本身中是启用的(默认情况下)。如果这是用于构建包的源,那么它是如何构建的?我试图弄清楚的是如何设置我的系统来构建默认包(具有附加功能)而不删除应该根据存储库中提供的版本可用。这应该是一个简单的过程,但出于某种原因,事实并非如此。

编辑:所以,我认为 5.0 版本可能可以帮助我避免这个问题,但我使用 PulseAudio 5.0 时遇到的错误与使用 4.0 时遇到的错误相同。它抱怨的标头由 libc6-dev 提供。是否有可能在 libc6 中发生了一些更改导致出现此问题?

答案1

看来自从升级到 Utopic 或 Vivid LTS 支持堆栈以来,这个问题已经解决了。我决定最近再试一次,除了并行作业的问题外,编译没有问题。我不得不删除oss4-dev,但这是上次尝试的遗留问题,因为它apt-file告诉我 oss4-dev 将提供它抱怨的文件的版本。

总而言之,WebRTC 回声消除效果非常好。我测试了它,通过扬声器播放音乐,它消除了所有声音。最终结果有点模糊,但这个小副作用值得。我的想法:WebRTC 回声消除应该成为主流。

相关内容