mirror of
https://github.com/ossrs/srs.git
synced 2025-02-15 04:42:04 +00:00
1. After enabling FFmpeg opus, the transcoding time for each opus packet is around 4ms. 2. To speed up case execution, our test publisher sends 400 opus packets at intervals of 1ms. 3. After the publisher starts, wait for 30ms, then the player starts. 4. Due to the lengthy processing time for each opus packet, SRS continuously receives packets from the publisher, so it doesn't switch coroutines and can't accept the player's connection. 5. Only after all opus packets are processed will it accept the player connection. Therefore, the player doesn't receive any data, leading to the failure of the case. --------- Co-authored-by: winlin <winlinvip@gmail.com>
113 lines
3.9 KiB
CMake
Executable file
113 lines
3.9 KiB
CMake
Executable file
# Name of the project.
|
|
# Language "C" is required for find_package(Threads).
|
|
if (CMAKE_VERSION VERSION_LESS 3.0)
|
|
project(srs CXX C)
|
|
else()
|
|
cmake_policy(SET CMP0048 NEW)
|
|
project(srs VERSION 4.0.0 LANGUAGES CXX C)
|
|
endif()
|
|
cmake_minimum_required(VERSION 2.8.12)
|
|
|
|
# For utest required C++11.
|
|
set (CMAKE_CXX_STANDARD 11)
|
|
|
|
###########################################################
|
|
execute_process(
|
|
COMMAND bash -c "cd ${PROJECT_SOURCE_DIR}/../../ && pwd"
|
|
OUTPUT_VARIABLE SRS_DIR
|
|
)
|
|
string(STRIP ${SRS_DIR} SRS_DIR)
|
|
message("SRS home is ${SRS_DIR}")
|
|
|
|
###########################################################
|
|
# Start to configure SRS with jobs of number of CPUs.
|
|
include(ProcessorCount)
|
|
ProcessorCount(JOBS)
|
|
|
|
# We should always configure SRS for switching between branches.
|
|
IF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|
EXECUTE_PROCESS(
|
|
COMMAND ./configure --osx --srt=on --gb28181=on --apm=on --h265=on --utest=on --ffmpeg-opus=off --jobs=${JOBS}
|
|
WORKING_DIRECTORY ${SRS_DIR} RESULT_VARIABLE ret)
|
|
ELSE ()
|
|
EXECUTE_PROCESS(
|
|
COMMAND ./configure --srt=on --gb28181=on --apm=on --h265=on --utest=on --ffmpeg-opus=off --jobs=${JOBS}
|
|
WORKING_DIRECTORY ${SRS_DIR} RESULT_VARIABLE ret)
|
|
ENDIF ()
|
|
if(NOT ret EQUAL 0)
|
|
message(FATAL_ERROR "FAILED: ${ret}")
|
|
endif()
|
|
|
|
set(DEPS_LIBS ${SRS_DIR}/objs/st/libst.a
|
|
${SRS_DIR}/objs/openssl/lib/libssl.a
|
|
${SRS_DIR}/objs/openssl/lib/libcrypto.a
|
|
${SRS_DIR}/objs/srtp2/lib/libsrtp2.a
|
|
${SRS_DIR}/objs/ffmpeg/lib/libavcodec.a
|
|
${SRS_DIR}/objs/ffmpeg/lib/libavutil.a
|
|
${SRS_DIR}/objs/ffmpeg/lib/libswresample.a
|
|
${SRS_DIR}/objs/srt/lib/libsrt.a)
|
|
foreach(DEPS_LIB ${DEPS_LIBS})
|
|
IF (NOT EXISTS ${DEPS_LIB})
|
|
MESSAGE(FATAL_ERROR "${DEPS_LIB} not found")
|
|
ELSE ()
|
|
MESSAGE("${DEPS_LIB} is ok")
|
|
ENDIF ()
|
|
endforeach()
|
|
|
|
###########################################################
|
|
# For whole project.
|
|
INCLUDE_DIRECTORIES(${SRS_DIR}/objs
|
|
${SRS_DIR}/objs/st
|
|
${SRS_DIR}/objs/openssl/include
|
|
${SRS_DIR}/objs/srtp2/include
|
|
${SRS_DIR}/objs/ffmpeg/include
|
|
${SRS_DIR}/objs/srt/include
|
|
${SRS_DIR}/src/core
|
|
${SRS_DIR}/src/kernel
|
|
${SRS_DIR}/src/protocol
|
|
${SRS_DIR}/src/app
|
|
${SRS_DIR}/src/service)
|
|
|
|
# Common used sources for SRS and utest.
|
|
AUX_SOURCE_DIRECTORY(${SRS_DIR}/src/core SOURCE_FILES)
|
|
AUX_SOURCE_DIRECTORY(${SRS_DIR}/src/kernel SOURCE_FILES)
|
|
AUX_SOURCE_DIRECTORY(${SRS_DIR}/src/protocol SOURCE_FILES)
|
|
AUX_SOURCE_DIRECTORY(${SRS_DIR}/src/app SOURCE_FILES)
|
|
|
|
ADD_DEFINITIONS("-g -O0 -fsanitize=address -fno-omit-frame-pointer")
|
|
|
|
###########################################################
|
|
# Setup SRS project
|
|
|
|
set(SRS_SOURCE_FILES ${SOURCE_FILES})
|
|
list(APPEND SRS_SOURCE_FILES ${SRS_DIR}/src/main/srs_main_server.cpp)
|
|
|
|
ADD_EXECUTABLE(srs ${SRS_SOURCE_FILES})
|
|
TARGET_LINK_LIBRARIES(srs dl)
|
|
TARGET_LINK_LIBRARIES(srs ${DEPS_LIBS})
|
|
TARGET_LINK_LIBRARIES(srs -ldl -pthread)
|
|
TARGET_LINK_LIBRARIES(srs -rdynamic)
|
|
TARGET_LINK_LIBRARIES(srs -fsanitize=address -fno-omit-frame-pointer)
|
|
|
|
###########################################################
|
|
# For utest.
|
|
# See https://google.github.io/googletest/quickstart-cmake.html
|
|
# See https://stackoverflow.com/a/21479008/17679565
|
|
ADD_SUBDIRECTORY(${SRS_DIR}/3rdparty/gtest-fit gtest-fit)
|
|
INCLUDE_DIRECTORIES(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR})
|
|
|
|
INCLUDE_DIRECTORIES(${SRS_DIR}/src/utest)
|
|
set(UTEST_SOURCE_FILES ${SOURCE_FILES})
|
|
AUX_SOURCE_DIRECTORY(${SRS_DIR}/src/utest UTEST_SOURCE_FILES)
|
|
|
|
ADD_EXECUTABLE(utest ${UTEST_SOURCE_FILES})
|
|
TARGET_LINK_LIBRARIES(utest gtest gtest_main)
|
|
TARGET_LINK_LIBRARIES(utest dl)
|
|
TARGET_LINK_LIBRARIES(utest ${DEPS_LIBS})
|
|
TARGET_LINK_LIBRARIES(utest -ldl -pthread)
|
|
TARGET_LINK_LIBRARIES(utest -fsanitize=address -fno-omit-frame-pointer)
|
|
|
|
###########################################################
|
|
# Done
|
|
MESSAGE(STATUS "@see https://ossrs.net/lts/zh-cn/docs/v5/doc/ide")
|
|
|