# https://www.spec.org/cpu2017/Docs/benchmarks/525.x264_r.html
include(../../SpecCPU2017.cmake)
if (NOT TEST_SUITE_SPEC2017_ROOT)
  return ()
endif ()

speccpu2017_benchmark(RATE)

speccpu2017_add_include_dirs(
  x264_src
  x264_src/extras
  x264_src/common
)
link_libraries(-lm)

## test ########################################################################

speccpu2017_run_test(
  --dumpyuv 50 --frames 156 -o BuckBunny_New.264 BuckBunny.yuv 1280x720
  RUN_TYPE test
)

foreach (_frame IN ITEMS 50 100 155)
  speccpu2017_validate_image(frame_${_frame}.yuv
    frame_${_frame}.org.tga imagevalidate_frame_${_frame}.out
    -avg -threshold 0.5 -maxthreshold 20
    RUN_TYPE test
  )
endforeach()

## train #######################################################################

speccpu2017_run_test(
  --dumpyuv 50 --frames 142 -o BuckBunny_New.264 BuckBunny.yuv 1280x720
  RUN_TYPE train
)

foreach (_frame IN ITEMS 50 100 141)
  speccpu2017_validate_image(frame_${_frame}.yuv
    frame_${_frame}.org.tga imagevalidate_frame_${_frame}.out
    -avg -threshold 0.5 -maxthreshold 20
    RUN_TYPE train
  )
endforeach ()

## ref #########################################################################

speccpu2017_run_test(
  --pass 1 --stats x264_stats.log --bitrate 1000 --frames 1000
  -o BuckBunny_New.264 BuckBunny.yuv 1280x720
  RUN_TYPE ref
)

speccpu2017_run_test(
  --pass 2 --stats x264_stats.log --bitrate 1000 --dumpyuv 200 --frames 1000
  -o BuckBunny_New.264 BuckBunny.yuv 1280x720
  RUN_TYPE ref
)

speccpu2017_run_test(
  --seek 500 --dumpyuv 200 --frames 1250
  -o BuckBunny_New.264 BuckBunny.yuv 1280x720
  RUN_TYPE ref
)

foreach (_frame IN ITEMS 200 400 600 700 800 900 999 1100 1249)
  speccpu2017_validate_image(frame_${_frame}.yuv
    frame_${_frame}.org.tga imagevalidate_frame_${_frame}.out
    -avg -threshold 0.5 -maxthreshold 20
    RUN_TYPE ref
  )
endforeach ()

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

speccpu2017_verify_output(RELATIVE_TOLERANCE 0.085)
speccpu2017_add_executable(
  x264_src/common/mc.c
  x264_src/common/predict.c
  x264_src/common/pixel.c
  x264_src/common/macroblock.c
  x264_src/common/frame.c
  x264_src/common/dct.c
  x264_src/common/cpu.c
  x264_src/common/cabac.c
  x264_src/common/common.c
  x264_src/common/mdate.c
  x264_src/common/rectangle.c
  x264_src/common/set.c
  x264_src/common/quant.c
  x264_src/common/deblock.c
  x264_src/common/vlc.c
  x264_src/common/mvpred.c
  x264_src/encoder/analyse.c
  x264_src/encoder/me.c
  x264_src/encoder/ratecontrol.c
  x264_src/encoder/set.c
  x264_src/encoder/macroblock.c
  x264_src/encoder/cabac.c
  x264_src/encoder/cavlc.c
  x264_src/encoder/encoder.c
  x264_src/encoder/lookahead.c
  x264_src/input/timecode.c
  x264_src/input/yuv.c
  x264_src/input/y4m.c
  x264_src/output/raw.c
  x264_src/output/matroska.c
  x264_src/output/matroska_ebml.c
  x264_src/output/flv.c
  x264_src/output/flv_bytestream.c
  x264_src/input/thread.c
  x264_src/x264.c
  x264_src/extras/getopt.c
)

