Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions conanfile.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ jsoncons/1.5.0
zstd/1.5.5
date/3.0.4
libarchive/3.7.4
libjpeg-turbo/3.1.0
libpng/1.6.47

[options]
arrow/*:parquet=True
Expand Down
12 changes: 6 additions & 6 deletions pj_media/demos/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
find_package(mcap REQUIRED)
find_package(libjpeg-turbo REQUIRED)
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(TURBOJPEG IMPORTED_TARGET libturbojpeg)
pkg_check_modules(LIBAVCODEC IMPORTED_TARGET libavcodec)
pkg_check_modules(LIBAVFORMAT IMPORTED_TARGET libavformat)
pkg_check_modules(LIBAVUTIL IMPORTED_TARGET libavutil)
Expand All @@ -12,7 +12,7 @@ add_executable(extract_frame extract_frame.cpp)
target_compile_features(extract_frame PRIVATE cxx_std_20)
target_compile_options(extract_frame PRIVATE ${PJ_WARNING_FLAGS})
target_link_libraries(extract_frame PRIVATE
pj_media_core pj_datastore mcap::mcap PkgConfig::TURBOJPEG
pj_media_core pj_datastore mcap::mcap libjpeg-turbo::libjpeg-turbo
)

# --- Qt demo: MCAP image viewer with ObjectStore pipeline ---
Expand All @@ -24,22 +24,22 @@ if(TARGET pj_media_qt)
target_compile_options(mcap_image_viewer PRIVATE ${PJ_WARNING_FLAGS})
target_compile_definitions(mcap_image_viewer PRIVATE PJ_HAS_RHI_WIDGET)
target_link_libraries(mcap_image_viewer PRIVATE
pj_media_qt pj_media_core pj_datastore mcap::mcap PkgConfig::TURBOJPEG
pj_media_qt pj_media_core pj_datastore mcap::mcap libjpeg-turbo::libjpeg-turbo
)
# --- Qt demo: multi-channel viewer (color + depth side by side) ---
add_executable(multi_channel_viewer multi_channel_viewer.cpp)
target_compile_features(multi_channel_viewer PRIVATE cxx_std_20)
target_compile_options(multi_channel_viewer PRIVATE ${PJ_WARNING_FLAGS})
target_link_libraries(multi_channel_viewer PRIVATE
pj_media_qt pj_media_core pj_datastore mcap::mcap PkgConfig::TURBOJPEG
pj_media_qt pj_media_core pj_datastore mcap::mcap libjpeg-turbo::libjpeg-turbo
)

# --- Qt demo: simulated live stream (M13) ---
add_executable(simulated_stream simulated_stream.cpp)
target_compile_features(simulated_stream PRIVATE cxx_std_20)
target_compile_options(simulated_stream PRIVATE ${PJ_WARNING_FLAGS})
target_link_libraries(simulated_stream PRIVATE
pj_media_qt pj_media_core pj_datastore PkgConfig::TURBOJPEG
pj_media_qt pj_media_core pj_datastore libjpeg-turbo::libjpeg-turbo
)

# --- Qt demo: video stream (M18 — FFmpeg decode via ObjectStore) ---
Expand Down Expand Up @@ -67,7 +67,7 @@ elseif(PJ_BUILD_DIALOG_ENGINE_QT)
target_compile_features(mcap_image_viewer PRIVATE cxx_std_20)
target_compile_options(mcap_image_viewer PRIVATE ${PJ_WARNING_FLAGS})
target_link_libraries(mcap_image_viewer PRIVATE
pj_media_core pj_datastore mcap::mcap PkgConfig::TURBOJPEG
pj_media_core pj_datastore mcap::mcap libjpeg-turbo::libjpeg-turbo
Qt6::Widgets
)
endif()
19 changes: 13 additions & 6 deletions pj_media/pj_media_core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
# pj_media_core — media decode/playback core, no Qt dependency
# ---------------------------------------------------------------------------

find_package(libjpeg-turbo REQUIRED)
find_package(PNG REQUIRED)
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(TURBOJPEG IMPORTED_TARGET libturbojpeg)
pkg_check_modules(LIBPNG IMPORTED_TARGET libpng)
pkg_check_modules(LIBAVCODEC IMPORTED_TARGET libavcodec)
pkg_check_modules(LIBAVFORMAT IMPORTED_TARGET libavformat)
pkg_check_modules(LIBAVUTIL IMPORTED_TARGET libavutil)
Expand Down Expand Up @@ -37,9 +37,16 @@ target_compile_features(pj_media_core PUBLIC cxx_std_20)
target_compile_options(pj_media_core PRIVATE
${PJ_WARNING_FLAGS} ${PJ_SANITIZER_FLAGS}
)
if(MSVC)
# libpng uses setjmp/longjmp for error handling, which MSVC warns
# about via C4611 (non-portable interaction with C++ destruction).
# The decoder paths that call setjmp here do not construct RAII
# objects in the longjmp scope, so the warning is safe to silence.
target_compile_options(pj_media_core PRIVATE /wd4611)
endif()
target_link_libraries(pj_media_core
PUBLIC pj_base pj_datastore
PRIVATE PkgConfig::TURBOJPEG PkgConfig::LIBPNG
PRIVATE libjpeg-turbo::libjpeg-turbo PNG::PNG
)

if(LIBAVCODEC_FOUND AND LIBAVFORMAT_FOUND)
Expand Down Expand Up @@ -67,7 +74,7 @@ if(PJ_BUILD_TESTS)
foreach(test_src ${PJ_MEDIA_CORE_TESTS})
get_filename_component(test_name ${test_src} NAME_WE)
add_executable(${test_name} ${test_src})
target_link_libraries(${test_name} PRIVATE pj_media_core PkgConfig::TURBOJPEG PkgConfig::LIBPNG GTest::gtest_main)
target_link_libraries(${test_name} PRIVATE pj_media_core libjpeg-turbo::libjpeg-turbo PNG::PNG GTest::gtest_main)
target_compile_options(${test_name} PRIVATE ${PJ_WARNING_FLAGS} ${PJ_SANITIZER_FLAGS})
add_test(NAME ${test_name} COMMAND ${test_name})
endforeach()
Expand All @@ -76,7 +83,7 @@ if(PJ_BUILD_TESTS)
add_executable(mcap_integration_test tests/mcap_integration_test.cpp)
target_link_libraries(mcap_integration_test PRIVATE
pj_media_core pj_datastore mcap::mcap nlohmann_json::nlohmann_json
PkgConfig::TURBOJPEG GTest::gtest_main
libjpeg-turbo::libjpeg-turbo GTest::gtest_main
)
target_compile_options(mcap_integration_test PRIVATE ${PJ_WARNING_FLAGS} ${PJ_SANITIZER_FLAGS})
add_test(NAME mcap_integration_test COMMAND mcap_integration_test
Expand Down Expand Up @@ -110,7 +117,7 @@ if(PJ_BUILD_TESTS)
target_link_libraries(thumbnail_cache_test PRIVATE
pj_media_core pj_datastore
PkgConfig::LIBAVCODEC PkgConfig::LIBAVFORMAT PkgConfig::LIBAVUTIL PkgConfig::LIBSWSCALE
PkgConfig::TURBOJPEG
libjpeg-turbo::libjpeg-turbo
GTest::gtest_main
)
target_compile_options(thumbnail_cache_test PRIVATE ${PJ_WARNING_FLAGS} ${PJ_SANITIZER_FLAGS})
Expand Down
Loading