openal android 编译,Android OpenAL编译

1. OpenAL

OpenAL是一个开源的音频后处理工具包,可以添加各种音效,修改声源空间位置等等。在前面的文章【OpenAL简介】中也有介绍。

IOS上已经集成了OpenAL,android平台暂未集成。但是OpenAL全部用C实现,而且不大,集成起来比较方便。

PS:android平台也有专门的音频后处理模块,但是使用起来感觉不是很好,貌似还不太稳定。

2. 下载源代码

下载完源代码配置Android cmake编译比较麻烦,问题多多(主要是生产config.h文件)。

我把配置好的config.h文件提供给大家,大家可以拿来用,地址如下:

config.h

3. 编写mk

这里面有个坑需要点出来就是,Openal需要OpenSLES支持,所以需要android-9以上才能支持。

3.1 Application.mk

#

# Application.mk

#

# Created by wistone on 16/9/8.

# Author : wistone

# Email : xiyanglu@gmail.com

#

APP_OPTIM := release

APP_ABI := armeabi-v7a

APP_PLATFORM := android-9

3.2 Android.mk

#

# Android.mk

#

# Created by wistone on 16/7/8.

# Author : wistone

# Email : xiyanglu@gmail.com

#

TARGET_PLATFORM := android-9

ROOT_PATH := $(call my-dir)

########################################################################################################

include $(CLEAR_VARS)

OPENAL_ROOT := $(ROOT_PATH)/openal

OPENAL_ALC := $(OPENAL_ROOT)/Alc

OPENAL_AL32 := $(OPENAL_ROOT)/OpenAL32

$(warning OpenAL Root = $(OPENAL_ROOT))

$(warning $(OPENAL_ALC))

$(warning $(OPENAL_AL32))

LOCAL_MODULE := openal

LOCAL_ARM_MODE := arm

LOCAL_PATH := $(ROOT_PATH)

LOCAL_C_INCLUDES := $(LOCAL_PATH) \

$(OPENAL_ROOT) \

$(OPENAL_ROOT)/include \

$(OPENAL_ROOT)/Alc \

$(OPENAL_ROOT)/OpenAL32 \

$(OPENAL_ROOT)/OpenAL32/Include

LOCAL_SRC_FILES := \

$(OPENAL_ALC)/ALc.c \

$(OPENAL_ALC)/alcConfig.c \

$(OPENAL_ALC)/alcRing.c \

$(OPENAL_ALC)/ALu.c \

$(OPENAL_ALC)/ambdec.c \

$(OPENAL_ALC)/bformatdec.c \

$(OPENAL_ALC)/bs2b.c \

$(OPENAL_ALC)/bsinc.c \

$(OPENAL_ALC)/helpers.c \

$(OPENAL_ALC)/hrtf.c \

$(OPENAL_ALC)/mixer.c \

$(OPENAL_ALC)/mixer_c.c \

$(OPENAL_ALC)/panning.c \

$(OPENAL_ALC)/uhjfilter.c \

\

$(OPENAL_ALC)/effects/autowah.c \

$(OPENAL_ALC)/effects/chorus.c \

$(OPENAL_ALC)/effects/compressor.c \

$(OPENAL_ALC)/effects/dedicated.c \

$(OPENAL_ALC)/effects/distortion.c \

$(OPENAL_ALC)/effects/echo.c \

$(OPENAL_ALC)/effects/equalizer.c \

$(OPENAL_ALC)/effects/flanger.c \

$(OPENAL_ALC)/effects/modulator.c \

$(OPENAL_ALC)/effects/null.c \

$(OPENAL_ALC)/effects/reverb.c \

\

$(OPENAL_ALC)/backends/base.c \

$(OPENAL_ALC)/backends/loopback.c \

$(OPENAL_ALC)/backends/null.c \

$(OPENAL_ALC)/backends/opensl.c \

$(OPENAL_ALC)/backends/wave.c \

\

$(OPENAL_AL32)/alAuxEffectSlot.c \

$(OPENAL_AL32)/alBuffer.c \

$(OPENAL_AL32)/alEffect.c \

$(OPENAL_AL32)/alError.c \

$(OPENAL_AL32)/alExtension.c \

$(OPENAL_AL32)/alFilter.c \

$(OPENAL_AL32)/alListener.c \

$(OPENAL_AL32)/alSource.c \

$(OPENAL_AL32)/alState.c \

$(OPENAL_AL32)/alThunk.c \

$(OPENAL_AL32)/sample_cvt.c \

\

$(OPENAL_ROOT)/common/almalloc.c \

$(OPENAL_ROOT)/common/alhelpers.c \

$(OPENAL_ROOT)/common/atomic.c \

$(OPENAL_ROOT)/common/rwlock.c \

$(OPENAL_ROOT)/common/threads.c \

$(OPENAL_ROOT)/common/uintmap.c \

LOCAL_CFLAGS := -DAL_BUILD_LIBRARY \

-DAL_ALEXT_PROTOTYPES \

-DANDROID \

-fpic \

-ffunction-sections \

-funwind-tables \

-fstack-protector \

-fno-short-enums \

-DHAVE_GCC_VISIBILITY \

-O3 \

-mfpu=neon \

-mfloat-abi=softfp \

-march=armv7-a \

-ffast-math \

-std=c99 \

LOCAL_LDLIBS := -lOpenSLES -llog

LOCAL_ARM_NEON := true

LOCAL_STATIC_LIBRARIES := libtremolo

include $(BUILD_SHARED_LIBRARY)

4. 编译

进入工程jni目录执行:

$NDK/ndk-build

2b8bd55832afc0cf2fa45d0fc39184d3.png

5. 项目源代码

6. 后记

Android Studio 2.2之后支持CMake,OpenAL也支持CMake编译,之后有时间可以搞一搞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值