set(ldecod_SourceNames
  ldecod_src/nal.c
  ldecod_src/mbuffer_mvc.c
  ldecod_src/image.c
  ldecod_src/mb_access.c
  ldecod_src/memalloc.c
  ldecod_src/mc_prediction.c
  ldecod_src/mb_prediction.c
  ldecod_src/intra4x4_pred_mbaff.c
  ldecod_src/loop_filter_mbaff.c
  ldecod_src/context_ini.c
  ldecod_src/configfile.c
  ldecod_src/cabac.c
  ldecod_src/sei.c
  ldecod_src/leaky_bucket.c
  ldecod_src/filehandle.c
  ldecod_src/errorconcealment.c
  ldecod_src/decoder_test.c
  ldecod_src/img_process.c
  ldecod_src/mv_prediction.c
  ldecod_src/fmo.c
  ldecod_src/output.c
  ldecod_src/mc_direct.c
  ldecod_src/rtp.c
  ldecod_src/nalucommon.c
  ldecod_src/config_common.c
  ldecod_src/intra_chroma_pred.c
  ldecod_src/transform8x8.c
  ldecod_src/blk_prediction.c
  ldecod_src/intra8x8_pred_mbaff.c
  ldecod_src/erc_do_i.c
  ldecod_src/io_tiff.c
  ldecod_src/mbuffer.c
  ldecod_src/block.c
  ldecod_src/intra4x4_pred.c
  ldecod_src/transform.c
  ldecod_src/annexb.c
  ldecod_src/ldecod.c
  ldecod_src/macroblock.c
  ldecod_src/vlc.c
  ldecod_src/parset.c
  ldecod_src/loop_filter_normal.c
  ldecod_src/parsetcommon.c
  ldecod_src/erc_do_p.c
  ldecod_src/loopFilter.c
  ldecod_src/intra16x16_pred_mbaff.c
  ldecod_src/intra4x4_pred_normal.c
  ldecod_src/intra16x16_pred_normal.c
  ldecod_src/win32.c
  ldecod_src/intra16x16_pred.c
  ldecod_src/intra8x8_pred_normal.c
  ldecod_src/io_raw.c
  ldecod_src/img_io.c
  ldecod_src/nalu.c
  ldecod_src/quant.c
  ldecod_src/intra8x8_pred.c
  ldecod_src/erc_api.c
  ldecod_src/header.c
  ldecod_src/biaridecod.c
  ldecod_src/input.c
)
speccpu2017_prepare_rundir()
set(ldecod_Sources)
foreach (_file IN LISTS ldecod_SourceNames)
  list(APPEND ldecod_Sources "${SRC_DIR}/${_file}")
endforeach ()
llvm_add_host_executable(ldecod_${SUFFIX}-host
  ldecod_${SUFFIX} ${ldecod_Sources}
  CPPFLAGS -I "${SRC_DIR}/ldecod_src/inc" -DSPEC -fcommon
  LDFLAGS -lm
)


# Prepare BuckBunny.yuv used for x264 as input.
foreach (_run_type IN LISTS TEST_SUITE_RUN_TYPE)
  add_custom_command(
    OUTPUT "${RUN_${_run_type}_DIR}/BuckBunny.yuv"
    DEPENDS "${INPUT_${_run_type}_DIR}/BuckBunny.264"
            "${CMAKE_CURRENT_BINARY_DIR}/ldecod_${SUFFIX}"
    COMMAND "${CMAKE_CURRENT_BINARY_DIR}/ldecod_${SUFFIX}"
	        -i "${INPUT_${_run_type}_DIR}/BuckBunny.264" -o BuckBunny.yuv
			> inputgen_ldecod_x264.out
    WORKING_DIRECTORY "${RUN_${_run_type}_DIR}"
    COMMENT "Decoding ${_run_type}/input/BuckBunny.264"
    VERBATIM
  )
  add_custom_target(BuckBunny_yuv_${_run_type}_${SUFFIX}
    DEPENDS "${RUN_${_run_type}_DIR}/BuckBunny.yuv"
  )
  add_dependencies(${PROG} BuckBunny_yuv_${_run_type}_${SUFFIX})
endforeach ()
