使用ndk直接编译x265的动态库

在x265的soure目录下建立Application.mk文件,内容如下:

APP_BUILD_SCRIPT := Android.mk
APP_STL := gnustl_static
APP_ABI :=armeabi
APP_PLATFORM := android-16

再建立Android.mk文件,内容如下:

LOCAL_PATH := $(call my-dir)

#---------- static module ----------#

COMMON_CPP_SRCS := \
    common/cpu.cpp \
    common/ipfilter.cpp \
    common/threadpool.cpp \
    common/param.cpp \
    common/picyuv.cpp \
    common/framedata.cpp \
    common/bitstream.cpp \
    common/pixel.cpp \
    common/predict.cpp \
    common/quant.cpp \
    common/constants.cpp \
    common/md5.cpp \
    common/dct.cpp \
    common/loopfilter.cpp \
    common/primitives.cpp \
    common/scalinglist.cpp \
    common/piclist.cpp \
    common/frame.cpp \
    common/slice.cpp \
    common/common.cpp \
    common/threading.cpp \
    common/lowres.cpp \
    common/intrapred.cpp \
    common/wavefront.cpp \
    common/winxp.cpp \
    common/shortyuv.cpp \
    common/yuv.cpp \
    common/deblock.cpp \
    common/cudata.cpp \
    common/version.cpp \
    common/lowpassdct.cpp

COMMON_ARM_SRCS := \
    common/arm/asm-primitives.cpp \
    common/arm/asm.S \
    common/arm/blockcopy8.S \
    common/arm/cpu-a.S \
    common/arm/dct-a.S \
    common/arm/ipfilter8.S \
    common/arm/mc-a.S \
    common/arm/pixel-util.S \
    common/arm/sad-a.S \
    common/arm/ssd-a.S

COMMON_X86_SRCS := \
    common/x86/asm-primitives.cpp \
    common/x86/blockcopy8.asm \
    common/x86/const-a.asm \
    common/x86/cpu-a.asm \
    common/x86/dct8.asm \
    common/x86/intrapred16.asm \
    common/x86/intrapred8_allangs.asm \
    common/x86/intrapred8.asm \
    common/x86/ipfilter16.asm \
    common/x86/ipfilter8.asm \
    common/x86/loopfilter.asm \
    common/x86/mc-a2.asm \
    common/x86/mc-a.asm \
    common/x86/pixel-32.asm \
    common/x86/pixel-a.asm \
    common/x86/pixeladd8.asm \
    common/x86/pixel-util8.asm \
    common/x86/sad16-a.asm \
    common/x86/sad-a.asm \
    common/x86/ssd-a.asm \
    common/x86/x86inc.asm \
    common/x86/x86util.asm \
    common/x86/seaintegral.asm

ENCODER_CPP_SRCS := \
    encoder/analysis.cpp \
    encoder/api.cpp \
    encoder/bitcost.cpp \
    encoder/dpb.cpp \
    encoder/encoder.cpp \
    encoder/entropy.cpp \
    encoder/frameencoder.cpp \
    encoder/framefilter.cpp \
    encoder/level.cpp \
    encoder/motion.cpp \
    encoder/nal.cpp \
    encoder/ratecontrol.cpp \
    encoder/reference.cpp \
    encoder/sao.cpp \
    encoder/search.cpp \
    encoder/sei.cpp \
    encoder/slicetype.cpp \
    encoder/weightPrediction.cpp

INPUT_CPP_SRCS := \
    input/input.cpp \
    input/y4m.cpp \
    input/yuv.cpp

OUTPUT_CPP_SRCS := \
    output/reconplay.cpp \
    output/raw.cpp \
    output/y4m.cpp \
    output/yuv.cpp \
    output/output.cpp


include $(CLEAR_VARS)
LOCAL_MODULE     := common
LOCAL_ARM_MODULE := arm

LOCAL_CFLAGS     := -Wall -Wextra -Wshadow -std=gnu++98 -fPIC -Wno-array-bounds -ffast-math -fno-exceptions -fpermissive -frtti -Wno-maybe-uninitialized
LOCAL_CFLAGS     += -DEXPORT_C_API=1 -DHAVE_INT_TYPES_H=1 -DHIGH_BIT_DEPTH=0 -DX265_DEPTH=8 -DX265_NS=x265 -D__STDC_LIMIT_MACROS=1 -DHAVE_STRTOK_R
LOCAL_EXPORT_CFLAGS := $(LOCAL_CFLAGS)

LOCAL_SRC_FILES := $(COMMON_CPP_SRCS)

$(info arm = $(TARGET_ARCH_ABI))
ifneq (, $(findstring $(TARGET_ARCH_ABI),armeabi armeabi-v7a))
    LOCAL_CFLAGS    += -DHAVE_NEON -DX265_ARCH_ARM
    LOCAL_SRC_FILES += $(COMMON_ARM_SRCS)
endif

ifeq ($(TARGET_ARCH_ABI),x86)
    LOCAL_CFLAGS    += -UX86_64 -DX265_ARCH_X86
    LOCAL_SRC_FILES += $(COMMON_X86_SRCS)
endif

LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/common $(LOCAL_PATH)/encoder
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
include $(BUILD_STATIC_LIBRARY)


#---------- static module ----------#

include $(CLEAR_VARS)
LOCAL_MODULE     := encoder
LOCAL_ARM_MODULE := arm
LOCAL_SRC_FILES  := $(ENCODER_CPP_SRCS)
LOCAL_STATIC_LIBRARIES := common
include $(BUILD_STATIC_LIBRARY)


#---------- static module ----------#

include $(CLEAR_VARS)
LOCAL_MODULE     := input
LOCAL_ARM_MODULE := arm
LOCAL_SRC_FILES := \
    input/input.cpp \
    input/y4m.cpp \
    input/yuv.cpp

LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_STATIC_LIBRARIES := common
include $(BUILD_STATIC_LIBRARY)


#---------- static module ----------#

include $(CLEAR_VARS)
LOCAL_MODULE     := output
LOCAL_ARM_MODULE := arm

LOCAL_SRC_FILES := \
    output/reconplay.cpp \
    output/raw.cpp \
    output/y4m.cpp \
    output/yuv.cpp \
    output/output.cpp

LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_STATIC_LIBRARIES := common
include $(BUILD_STATIC_LIBRARY)



include $(CLEAR_VARS)
LOCAL_MODULE     := x265
LOCAL_ARM_MODULE := arm
LOCAL_WHOLE_STATIC_LIBRARIES := encoder input output
include $(BUILD_SHARED_LIBRARY)

 执行ndk-build命令就可以了

可直接下载ffmpeg+x264+265资源地址:

ffmpeg+x264+265

猜你喜欢

转载自blog.csdn.net/zxb3121999/article/details/80857438