You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ac...@apache.org on 2024/07/17 15:06:59 UTC

(nuttx-apps) 04/07: openh264: add CMakeLists.txt

This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git

commit 639da1a1d6c7aff76104a6f65c2efd321cbb7350
Author: shizhenghui <sh...@xiaomi.com>
AuthorDate: Wed Jul 3 17:15:31 2024 +0800

    openh264: add CMakeLists.txt
    
    Signed-off-by: shizhenghui <sh...@xiaomi.com>
    Signed-off-by: xuxin19 <xu...@xiaomi.com>
---
 videoutils/openh264/CMakeLists.txt | 160 +++++++++++++++++++++++++++++++++++++
 1 file changed, 160 insertions(+)

diff --git a/videoutils/openh264/CMakeLists.txt b/videoutils/openh264/CMakeLists.txt
new file mode 100644
index 000000000..6c70545c6
--- /dev/null
+++ b/videoutils/openh264/CMakeLists.txt
@@ -0,0 +1,160 @@
+# ##############################################################################
+# apps/videoutils/openh264/CMakeLists.txt
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more contributor
+# license agreements.  See the NOTICE file distributed with this work for
+# additional information regarding copyright ownership.  The ASF licenses this
+# file to you under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License.  You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+# License for the specific language governing permissions and limitations under
+# the License.
+#
+# ##############################################################################
+
+if(CONFIG_VIDEOUTILS_OPENH264)
+
+  # ############################################################################
+  # Sources
+  # ############################################################################
+
+  set(SRC_PATH ${CMAKE_CURRENT_LIST_DIR}/openh264)
+  set(COMMON_SRCDIR ${SRC_PATH}/codec/common)
+  set(DECODER_SRCDIR ${SRC_PATH}/codec/decoder)
+
+  set(COMMON_CPP_SRCS
+      ${COMMON_SRCDIR}/src/common_tables.cpp
+      ${COMMON_SRCDIR}/src/copy_mb.cpp
+      ${COMMON_SRCDIR}/src/cpu.cpp
+      ${COMMON_SRCDIR}/src/crt_util_safe_x.cpp
+      ${COMMON_SRCDIR}/src/deblocking_common.cpp
+      ${COMMON_SRCDIR}/src/expand_pic.cpp
+      ${COMMON_SRCDIR}/src/intra_pred_common.cpp
+      ${COMMON_SRCDIR}/src/mc.cpp
+      ${COMMON_SRCDIR}/src/memory_align.cpp
+      ${COMMON_SRCDIR}/src/sad_common.cpp
+      ${COMMON_SRCDIR}/src/utils.cpp
+      ${COMMON_SRCDIR}/src/welsCodecTrace.cpp
+      ${COMMON_SRCDIR}/src/WelsTaskThread.cpp
+      ${COMMON_SRCDIR}/src/WelsThread.cpp
+      ${COMMON_SRCDIR}/src/WelsThreadLib.cpp
+      ${COMMON_SRCDIR}/src/WelsThreadPool.cpp)
+
+  set(COMMON_ASM_SRCS
+      ${COMMON_SRCDIR}/x86/cpuid.asm
+      ${COMMON_SRCDIR}/x86/dct.asm
+      ${COMMON_SRCDIR}/x86/deblock.asm
+      ${COMMON_SRCDIR}/x86/expand_picture.asm
+      ${COMMON_SRCDIR}/x86/intra_pred_com.asm
+      ${COMMON_SRCDIR}/x86/mb_copy.asm
+      ${COMMON_SRCDIR}/x86/mc_chroma.asm
+      ${COMMON_SRCDIR}/x86/mc_luma.asm
+      ${COMMON_SRCDIR}/x86/satd_sad.asm
+      ${COMMON_SRCDIR}/x86/vaa.asm)
+
+  set(DECODER_CPP_SRCS
+      ${DECODER_SRCDIR}/core/src/au_parser.cpp
+      ${DECODER_SRCDIR}/core/src/bit_stream.cpp
+      ${DECODER_SRCDIR}/core/src/cabac_decoder.cpp
+      ${DECODER_SRCDIR}/core/src/deblocking.cpp
+      ${DECODER_SRCDIR}/core/src/decode_mb_aux.cpp
+      ${DECODER_SRCDIR}/core/src/decode_slice.cpp
+      ${DECODER_SRCDIR}/core/src/decoder.cpp
+      ${DECODER_SRCDIR}/core/src/decoder_core.cpp
+      ${DECODER_SRCDIR}/core/src/decoder_data_tables.cpp
+      ${DECODER_SRCDIR}/core/src/error_concealment.cpp
+      ${DECODER_SRCDIR}/core/src/fmo.cpp
+      ${DECODER_SRCDIR}/core/src/get_intra_predictor.cpp
+      ${DECODER_SRCDIR}/core/src/manage_dec_ref.cpp
+      ${DECODER_SRCDIR}/core/src/memmgr_nal_unit.cpp
+      ${DECODER_SRCDIR}/core/src/mv_pred.cpp
+      ${DECODER_SRCDIR}/core/src/parse_mb_syn_cabac.cpp
+      ${DECODER_SRCDIR}/core/src/parse_mb_syn_cavlc.cpp
+      ${DECODER_SRCDIR}/core/src/pic_queue.cpp
+      ${DECODER_SRCDIR}/core/src/rec_mb.cpp
+      ${DECODER_SRCDIR}/core/src/wels_decoder_thread.cpp
+      ${DECODER_SRCDIR}/plus/src/welsDecoderExt.cpp)
+
+  set(DECODER_ASM_SRCS ${DECODER_SRCDIR}/core/x86/dct.asm
+                       ${DECODER_SRCDIR}/core/x86/intra_pred.asm)
+
+  set(CXXEXT .cpp)
+  set(CXXSRCS ${COMMON_CPP_SRCS} ${DECODER_CPP_SRCS})
+
+  # ############################################################################
+  # Include Directory
+  # ############################################################################
+
+  set(INCLUDES ${SRC_PATH}/codec/api/wels ${SRC_PATH}/codec/common/inc)
+  set(DECODER_INCLUDES ${SRC_PATH}/codec/decoder/core/inc
+                       ${SRC_PATH}/codec/decoder/plus/inc)
+  set(PROCESSING_INCLUDES
+      ${SRC_PATH}/codec/processing/interface
+      ${SRC_PATH}/codec/processing/src/common
+      ${SRC_PATH}/codec/processing/src/adaptivequantization
+      ${SRC_PATH}/codec/processing/src/downsample
+      ${SRC_PATH}/codec/processing/src/scrolldetection
+      ${SRC_PATH}/codec/processing/src/vaacalc)
+
+  set(INCDIR ${INCLUDES} ${DECODER_INCLUDES} ${PROCESSING_INCLUDES})
+  set(PUB_INCDIR ${SRC_PATH}/codec/api)
+
+  # ############################################################################
+  # Flags
+  # ############################################################################
+
+  set(CXXFLAGS -Wno-format -Wno-unused-variable -Wno-shadow)
+
+  # cmake-format: off
+  set(SYSCTLBYNAME
+    [=[
+      #ifndef HAVE_SYSCTLBYNAME
+      #define sysctlbyname(name, oldp, oldlenp, newp, newlen) (-1)
+      #endif
+    ]=])
+  # cmake-format: on
+
+  file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/def_sysctlbyname.h ${SYSCTLBYNAME})
+
+  list(APPEND CXXFLAGS
+       "SHELL:-include ${CMAKE_CURRENT_BINARY_DIR}/def_sysctlbyname.h")
+
+  # ############################################################################
+  # Library Configuration
+  # ############################################################################
+
+  nuttx_add_library(libopenh264 STATIC)
+  target_sources(libopenh264 PRIVATE ${CXXSRCS} ${NASRCS})
+  target_link_libraries(libopenh264 PRIVATE -lstdc++)
+  target_compile_options(libopenh264 PRIVATE ${CXXFLAGS})
+  target_include_directories(libopenh264 PRIVATE ${INCDIR})
+  target_include_directories(libopenh264 PUBLIC ${PUB_INCDIR})
+
+  # ############################################################################
+  # Download openh264 if no git repo found
+  # ############################################################################
+
+  if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/openh264/.git)
+    set(OPENH264_URL "https://github.com/cisco/openh264.git")
+    set(OPENH264_DIR ${CMAKE_CURRENT_SOURCE_DIR}/openh264)
+
+    execute_process(
+      COMMAND git clone ${OPENH264_URL} ${OPENH264_DIR}
+      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+      RESULT_VARIABLE GIT_CLONE_RESULT)
+
+    if(NOT ${GIT_CLONE_RESULT} EQUAL 0)
+      message(FATAL_ERROR "Failed to clone OpenH264 repository")
+    endif()
+
+    add_custom_target(distclean COMMAND ${CMAKE_COMMAND} -E remove_directory
+                                        ${OPENH264_DIR})
+  endif()
+
+endif()