10c1bc742181ded4930842b46e9507372f0b1b963James DongLOCAL_PATH := $(call my-dir)
20c1bc742181ded4930842b46e9507372f0b1b963James Dong
30c1bc742181ded4930842b46e9507372f0b1b963James Donginclude $(CLEAR_VARS)
40c1bc742181ded4930842b46e9507372f0b1b963James Dong
50c1bc742181ded4930842b46e9507372f0b1b963James DongLOCAL_ARM_MODE := arm
60c1bc742181ded4930842b46e9507372f0b1b963James Dong
70c1bc742181ded4930842b46e9507372f0b1b963James DongLOCAL_SRC_FILES := \
80c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_transform.c \
90c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_util.c \
100c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_byte_stream.c \
110c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_seq_param_set.c \
120c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_pic_param_set.c \
130c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_slice_header.c \
140c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_slice_data.c \
150c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_macroblock_layer.c \
160c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_stream.c \
170c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_vlc.c \
180c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_cavlc.c \
190c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_nal_unit.c \
200c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_neighbour.c \
210c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_storage.c \
220c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_slice_group_map.c \
230c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_intra_prediction.c \
240c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_inter_prediction.c \
250c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_reconstruct.c \
260c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_dpb.c \
270c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_image.c \
280c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_deblocking.c \
290c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_conceal.c \
300c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_vui.c \
310c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_pic_order_cnt.c \
320c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/h264bsd_decoder.c \
330c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/H264SwDecApi.c \
340c1bc742181ded4930842b46e9507372f0b1b963James Dong	SoftAVC.cpp \
350c1bc742181ded4930842b46e9507372f0b1b963James Dong
360c1bc742181ded4930842b46e9507372f0b1b963James DongLOCAL_C_INCLUDES := $(LOCAL_PATH)/./inc \
37559bf2836f5da25b75bfb229fec0d20d540ee426James Dong	frameworks/av/media/libstagefright/include \
386c6b4d0d2b98a7ceee8b697daaf611f8df3254fbJames Dong	frameworks/native/include/media/openmax \
390c1bc742181ded4930842b46e9507372f0b1b963James Dong
400c1bc742181ded4930842b46e9507372f0b1b963James DongMY_ASM := \
410c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/arm_neon_asm_gcc/h264bsdWriteMacroblock.S \
420c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/arm_neon_asm_gcc/h264bsdClearMbLayer.S \
430c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/arm_neon_asm_gcc/h264bsdFillRow7.S \
440c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/arm_neon_asm_gcc/h264bsdCountLeadingZeros.S \
450c1bc742181ded4930842b46e9507372f0b1b963James Dong	./source/arm_neon_asm_gcc/h264bsdFlushBits.S
460c1bc742181ded4930842b46e9507372f0b1b963James Dong
470c1bc742181ded4930842b46e9507372f0b1b963James Dong
480c1bc742181ded4930842b46e9507372f0b1b963James DongMY_OMXDL_C_SRC := \
490c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src/omxVCM4P10_DeblockChroma_I.c \
500c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src/omxVCM4P10_DeblockLuma_I.c \
510c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src/omxVCM4P10_InterpolateChroma.c \
520c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src/armVCM4P10_CAVLCTables.c \
530c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src/omxVCM4P10_DecodeChromaDcCoeffsToPairCAVLC.c \
540c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src/omxVCM4P10_DecodeCoeffsToPairCAVLC.c \
550c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/src/armCOMM_Bitstream.c \
560c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/src/armCOMM.c
570c1bc742181ded4930842b46e9507372f0b1b963James Dong
580c1bc742181ded4930842b46e9507372f0b1b963James DongMY_OMXDL_ASM_SRC := \
590c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_DeblockingChroma_unsafe_s.S \
600c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_DeblockingLuma_unsafe_s.S \
610c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_Interpolate_Chroma_s.S \
620c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_InterpolateLuma_Align_unsafe_s.S \
630c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_InterpolateLuma_Copy_unsafe_s.S \
640c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_InterpolateLuma_DiagCopy_unsafe_s.S \
650c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_InterpolateLuma_HalfDiagHorVer4x4_unsafe_s.S \
660c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_InterpolateLuma_HalfDiagVerHor4x4_unsafe_s.S \
670c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_InterpolateLuma_HalfHor4x4_unsafe_s.S \
680c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_InterpolateLuma_HalfVer4x4_unsafe_s.S \
690c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/omxVCM4P10_FilterDeblockingChroma_HorEdge_I_s.S \
700c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/omxVCM4P10_FilterDeblockingChroma_VerEdge_I_s.S \
710c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/omxVCM4P10_FilterDeblockingLuma_HorEdge_I_s.S \
720c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/omxVCM4P10_FilterDeblockingLuma_VerEdge_I_s.S \
730c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/omxVCM4P10_InterpolateLuma_s.S \
740c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_Average_4x_Align_unsafe_s.S \
750c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_DecodeCoeffsToPair_s.S \
760c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_DequantTables_s.S \
770c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_QuantTables_s.S \
780c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_TransformResidual4x4_s.S \
790c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_UnpackBlock4x4_s.S \
800c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/omxVCM4P10_TransformDequantLumaDCFromPair_s.S \
810c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/omxVCM4P10_PredictIntra_16x16_s.S \
820c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/omxVCM4P10_PredictIntra_4x4_s.S \
830c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/omxVCM4P10_PredictIntraChroma_8x8_s.S \
840c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/omxVCM4P10_DequantTransformResidualFromPairAndAdd_s.S \
850c1bc742181ded4930842b46e9507372f0b1b963James Dong	./omxdl/arm_neon/vc/m4p10/src_gcc/omxVCM4P10_TransformDequantChromaDCFromPair_s.S \
860c1bc742181ded4930842b46e9507372f0b1b963James Dong
87db46c2f8ff4b305a217adbbd406a61d10ae71db7Ashok Bhatifeq ($(TARGET_ARCH),arm)
88db46c2f8ff4b305a217adbbd406a61d10ae71db7Ashok Bhat  ifeq ($(ARCH_ARM_HAVE_NEON),true)
890c1bc742181ded4930842b46e9507372f0b1b963James Dong    LOCAL_ARM_NEON   := true
900c1bc742181ded4930842b46e9507372f0b1b963James Dong#    LOCAL_CFLAGS     := -std=c99 -D._NEON -D._OMXDL
910c1bc742181ded4930842b46e9507372f0b1b963James Dong    LOCAL_CFLAGS     := -DH264DEC_NEON -DH264DEC_OMXDL
920c1bc742181ded4930842b46e9507372f0b1b963James Dong    LOCAL_SRC_FILES  += $(MY_ASM) $(MY_OMXDL_C_SRC) $(MY_OMXDL_ASM_SRC)
930c1bc742181ded4930842b46e9507372f0b1b963James Dong    LOCAL_C_INCLUDES += $(LOCAL_PATH)/./source/arm_neon_asm_gcc
940c1bc742181ded4930842b46e9507372f0b1b963James Dong    LOCAL_C_INCLUDES += $(LOCAL_PATH)/./omxdl/arm_neon/api \
950c1bc742181ded4930842b46e9507372f0b1b963James Dong                        $(LOCAL_PATH)/./omxdl/arm_neon/vc/api \
960c1bc742181ded4930842b46e9507372f0b1b963James Dong                        $(LOCAL_PATH)/./omxdl/arm_neon/vc/m4p10/api
97db46c2f8ff4b305a217adbbd406a61d10ae71db7Ashok Bhat  endif
980c1bc742181ded4930842b46e9507372f0b1b963James Dongendif
990c1bc742181ded4930842b46e9507372f0b1b963James Dong
1000c1bc742181ded4930842b46e9507372f0b1b963James DongLOCAL_SHARED_LIBRARIES := \
101da0dc0af0effe9fbfb3ce3187c8472fca2baf3c6Ying Wang	libstagefright libstagefright_omx libstagefright_foundation libutils liblog \
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong
1030c1bc742181ded4930842b46e9507372f0b1b963James DongLOCAL_MODULE := libstagefright_soft_h264dec
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong
1050c1bc742181ded4930842b46e9507372f0b1b963James DongLOCAL_MODULE_TAGS := optional
1060c1bc742181ded4930842b46e9507372f0b1b963James Dong
1070c1bc742181ded4930842b46e9507372f0b1b963James Donginclude $(BUILD_SHARED_LIBRARY)
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong#####################################################################
1100c1bc742181ded4930842b46e9507372f0b1b963James Dong# test utility: decoder
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong#####################################################################
1120c1bc742181ded4930842b46e9507372f0b1b963James Dong##
1130c1bc742181ded4930842b46e9507372f0b1b963James Dong## Test application
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong##
1150c1bc742181ded4930842b46e9507372f0b1b963James Donginclude $(CLEAR_VARS)
1160c1bc742181ded4930842b46e9507372f0b1b963James Dong
1170c1bc742181ded4930842b46e9507372f0b1b963James DongLOCAL_SRC_FILES := ./source/DecTestBench.c
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong
1190c1bc742181ded4930842b46e9507372f0b1b963James DongLOCAL_C_INCLUDES := $(LOCAL_PATH)/inc
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong
1210c1bc742181ded4930842b46e9507372f0b1b963James DongLOCAL_SHARED_LIBRARIES := libstagefright_soft_h264dec
1220c1bc742181ded4930842b46e9507372f0b1b963James Dong
1230e6858d6aea12fc585a8c7d217c1271878655081Dan MorrillLOCAL_MODULE_TAGS := optional
1240c1bc742181ded4930842b46e9507372f0b1b963James Dong
1250c1bc742181ded4930842b46e9507372f0b1b963James DongLOCAL_MODULE := decoder
1260c1bc742181ded4930842b46e9507372f0b1b963James Dong
1270c1bc742181ded4930842b46e9507372f0b1b963James Donginclude $(BUILD_EXECUTABLE)
128