From 95437d15f3ed63ab00e7bbe52db0ce1b00f337ff Mon Sep 17 00:00:00 2001 From: Brad Richardson Date: Tue, 27 Dec 2022 09:13:54 -0500 Subject: [PATCH] FFmpeg 5 and pre-built CBS (#509) --- CMakeLists.txt | 10 +- docs/source/about/advanced_usage.rst | 2 +- src/cbs.cpp | 2 +- src/config.cpp | 8 +- src_assets/common/assets/web/config.html | 2 +- third-party/cbs/CMakeLists.txt | 69 - third-party/cbs/bytestream.h | 351 ---- third-party/cbs/cbs.c | 1050 ---------- third-party/cbs/cbs_av1.c | 1323 ------------ third-party/cbs/cbs_av1_syntax_template.c | 2063 ------------------- third-party/cbs/cbs_h2645.c | 1632 --------------- third-party/cbs/cbs_h264_syntax_template.c | 1175 ----------- third-party/cbs/cbs_h265_syntax_template.c | 2038 ------------------ third-party/cbs/cbs_internal.h | 220 -- third-party/cbs/cbs_jpeg.c | 482 ----- third-party/cbs/cbs_jpeg_syntax_template.c | 189 -- third-party/cbs/cbs_mpeg2.c | 469 ----- third-party/cbs/cbs_mpeg2_syntax_template.c | 413 ---- third-party/cbs/cbs_sei.c | 355 ---- third-party/cbs/cbs_sei_syntax_template.c | 310 --- third-party/cbs/cbs_vp9.c | 675 ------ third-party/cbs/cbs_vp9_syntax_template.c | 422 ---- third-party/cbs/config.h | 27 - third-party/cbs/defs.h | 51 - third-party/cbs/get_bits.h | 831 -------- third-party/cbs/h2645_parse.c | 535 ----- third-party/cbs/h264_ps.h | 173 -- third-party/cbs/h264_sei.h | 202 -- third-party/cbs/hevc_sei.h | 142 -- third-party/cbs/include/cbs/av1.h | 171 -- third-party/cbs/include/cbs/cbs.h | 448 ---- third-party/cbs/include/cbs/cbs_av1.h | 464 ----- third-party/cbs/include/cbs/cbs_bsf.h | 131 -- third-party/cbs/include/cbs/cbs_h264.h | 406 ---- third-party/cbs/include/cbs/cbs_h2645.h | 36 - third-party/cbs/include/cbs/cbs_h265.h | 679 ------ third-party/cbs/include/cbs/cbs_jpeg.h | 123 -- third-party/cbs/include/cbs/cbs_mpeg2.h | 231 --- third-party/cbs/include/cbs/cbs_sei.h | 200 -- third-party/cbs/include/cbs/cbs_vp9.h | 213 -- third-party/cbs/include/cbs/h264.h | 113 - third-party/cbs/include/cbs/h2645_parse.h | 152 -- third-party/cbs/include/cbs/hevc.h | 160 -- third-party/cbs/include/cbs/sei.h | 140 -- third-party/cbs/include/cbs/video_levels.h | 112 - third-party/cbs/intmath.h | 152 -- third-party/cbs/mathops.h | 243 --- third-party/cbs/put_bits.h | 406 ---- third-party/cbs/video_levels.c | 349 ---- third-party/cbs/vlc.h | 140 -- third-party/ffmpeg-linux-aarch64 | 2 +- third-party/ffmpeg-linux-x86_64 | 2 +- third-party/ffmpeg-macos-aarch64 | 2 +- third-party/ffmpeg-macos-x86_64 | 2 +- third-party/ffmpeg-windows-x86_64 | 2 +- 55 files changed, 14 insertions(+), 20286 deletions(-) delete mode 100644 third-party/cbs/CMakeLists.txt delete mode 100644 third-party/cbs/bytestream.h delete mode 100644 third-party/cbs/cbs.c delete mode 100644 third-party/cbs/cbs_av1.c delete mode 100644 third-party/cbs/cbs_av1_syntax_template.c delete mode 100644 third-party/cbs/cbs_h2645.c delete mode 100644 third-party/cbs/cbs_h264_syntax_template.c delete mode 100644 third-party/cbs/cbs_h265_syntax_template.c delete mode 100644 third-party/cbs/cbs_internal.h delete mode 100644 third-party/cbs/cbs_jpeg.c delete mode 100644 third-party/cbs/cbs_jpeg_syntax_template.c delete mode 100644 third-party/cbs/cbs_mpeg2.c delete mode 100644 third-party/cbs/cbs_mpeg2_syntax_template.c delete mode 100644 third-party/cbs/cbs_sei.c delete mode 100644 third-party/cbs/cbs_sei_syntax_template.c delete mode 100644 third-party/cbs/cbs_vp9.c delete mode 100644 third-party/cbs/cbs_vp9_syntax_template.c delete mode 100644 third-party/cbs/config.h delete mode 100644 third-party/cbs/defs.h delete mode 100644 third-party/cbs/get_bits.h delete mode 100644 third-party/cbs/h2645_parse.c delete mode 100644 third-party/cbs/h264_ps.h delete mode 100644 third-party/cbs/h264_sei.h delete mode 100644 third-party/cbs/hevc_sei.h delete mode 100644 third-party/cbs/include/cbs/av1.h delete mode 100644 third-party/cbs/include/cbs/cbs.h delete mode 100644 third-party/cbs/include/cbs/cbs_av1.h delete mode 100644 third-party/cbs/include/cbs/cbs_bsf.h delete mode 100644 third-party/cbs/include/cbs/cbs_h264.h delete mode 100644 third-party/cbs/include/cbs/cbs_h2645.h delete mode 100644 third-party/cbs/include/cbs/cbs_h265.h delete mode 100644 third-party/cbs/include/cbs/cbs_jpeg.h delete mode 100644 third-party/cbs/include/cbs/cbs_mpeg2.h delete mode 100644 third-party/cbs/include/cbs/cbs_sei.h delete mode 100644 third-party/cbs/include/cbs/cbs_vp9.h delete mode 100644 third-party/cbs/include/cbs/h264.h delete mode 100644 third-party/cbs/include/cbs/h2645_parse.h delete mode 100644 third-party/cbs/include/cbs/hevc.h delete mode 100644 third-party/cbs/include/cbs/sei.h delete mode 100644 third-party/cbs/include/cbs/video_levels.h delete mode 100644 third-party/cbs/intmath.h delete mode 100644 third-party/cbs/mathops.h delete mode 100644 third-party/cbs/put_bits.h delete mode 100644 third-party/cbs/video_levels.c delete mode 100644 third-party/cbs/vlc.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 95718bed..27c25d64 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -401,6 +401,8 @@ endif() set(FFMPEG_LIBRARIES ${FFMPEG_PREPARED_BINARIES}/lib/libavcodec.a ${FFMPEG_PREPARED_BINARIES}/lib/libavutil.a + ${FFMPEG_PREPARED_BINARIES}/lib/libcbs.a + ${FFMPEG_PREPARED_BINARIES}/lib/libSvtAv1Enc.a ${FFMPEG_PREPARED_BINARIES}/lib/libswscale.a ${FFMPEG_PREPARED_BINARIES}/lib/libx264.a ${FFMPEG_PREPARED_BINARIES}/lib/libx265.a @@ -410,15 +412,12 @@ set(FFMPEG_LIBRARIES include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/third-party - ${CMAKE_CURRENT_SOURCE_DIR}/third-party/cbs/include ${CMAKE_CURRENT_SOURCE_DIR}/third-party/moonlight-common-c/enet/include ${CMAKE_CURRENT_SOURCE_DIR}/third-party/moonlight-common-c/reedsolomon ${FFMPEG_INCLUDE_DIRS} ${PLATFORM_INCLUDE_DIRS} ) -add_subdirectory(third-party/cbs) - string(TOUPPER "x${CMAKE_BUILD_TYPE}" BUILD_TYPE) if("${BUILD_TYPE}" STREQUAL "XDEBUG") list(APPEND SUNSHINE_COMPILE_OPTIONS -O0 -ggdb3) @@ -446,13 +445,8 @@ else() endif() list(APPEND SUNSHINE_DEFINITIONS SUNSHINE_ASSETS_DIR="${SUNSHINE_ASSETS_DIR_DEF}") - -list(APPEND CBS_EXTERNAL_LIBRARIES - cbs) - list(APPEND SUNSHINE_EXTERNAL_LIBRARIES libminiupnpc-static - ${CBS_EXTERNAL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} enet opus diff --git a/docs/source/about/advanced_usage.rst b/docs/source/about/advanced_usage.rst index 2ab43a85..4f1455c3 100644 --- a/docs/source/about/advanced_usage.rst +++ b/docs/source/about/advanced_usage.rst @@ -958,7 +958,7 @@ amd_rc Value Description =========== =========== auto let ffmpeg decide - constqp constant QP mode + cqp constant QP mode cbr constant bitrate vbr_latency variable bitrate, latency constrained vbr_peak variable bitrate, peak constrained diff --git a/src/cbs.cpp b/src/cbs.cpp index d50bd195..6844d91a 100644 --- a/src/cbs.cpp +++ b/src/cbs.cpp @@ -1,7 +1,7 @@ extern "C" { #include #include -#include +#include #include #include } diff --git a/src/config.cpp b/src/config.cpp index b7f483ac..00e47681 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -103,14 +103,14 @@ enum quality_e : int { }; enum class rc_hevc_e : int { - constqp, /**< Constant QP mode */ + cqp, /**< Constant QP mode */ vbr_latency, /**< Latency Constrained Variable Bitrate */ vbr_peak, /**< Peak Constrained Variable Bitrate */ cbr, /**< Constant bitrate mode */ }; enum class rc_h264_e : int { - constqp, /**< Constant QP mode */ + cqp, /**< Constant QP mode */ cbr, /**< Constant bitrate mode */ vbr_peak, /**< Peak Constrained Variable Bitrate */ vbr_latency, /**< Latency Constrained Variable Bitrate */ @@ -135,7 +135,7 @@ std::optional quality_from_view(const std::string_view &quality) { std::optional rc_h264_from_view(const std::string_view &rc) { #define _CONVERT_(x) \ if(rc == #x##sv) return (int)rc_h264_e::x - _CONVERT_(constqp); + _CONVERT_(cqp); _CONVERT_(vbr_latency); _CONVERT_(vbr_peak); _CONVERT_(cbr); @@ -146,7 +146,7 @@ std::optional rc_h264_from_view(const std::string_view &rc) { std::optional rc_hevc_from_view(const std::string_view &rc) { #define _CONVERT_(x) \ if(rc == #x##sv) return (int)rc_hevc_e::x - _CONVERT_(constqp); + _CONVERT_(cqp); _CONVERT_(vbr_latency); _CONVERT_(vbr_peak); _CONVERT_(cbr); diff --git a/src_assets/common/assets/web/config.html b/src_assets/common/assets/web/config.html index 01954e76..95d17f0d 100644 --- a/src_assets/common/assets/web/config.html +++ b/src_assets/common/assets/web/config.html @@ -700,7 +700,7 @@