Skip to content

Commit

Permalink
WIP: cbs
Browse files Browse the repository at this point in the history
  • Loading branch information
ReenigneArcher committed Oct 28, 2024
1 parent 2f17c0a commit 6c43524
Showing 1 changed file with 91 additions and 112 deletions.
203 changes: 91 additions & 112 deletions cmake/ffmpeg/ffmpeg.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ if(BUILD_FFMPEG_ALL_PATCHES OR BUILD_FFMPEG_CBS_PATCHES)
endforeach()
endif()

set(CBS_INCLUDE_PATH ${CMAKE_CURRENT_BINARY_DIR}/include/cbs)

if(${arch} STREQUAL "aarch64" OR ${arch} STREQUAL "arm64")
set(CBS_ARCH_PATH arm)
elseif (${arch} STREQUAL "ppc64le")
Expand Down Expand Up @@ -140,116 +138,97 @@ install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/FFmpeg/lib/"
DESTINATION lib)


#
# cbs
#
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/libcbs.pc.in
${CMAKE_CURRENT_BINARY_DIR}/libcbs.pc @ONLY)

set(AVCODEC_GENERATED_SRC_PATH ${FFMPEG_GENERATED_SRC_PATH}/libavcodec)
set(AVUTIL_GENERATED_SRC_PATH ${FFMPEG_GENERATED_SRC_PATH}/libavutil)

set(EXTRA_FFMPEG_INCLUDE_FILES
${FFMPEG_GENERATED_SRC_PATH}/config.h
)

