# Video samples - independent build
cmake_minimum_required(VERSION 3.15)
project(video_samples CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

if(WIN32)
    # Source files are UTF-8; avoid C4819 on systems whose active code page
    # (e.g. 936/GBK) cannot represent non-ASCII bytes.
    add_compile_options(/utf-8)
endif()

# Check SDK environment
if(NOT DEFINED ENV{DLICC_PATH})
    message(FATAL_ERROR "Please source sdk/env.sh first")
endif()
get_filename_component(SDK_PATH "$ENV{DLICC_PATH}/.." ABSOLUTE)

# Include paths
include_directories(${SDK_PATH}/include)
include_directories(${SDK_PATH}/include/dldt)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../common)
link_directories(${SDK_PATH}/lib)

# Custom FFmpeg location (Windows custom build). Pass -DFFMPEG_ROOT=...,
# the same variable the top-level CMakeLists uses. No-op on Linux/apt
# (headers in /usr/include are found automatically).
if(DEFINED FFMPEG_ROOT AND NOT FFMPEG_ROOT STREQUAL "")
    include_directories(${FFMPEG_ROOT}/include)
    link_directories(${FFMPEG_ROOT}/lib)
endif()

find_package(Threads REQUIRED)

set(FFMPEG_LIBS avformat avcodec swscale swresample avutil)

if(WIN32)
    set(PLATFORM_LIBS "")
else()
    set(PLATFORM_LIBS dl)
endif()

set(SDK_CORE_LIBS curt dljpeg dlvid dlnne)
set(COMMON ${CMAKE_CURRENT_SOURCE_DIR}/../common)

# Video decode multi-stream sample
add_executable(video_decode_multi_stream
    video_decode_multi_stream.cc
    ${COMMON}/image_util.cc
    ${COMMON}/image_util_cuda.cc
)
target_link_libraries(video_decode_multi_stream PRIVATE dldt_video ${SDK_CORE_LIBS}
    ${FFMPEG_LIBS} Threads::Threads ${PLATFORM_LIBS})

# Video transcode multi-stream sample
add_executable(video_transcode_multi_stream video_transcode_multi_stream.cc)
target_link_libraries(video_transcode_multi_stream PRIVATE dldt_video ${SDK_CORE_LIBS}
    ${FFMPEG_LIBS} Threads::Threads ${PLATFORM_LIBS})

# Video encode multi-stream sample
add_executable(video_encode_multi_stream video_encode_multi_stream.cc)
target_link_libraries(video_encode_multi_stream PRIVATE dldt_video ${SDK_CORE_LIBS}
    ${FFMPEG_LIBS} Threads::Threads ${PLATFORM_LIBS})
