android5.0(Lollipop) Audio-第一篇:Android5.0比4.4多了什么

最近对android的audio感兴趣,想看一下audio的东西。手上有5.0的代码,就想以5.0为版本学习。在学习的过程中,我发现android5.0对4.4改了一些东西,甚至文件路径有些都改变了。那么接下来的几篇文章就介绍一下学习audio过程中的大家以后可能会用到一些东西。

Audio在Android KitKat输出时有延时,有时候可以达到600ms。在Android L对此问题明显进行了改善。下面让我看看5.0到底有哪些改善:

1、低延时(输入/输出)– Audio patch-panel

Android4.4介绍通过基于加速音频的OpenSL减少输出音频延时,但是延时仍然很高,不足以音频进程的应用使用。Android5.0确保显著低的输入延时(~20ms),这虽然不完美,但是非常有用。输出延时和整个音频进程都加速显著减少,并且第一次使能实时音频。

2、24位每次采样

采样率解析度由16bit PCM上升到24bit,会获得更好的精准度。在Android4.4或者以前版本,Android通过进程系统每次采样率是16bit。即使以前新手机支持24bit 96khz DAC,Android核心仍没有真中使用。一些OEM厂商例如LG,修改Android AudioFlinger和Kernel达到24bit,但是这种做法从未被贡献到Android社区。

3. 96khz采样率

Android4.4采样率只支持44khz/48Khz,现在android5.0支持96khz的采样率

4.浮点抽样

浮点数对程序员来说是一个可怕的单词,因为他会花费两倍的内存,变得缓慢。谷歌正在尝试改变浮点数的这一印象。他们已经使整个Audio系统的浮点数兼容,认为在现在SIMD(单指令多数据)处理器每秒帧数和整数一样快,所以优势非常明显。直接使用FPs的优势是:

没有音频剪辑

更好的精度,更好的质量 

更好的动态范围

更大的空间

在过程运算中,浮点运算是非常有用的。播放终端使用整数格式的音频数据,较低的位深度。


对开发者:用 android.media.AudioFormat.ENCODING_PCM_FLOAT


5. 更好的重采样

Android5.0提高线性内插程序重新采集音频流。大部分的音频文件是 44khz、48khz或者96khz之一。为了声音播放无差别,如果音频文件不能适应手机的DAC支持的采样率,auido系统会进行重新采样。例如,Nexus 5支持48khz采样率。因此如果播放一首44khz的mp3音频,手机必须重新采样到48khz。

6.改进的AV同步信号
Android一直存在Audio和Video同步的问题(10-100ms)。最终解决的新同步方式是确保音轨和视频关键帧一直匹配。

7. USB audio

USBaudio现在已经支持了。在产品本身以外,你可以用额外的声卡(或者DAC)和连线所有声音通过USB audio。

8.API改进(针对开发者)

你的应用现在可以对提供的MediaCodec在相同格式下用一个ByteBuffer提供音频数据。添加了新的NDK多媒体接口。

 


发布了25 篇原创文章 · 获赞 36 · 访问量 20万+
展开阅读全文

18.04 编译8.1安卓源码报错

08-08

我用18.04 编译安卓源码的时候报下面的错误,有人遇到过吗? 1 warning generated. [ 18% 12030/66759] target C++: libaau...es/oboeservice/AAudioClientTracker.cpp FAILED: out/target/product/salvator/obj/SHARED_LIBRARIES/libaaudioservice_intermediates/AAudioClientTracker.o /bin/bash -c "PWD=/proc/self/cwd prebuilts/clang/host/linux-x86/clang-4053586/bin/clang++ -I frameworks/av/services/audioflinger -I system/media/audio_utils/include -I frameworks/native/include -I system/core/base/include -I ./frameworks/native/media/libaaudio/include/include -I ./frameworks/av/media/libaaudio/include -I ./frameworks/av/media/utils/include -I frameworks/native/include -I ./external/tinyalsa/include -I ./frameworks/av/media/libaaudio/src -I frameworks/av/services/oboeservice -I out/target/product/salvator/obj/SHARED_LIBRARIES/libaaudioservice_intermediates -I out/target/product/salvator/gen/SHARED_LIBRARIES/libaaudioservice_intermediates -I libnativehelper/include_deprecated \$(cat out/target/product/salvator/obj/SHARED_LIBRARIES/libaaudioservice_intermediates/import_includes) -I system/core/include -I system/media/audio/include -I hardware/libhardware/include -I hardware/libhardware_legacy/include -I hardware/ril/include -I libnativehelper/include -I frameworks/native/opengl/include -I frameworks/av/include -isystem out/target/product/salvator/obj/include -isystem bionic/libc/arch-arm64/include -isystem bionic/libc/include -isystem bionic/libc/kernel/uapi -isystem bionic/libc/kernel/uapi/asm-arm64 -isystem bionic/libc/kernel/android/scsi -isystem bionic/libc/kernel/android/uapi -c -fno-exceptions -Wno-multichar -fno-strict-aliasing -fstack-protector-strong -ffunction-sections -fdata-sections -funwind-tables -Wa,--noexecstack -Werror=format-security -D_FORTIFY_SOURCE=2 -fno-short-enums -no-canonical-prefixes -Werror=pointer-to-int-cast -Werror=int-to-pointer-cast -Werror=implicit-function-declaration -DNDEBUG -O2 -g -Wstrict-aliasing=2 -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -DNDEBUG -UDEBUG -fdebug-prefix-map=/proc/self/cwd= -D__compiler_offsetof=__builtin_offsetof -Werror=int-conversion -Wno-reserved-id-macro -Wno-format-pedantic -Wno-unused-command-line-argument -fcolor-diagnostics -Wno-expansion-to-defined -fdebug-prefix-map=\$PWD/= -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Werror=date-time -nostdlibinc -mcpu=cortex-a53 -target aarch64-linux-android -Bprebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/aarch64-linux-android/bin -Wsign-promo -Wno-inconsistent-missing-override -Wno-null-dereference -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -Wno-thread-safety-negative -fvisibility-inlines-hidden -std=gnu++14 -fno-rtti -Wno-unused-parameter -Wall -Werror -fPIC -D_USING_LIBCXX -DANDROID_STRICT -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast -Werror=address-of-temporary -Werror=return-type -MD -MF out/target/product/salvator/obj/SHARED_LIBRARIES/libaaudioservice_intermediates/AAudioClientTracker.d -o out/target/product/salvator/obj/SHARED_LIBRARIES/libaaudioservice_intermediates/AAudioClientTracker.o frameworks/av/services/oboeservice/AAudioClientTracker.cpp" clang++.real: error: unable to execute command: Segmentation fault (core dumped) clang++.real: error: clang frontend command failed due to signal (use -v to see invocation) 这个错误 clang++.real: error: unable to execute command: Segmentation fault (core dumped) clang++.real: error: clang frontend command failed due to signal (use -v to see invocation) 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览