#set(FFMPEG_CBS_HEADERS
# ${AVCODEC_GENERATED_SRC_PATH}/av1.h
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_av1.h
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_bsf.h
# ${AVCODEC_GENERATED_SRC_PATH}/cbs.h
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_h2645.h
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_h264.h
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_h265.h
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_jpeg.h
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_mpeg2.h
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_sei.h
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_vp8.h
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_vp9.h
# ${AVCODEC_GENERATED_SRC_PATH}/codec_desc.h
# ${AVCODEC_GENERATED_SRC_PATH}/codec_id.h
# ${AVCODEC_GENERATED_SRC_PATH}/codec_par.h
# ${AVCODEC_GENERATED_SRC_PATH}/defs.h
# ${AVCODEC_GENERATED_SRC_PATH}/get_bits.h
# ${AVCODEC_GENERATED_SRC_PATH}/h264_levels.h
# ${AVCODEC_GENERATED_SRC_PATH}/h2645_parse.h
# ${AVCODEC_GENERATED_SRC_PATH}/h264.h
# ${AVCODEC_GENERATED_SRC_PATH}/hevc/hevc.h
# ${AVCODEC_GENERATED_SRC_PATH}/mathops.h
# ${AVCODEC_GENERATED_SRC_PATH}/packet.h
# ${AVCODEC_GENERATED_SRC_PATH}/sei.h
# ${AVCODEC_GENERATED_SRC_PATH}/version_major.h
# ${AVCODEC_GENERATED_SRC_PATH}/vlc.h
# ${FFMPEG_GENERATED_SRC_PATH}/config.h
# ${FFMPEG_GENERATED_SRC_PATH}/libavutil/attributes.h
# ${FFMPEG_GENERATED_SRC_PATH}/libavutil/attributes_internal.h
# ${FFMPEG_GENERATED_SRC_PATH}/libavutil/intmath.h
#)
#
#set(CBS_SOURCE_FILES
# ${CBS_INCLUDE_PATH}/av1.h
# ${CBS_INCLUDE_PATH}/cbs_av1.h
# ${CBS_INCLUDE_PATH}/cbs_bsf.h
# ${CBS_INCLUDE_PATH}/cbs.h
# ${CBS_INCLUDE_PATH}/cbs_h2645.h
# ${CBS_INCLUDE_PATH}/cbs_h264.h
# ${CBS_INCLUDE_PATH}/cbs_h265.h
# ${CBS_INCLUDE_PATH}/cbs_jpeg.h
# ${CBS_INCLUDE_PATH}/cbs_mpeg2.h
# ${CBS_INCLUDE_PATH}/cbs_sei.h
# ${CBS_INCLUDE_PATH}/cbs_vp8.h
# ${CBS_INCLUDE_PATH}/cbs_vp9.h
# ${CBS_INCLUDE_PATH}/codec_desc.h
# ${CBS_INCLUDE_PATH}/codec_id.h
# ${CBS_INCLUDE_PATH}/codec_par.h
# ${CBS_INCLUDE_PATH}/defs.h
# ${CBS_INCLUDE_PATH}/get_bits.h
# ${CBS_INCLUDE_PATH}/h264_levels.h
# ${CBS_INCLUDE_PATH}/h2645_parse.h
# ${CBS_INCLUDE_PATH}/h264.h
# ${CBS_INCLUDE_PATH}/hevc/hevc.h
# ${CBS_INCLUDE_PATH}/mathops.h
# ${CBS_INCLUDE_PATH}/packet.h
# ${CBS_INCLUDE_PATH}/sei.h
# ${CBS_INCLUDE_PATH}/version_major.h
# ${CBS_INCLUDE_PATH}/vlc.h
# ${CMAKE_CURRENT_BINARY_DIR}/include/libavutil/intmath.h
# ${CBS_INCLUDE_PATH}/config.h
#
# ${AVCODEC_GENERATED_SRC_PATH}/cbs.c
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_h2645.c
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_av1.c
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_vp8.c
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_vp9.c
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_mpeg2.c
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_jpeg.c
# ${AVCODEC_GENERATED_SRC_PATH}/cbs_sei.c
# ${AVCODEC_GENERATED_SRC_PATH}/h264_levels.c
# ${AVCODEC_GENERATED_SRC_PATH}/h2645_parse.c
# ${AVCODEC_GENERATED_SRC_PATH}/vp8data.c
# ${FFMPEG_GENERATED_SRC_PATH}/libavutil/intmath.c)
#
## conditional headers based on architecture
#if (EXISTS ${AVCODEC_GENERATED_SRC_PATH}/${CBS_ARCH_PATH}/mathops.h)
# configure_file(${AVCODEC_GENERATED_SRC_PATH}/${CBS_ARCH_PATH}/mathops.h
# ${CBS_INCLUDE_PATH}/${CBS_ARCH_PATH}/mathops.h COPYONLY)
# list(APPEND CBS_SOURCE_FILES ${CBS_INCLUDE_PATH}/${CBS_ARCH_PATH}/mathops.h)
#endif()
#if (EXISTS ${FFMPEG_GENERATED_SRC_PATH}/libavutil/${CBS_ARCH_PATH}/asm.h)
# configure_file(${FFMPEG_GENERATED_SRC_PATH}/libavutil/${CBS_ARCH_PATH}/asm.h
# ${CMAKE_CURRENT_BINARY_DIR}/include/libavutil/${CBS_ARCH_PATH}/asm.h COPYONLY)
# list(APPEND CBS_SOURCE_FILES ${CMAKE_CURRENT_BINARY_DIR}/include/libavutil/${CBS_ARCH_PATH}/asm.h)
#endif()
#if (EXISTS ${FFMPEG_GENERATED_SRC_PATH}/libavutil/${CBS_ARCH_PATH}/intmath.h)
# configure_file(${FFMPEG_GENERATED_SRC_PATH}/libavutil/${CBS_ARCH_PATH}/intmath.h
# ${CMAKE_CURRENT_BINARY_DIR}/include/libavutil/${CBS_ARCH_PATH}/intmath.h COPYONLY)
# list(APPEND CBS_SOURCE_FILES ${CMAKE_CURRENT_BINARY_DIR}/include/libavutil/${CBS_ARCH_PATH}/intmath.h)
#endif()
#
#include_directories(
# ${CMAKE_CURRENT_BINARY_DIR}/include
# ${FFMPEG_GENERATED_SRC_PATH})
#
#add_library(cbs ${CBS_SOURCE_FILES})
#target_compile_options(cbs PRIVATE -Wall -Wno-incompatible-pointer-types -Wno-format -Wno-format-extra-args)
#add_dependencies(cbs cbs_configure)
#add_dependencies(${CMAKE_PROJECT_NAME} cbs)
#
#install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include
# DESTINATION ${CMAKE_INSTALL_PREFIX})
#install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libcbs.a
# DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
#configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/libcbs.pc.in
# ${CMAKE_CURRENT_BINARY_DIR}/libcbs.pc @ONLY)
#install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libcbs.pc
# DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
set(EXTRA_AVCODEC_INCLUDE_FILES
${AVCODEC_GENERATED_SRC_PATH}/av1.h
${AVCODEC_GENERATED_SRC_PATH}/cbs_av1.h
${AVCODEC_GENERATED_SRC_PATH}/cbs_bsf.h
${AVCODEC_GENERATED_SRC_PATH}/cbs.h
${AVCODEC_GENERATED_SRC_PATH}/cbs_h2645.h
${AVCODEC_GENERATED_SRC_PATH}/cbs_h264.h
${AVCODEC_GENERATED_SRC_PATH}/cbs_h265.h
${AVCODEC_GENERATED_SRC_PATH}/cbs_jpeg.h
${AVCODEC_GENERATED_SRC_PATH}/cbs_mpeg2.h
${AVCODEC_GENERATED_SRC_PATH}/cbs_sei.h
${AVCODEC_GENERATED_SRC_PATH}/cbs_vp8.h
${AVCODEC_GENERATED_SRC_PATH}/cbs_vp9.h
${AVCODEC_GENERATED_SRC_PATH}/codec_desc.h
${AVCODEC_GENERATED_SRC_PATH}/codec_id.h
${AVCODEC_GENERATED_SRC_PATH}/codec_par.h
${AVCODEC_GENERATED_SRC_PATH}/defs.h
${AVCODEC_GENERATED_SRC_PATH}/get_bits.h
${AVCODEC_GENERATED_SRC_PATH}/h264_levels.h
${AVCODEC_GENERATED_SRC_PATH}/h2645_parse.h
${AVCODEC_GENERATED_SRC_PATH}/h264.h
${AVCODEC_GENERATED_SRC_PATH}/hevc/hevc.h
${AVCODEC_GENERATED_SRC_PATH}/mathops.h
${AVCODEC_GENERATED_SRC_PATH}/packet.h
${AVCODEC_GENERATED_SRC_PATH}/sei.h
${AVCODEC_GENERATED_SRC_PATH}/version_major.h
${AVCODEC_GENERATED_SRC_PATH}/vlc.h
)
set(EXTRA_AVUTIL_INCLUDE_FILES
${AVUTIL_GENERATED_SRC_PATH}/attributes.h
${AVUTIL_GENERATED_SRC_PATH}/attributes_internal.h
${AVUTIL_GENERATED_SRC_PATH}/intmath.h
)

