From 2d70a1bcb6a5ba601525b08a38e7610f018fe106 Mon Sep 17 00:00:00 2001 From: MackBambu Date: Sat, 28 Sep 2024 02:00:31 +0800 Subject: [PATCH] NEW:add ffmepg build Cmake buildLinuxImage add ffmpeg so file jira:nojira Change-Id: I3e1be53aa58a179b8d9ae048ed7538de3ae8d111 --- CMakeLists.txt | 34 +++++++------- deps/CMakeLists.txt | 7 +++ deps/FFMPEG/FFMPEG.cmake | 60 +++++++++++++++++++++++++ linux.d/debian | 3 ++ src/platform/unix/BuildLinuxImage.sh.in | 1 + src/slic3r/GUI/AVVideoDecoder.hpp | 2 +- src/slic3r/GUI/wxMediaCtrl3.h | 2 +- 7 files changed, 89 insertions(+), 20 deletions(-) create mode 100644 deps/FFMPEG/FFMPEG.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 3ff9cde57..cdc48b39c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -622,11 +622,10 @@ function(bambustudio_copy_dlls target config postfix output_dlls) ${CMAKE_PREFIX_PATH}/bin/occt/TKXDESTEP.dll ${CMAKE_PREFIX_PATH}/bin/occt/TKXSBase.dll ${CMAKE_PREFIX_PATH}/bin/freetype.dll - ${CMAKE_PREFIX_PATH}/bin/avcodec-59.dll - ${CMAKE_PREFIX_PATH}/bin/swresample-4.dll - ${CMAKE_PREFIX_PATH}/bin/swscale-6.dll - ${CMAKE_PREFIX_PATH}/bin/avutil-57.dll - ${CMAKE_PREFIX_PATH}/bin/libwinpthread-1.dll + ${CMAKE_PREFIX_PATH}/bin/avcodec-61.dll + ${CMAKE_PREFIX_PATH}/bin/swresample-5.dll + ${CMAKE_PREFIX_PATH}/bin/swscale-8.dll + ${CMAKE_PREFIX_PATH}/bin/avutil-59.dll DESTINATION ${_out_dir}) set(${output_dlls} @@ -662,11 +661,10 @@ function(bambustudio_copy_dlls target config postfix output_dlls) ${_out_dir}/TKXSBase.dll ${_out_dir}/freetype.dll - ${_out_dir}/avcodec-59.dll - ${_out_dir}/swresample-4.dll - ${_out_dir}/swscale-6.dll - ${_out_dir}/avutil-57.dll - ${_out_dir}/libwinpthread-1.dll + ${_out_dir}/avcodec-61.dll + ${_out_dir}/swresample-5.dll + ${_out_dir}/swscale-8.dll + ${_out_dir}/avutil-59.dll PARENT_SCOPE ) @@ -679,31 +677,31 @@ function(bambustudio_copy_sos target config postfix output_sos) file(COPY ${CMAKE_PREFIX_PATH}/lib/libavcodec.so ${CMAKE_PREFIX_PATH}/lib/libavcodec.so.61 - ${CMAKE_PREFIX_PATH}/lib/libavcodec.so.61.10.100 + ${CMAKE_PREFIX_PATH}/lib/libavcodec.so.61.3.100 ${CMAKE_PREFIX_PATH}/lib/libavutil.so ${CMAKE_PREFIX_PATH}/lib/libavutil.so.59 - ${CMAKE_PREFIX_PATH}/lib/libavutil.so.59.28.100 + ${CMAKE_PREFIX_PATH}/lib/libavutil.so.59.8.100 ${CMAKE_PREFIX_PATH}/lib/libswscale.so ${CMAKE_PREFIX_PATH}/lib/libswscale.so.8 - ${CMAKE_PREFIX_PATH}/lib/libswscale.so.8.2.100 + ${CMAKE_PREFIX_PATH}/lib/libswscale.so.8.1.100 ${CMAKE_PREFIX_PATH}/lib/libswresample.so ${CMAKE_PREFIX_PATH}/lib/libswresample.so.5 - ${CMAKE_PREFIX_PATH}/lib/libswresample.so.5.2.100 + ${CMAKE_PREFIX_PATH}/lib/libswresample.so.5.1.100 DESTINATION ${_out_dir}) set(${output_dlls} ${_out_dir}/libavcodec.so ${_out_dir}/libavcodec.so.61 - ${_out_dir}/libavcodec.so.61.10.100 + ${_out_dir}/libavcodec.so.61.3.100 ${_out_dir}/libavutil.so ${_out_dir}/libavutil.so.59 - ${_out_dir}/libavutil.so.59.28.100 + ${_out_dir}/libavutil.so.59.8.100 ${_out_dir}/libswscale.so ${_out_dir}/libswscale.so.8 - ${_out_dir}/libswscale.so.8.2.100 + ${_out_dir}/libswscale.so.8.1.100 ${_out_dir}/libswresample.so ${_out_dir}/libswresample.so.5 - ${_out_dir}/libswresample.so.5.2.100 + ${_out_dir}/libswresample.so.5.1.100 PARENT_SCOPE ) endfunction() diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 09f70b7fc..6f94e7acf 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -39,6 +39,7 @@ option(DEP_BUILD_OPENSSL "Compile openssl" ON) option(DEP_BUILD_GLFW "Compile GLFW" ON) option(DEP_BUILD_FREETYPE "Compile freetype" ON) option(DEP_BUILD_WXWIDGETS "Compile wxWidgets" ON) +option(DEP_BUILD_FFMPEG "Compile ffmpeg" ON) set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory") set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH "Path for downloaded source packages.") @@ -229,6 +230,11 @@ if (DEP_BUILD_FREETYPE) endif () include(OCCT/OCCT.cmake) include(OpenCV/OpenCV.cmake) +set(FFMPEG_PKG "") +if (DEP_BUILD_FFMPEG) + include(FFMPEG/FFMPEG.cmake) + set(FFMPEG_PKG dep_FFMPEG) +endif () set(_dep_list ${BOOST_PKG} @@ -247,6 +253,7 @@ set(_dep_list ${ZLIB_PKG} ${EXPAT_PKG} ${FREETYPE_PKG} + ${FFMPEG_PKG} ) if (MSVC) diff --git a/deps/FFMPEG/FFMPEG.cmake b/deps/FFMPEG/FFMPEG.cmake new file mode 100644 index 000000000..1b169da72 --- /dev/null +++ b/deps/FFMPEG/FFMPEG.cmake @@ -0,0 +1,60 @@ +set(_conf_cmd ./configure) + +if (MSVC) + set(_dstdir ${DESTDIR}/usr/local) + set(_source_dir "${CMAKE_BINARY_DIR}/dep_FFMPEG-prefix/src/dep_FFMPEG") + ExternalProject_Add(dep_FFMPEG + URL https://github.com/bambulab/ffmpeg_prebuilts/releases/download/7.0.2/7.0.2_msvc.zip + URL_HASH SHA256=DF44AE6B97CE84C720695AE7F151B4A9654915D1841C68F10D62A1189E0E7181 + DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/FFMPEG + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND + # COMMAND ${CMAKE_COMMAND} -E make_directory "${_dstdir}/bin" + # COMMAND ${CMAKE_COMMAND} -E make_directory "${_dstdir}/lib" + # COMMAND ${CMAKE_COMMAND} -E make_directory "${_dstdir}/include" + COMMAND ${CMAKE_COMMAND} -E copy_directory "${_source_dir}/bin" "${_dstdir}/bin" + COMMAND ${CMAKE_COMMAND} -E copy_directory "${_source_dir}/lib" "${_dstdir}/lib" + COMMAND ${CMAKE_COMMAND} -E copy_directory "${_source_dir}/include" "${_dstdir}/include" + ) + +else () + set(_extra_cmd "--pkg-config-flags=\"--static\"") + string(APPEND _extra_cmd "--extra-cflags=\"-I ${DESTDIR}/usr/local/include\"") + string(APPEND _extra_cmd "--extra-ldflags=\"-I ${DESTDIR}/usr/local/lib\"") + string(APPEND _extra_cmd "--extra-libs=\"-lpthread -lm\"") + string(APPEND _extra_cmd "--ld=\"g++\"") + string(APPEND _extra_cmd "--bindir=\"${DESTDIR}/usr/local/bin\"") + string(APPEND _extra_cmd "--enable-gpl") + string(APPEND _extra_cmd "--enable-nonfree") + + + ExternalProject_Add(dep_FFMPEG + URL https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n7.0.2.tar.gz + URL_HASH SHA256=5EB46D18D664A0CCADF7B0ADEE03BD3B7FA72893D667F36C69E202A807E6D533 + DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/FFMPEG + CONFIGURE_COMMAND ${_conf_cmd} + "--prefix=${DESTDIR}/usr/local" + "--enable-shared" + "--disable-doc" + "--enable-small" + "--disable-outdevs" + "--disable-filters" + "--enable-filter=*null*,afade,*fifo,*format,*resample,aeval,allrgb,allyuv,atempo,pan,*bars,color,*key,crop,draw*,eq*,framerate,*_qsv,*_vaapi,*v4l2*,hw*,scale,volume,test*" + "--disable-protocols" + "--enable-protocol=file,fd,pipe,rtp,udp" + "--disable-muxers" + "--enable-muxer=rtp" + "--disable-encoders" + "--disable-decoders" + "--enable-decoder=*aac*,h264*,mp3*,mjpeg,rv*" + "--disable-demuxers" + "--enable-demuxer=h264,mp3,mov" + "--disable-zlib" + "--disable-avdevice" + BUILD_IN_SOURCE ON + BUILD_COMMAND make -j + INSTALL_COMMAND make install + ) + +endif() \ No newline at end of file diff --git a/linux.d/debian b/linux.d/debian index b519d2e7f..a36697186 100644 --- a/linux.d/debian +++ b/linux.d/debian @@ -27,6 +27,9 @@ REQUIRED_DEV_PACKAGES=( libunwind-dev libfuse2 texinfo + nasm + yasm + libx264-dev ) if [[ -n "$UPDATE_LIB" ]] diff --git a/src/platform/unix/BuildLinuxImage.sh.in b/src/platform/unix/BuildLinuxImage.sh.in index d23384e50..e29988d9d 100644 --- a/src/platform/unix/BuildLinuxImage.sh.in +++ b/src/platform/unix/BuildLinuxImage.sh.in @@ -30,6 +30,7 @@ echo -n "[9/9] Generating Linux app..." # copy Resources cp -Rf ../resources package/resources cp -f src/@SLIC3R_APP_CMD@ package/bin/@SLIC3R_APP_CMD@ + cp -f src/*.so* package/bin/ # remove unneeded po from resources ## find package/resources/localization -name "*.po" -type f -delete ## FIXME: DD - do we need this? diff --git a/src/slic3r/GUI/AVVideoDecoder.hpp b/src/slic3r/GUI/AVVideoDecoder.hpp index a32241a62..99a7349e5 100644 --- a/src/slic3r/GUI/AVVideoDecoder.hpp +++ b/src/slic3r/GUI/AVVideoDecoder.hpp @@ -1,7 +1,7 @@ #ifndef AVVIDEODECODER_HPP #define AVVIDEODECODER_HPP -#include "BambuTunnel.h" +#include "Printer/BambuTunnel.h" extern "C" { #include diff --git a/src/slic3r/GUI/wxMediaCtrl3.h b/src/slic3r/GUI/wxMediaCtrl3.h index 108c039f4..73224bc38 100644 --- a/src/slic3r/GUI/wxMediaCtrl3.h +++ b/src/slic3r/GUI/wxMediaCtrl3.h @@ -23,7 +23,7 @@ void wxMediaCtrl_OnSize(wxWindow * ctrl, wxSize const & videoSize, int width, in #else #define BAMBU_DYNAMIC -#include +#include "Printer/BambuTunnel.h" class AVVideoDecoder;