本文2017-3-13 基本环境: 1. 操作系统:Windows10 64位; 2. Android Studio 2.3,64位。 3. Android NDK开发包:直接使用Android Studio安装NDK。(需要梯子) 4.按照上述按照上述二编译好的SDL Demo程序 操作步骤: 一、准备faad2。到: http://www.audiocoding.com/downloads.html 下载faad2 2.7 二、下载后,将faad2解压到Jni目录下,形成 \Jni\faad目录,改目录下就有libfaad目录,这些就是C的源文件 三、新建文件config.h在\Jni\faad目录下:
/* config.h. Generated from config.h.in by configure. */ /* config.h.in. Generated from configure.in by autoheader. */ /* Define if you want to use libfaad together with Digital Radio Mondiale (DRM) */ /* #undef DRM */ /* Define if you want support for Digital Radio Mondiale (DRM) parametric stereo */ /* #undef DRM_PS */ /* Define to 1 if you have the <dlfcn.h> header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you have the <errno.h> header file. */ #define HAVE_ERRNO_H 1 /* Define if needed */ /* #undef HAVE_FLOAT32_T */ /* Define to 1 if you have the <float.h> header file. */ #define HAVE_FLOAT_H 1 /* Define to 1 if you have the `getpwuid' function. */ #define HAVE_GETPWUID 1 /* Define to 1 if you have the <inttypes.h> header file. */ #define HAVE_INTTYPES_H 1 /* Define if you have the IOKit API */ /* #undef HAVE_IOKIT_IOKITLIB_H */ /* Define to 1 if you have the <limits.h> header file. */ #define HAVE_LIMITS_H 1 /* Define if you have C99's lrintf function. */ #define HAVE_LRINTF 1 /* Define to 1 if you have the <mathf.h> header file. */ /* #undef HAVE_MATHF_H */ /* Define to 1 if you have the `memcpy' function. */ #define HAVE_MEMCPY 1 /* Define to 1 if you have the <memory.h> header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strsep' function. */ #define HAVE_STRSEP 1 /* Define to 1 if you have the <sysfs/libsysfs.h> header file. */ /* #undef HAVE_SYSFS_LIBSYSFS_H */ /* Define to 1 if you have the <sys/stat.h> header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the <sys/time.h> header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the <sys/types.h> header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the <unistd.h> header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* Name of package */ #define PACKAGE "faad2" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "" /* Define to the full name of this package. */ #define PACKAGE_NAME "" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "" /* Define to the version of this package. */ #define PACKAGE_VERSION "" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ #define TIME_WITH_SYS_TIME 1 /* Version number of package */ #define VERSION "2.7.0" /* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ /* #undef WORDS_BIGENDIAN */ /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus /* #undef inline */ #endif /* Define to `long int' if <sys/types.h> does not define. */ /* #undef off_t */
三、新建文件Android.mk在\Jni\faad目录下:
LOCAL_PATH := $(call my-dir) FAAD2_TOP := $(LOCAL_PATH) include $(CLEAR_VARS) include $(FAAD2_TOP)/libfaad/Android.mk四、新建文件Android.mk在\Jni\faad\libfaad目录下
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ bits.c \ cfft.c \ decoder.c \ drc.c \ drm_dec.c \ error.c \ filtbank.c \ ic_predict.c \ is.c \ lt_predict.c \ mdct.c \ mp4.c \ ms.c \ output.c \ pns.c \ ps_dec.c \ ps_syntax.c \ pulse.c \ specrec.c \ syntax.c \ tns.c \ hcr.c \ huffman.c \ rvlc.c \ ssr.c \ ssr_fb.c \ ssr_ipqf.c \ common.c \ sbr_dct.c \ sbr_e_nf.c \ sbr_fbt.c \ sbr_hfadj.c \ sbr_hfgen.c \ sbr_huff.c \ sbr_qmf.c \ sbr_syntax.c \ sbr_tf_grid.c \ sbr_dec.c LOCAL_MODULE:= libfaad LOCAL_C_INCLUDES := \ $(LOCAL_PATH) \ $(FAAD2_TOP)/android \ $(FAAD2_TOP)/include \ $(LOCAL_PATH)/codebook LOCAL_CFLAGS:= \ -DHAVE_CONFIG_H include $(BUILD_SHARED_LIBRARY)五、生成libfaad.so 命令行进入到目录jni,执行ndk-build将会生成libfaad.so文件 新建目录jni/sdl/include/faad目录,将faad/include目录下2个头文件拷贝到其中备用