set(CBS_SOURCE_FILES
${AVCODEC_GENERATED_SRC_PATH}/cbs.c
${AVCODEC_GENERATED_SRC_PATH}/cbs_h2645.c
${AVCODEC_GENERATED_SRC_PATH}/cbs_av1.c
${AVCODEC_GENERATED_SRC_PATH}/cbs_vp8.c
${AVCODEC_GENERATED_SRC_PATH}/cbs_vp9.c
${AVCODEC_GENERATED_SRC_PATH}/cbs_mpeg2.c
${AVCODEC_GENERATED_SRC_PATH}/cbs_jpeg.c
${AVCODEC_GENERATED_SRC_PATH}/cbs_sei.c
${AVCODEC_GENERATED_SRC_PATH}/h264_levels.c
${AVCODEC_GENERATED_SRC_PATH}/h2645_parse.c
${AVCODEC_GENERATED_SRC_PATH}/vp8data.c
${AVUTIL_GENERATED_SRC_PATH}/intmath.c
)

# conditional headers based on architecture
if (EXISTS ${AVCODEC_GENERATED_SRC_PATH}/${CBS_ARCH_PATH}/mathops.h)
list(APPEND CBS_HEADER_FILES ${AVCODEC_GENERATED_SRC_PATH}/${CBS_ARCH_PATH}/mathops.h)
endif()
if (EXISTS ${AVUTIL_GENERATED_SRC_PATH}/${CBS_ARCH_PATH}/asm.h)
list(APPEND CBS_HEADER_FILES ${AVUTIL_GENERATED_SRC_PATH}/${CBS_ARCH_PATH}/asm.h)
endif()
if (EXISTS ${AVUTIL_GENERATED_SRC_PATH}/${CBS_ARCH_PATH}/intmath.h)
list(APPEND CBS_HEADER_FILES ${AVUTIL_GENERATED_SRC_PATH}/${CBS_ARCH_PATH}/intmath.h)
endif()

add_library(cbs STATIC ${CBS_SOURCE_FILES})
target_include_directories(cbs PRIVATE
${FFMPEG_GENERATED_SRC_PATH}
)
target_compile_options(cbs PRIVATE -Wall -Wno-incompatible-pointer-types -Wno-format -Wno-format-extra-args)
add_dependencies(cbs ffmpeg)
add_dependencies(${CMAKE_PROJECT_NAME} cbs)

# install cbs target headers
install(FILES ${EXTRA_FFMPEG_INCLUDE_FILES}
DESTINATION include)
install(FILES ${EXTRA_AVCODEC_INCLUDE_FILES}
DESTINATION include/libavcodec)
install(FILES ${EXTRA_AVUTIL_INCLUDE_FILES}
DESTINATION include/libavutil)
install(TARGETS cbs
DESTINATION lib)

# install pkg-config file
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libcbs.pc
DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)

0 comments on commit 6c43524

Please sign in to comment.