ndk-build编译faad2

    xiaoxiao2021-03-25  61

    

     本文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个头文件拷贝到其中备用

    转载请注明原文地址: https://ju.6miu.com/read-40727.html

    最新回复(0)