From 5810a25656ed7f8201dec1627bc5357fd4d2759b Mon Sep 17 00:00:00 2001 From: "Paul E. Jones" Date: Mon, 25 Jul 2022 21:20:03 -0700 Subject: [PATCH] Changes to cmake and minor code edits --- CMakeLists.txt | 91 +------- cmake/FindPTLS.cmake | 45 ---- cmake/FindPicoquic.cmake | 36 --- cmake/FindQuicr.cmake | 33 --- cmd/CMakeLists.txt | 20 +- cmd/forty-bytes.cc | 207 ------------------ .../CMakeLists.txt | 16 +- include/netTransportQuicR.hh | 2 +- include/simple_video_assembler.hh | 2 +- lib/metrics/CMakeLists.txt | 37 ++-- lib/metrics/include/measurements.hh | 1 + lib/metrics/src/measurements.cc | 3 +- proto/CMakeLists.txt | 28 +-- src/CMakeLists.txt | 49 +++++ src/extern/CMakeLists.txt | 15 +- src/netTransportQuicR.cc | 5 +- 16 files changed, 138 insertions(+), 452 deletions(-) delete mode 100644 cmake/FindPTLS.cmake delete mode 100644 cmake/FindPicoquic.cmake delete mode 100644 cmake/FindQuicr.cmake delete mode 100644 cmd/forty-bytes.cc rename cmake/dependencies.cmake => dependencies/CMakeLists.txt (55%) diff --git a/CMakeLists.txt b/CMakeLists.txt index f9a48cd..f58d652 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,7 @@ -################################################################################ -# set include path for cmake functionality -set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) - ################################################################################ # minimum cmake version - if your CMake version is less that this, then # configuration will fail. -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.13) ################################################################################ # we have vcpkg installed as a submodule, and this will ensure that we install @@ -25,18 +21,6 @@ endif(NOT EXISTS ${CMAKE_TOOLCHAIN_FILE}) # several projects, but this is declared as the top level project. project(qmedia VERSION 0.1 LANGUAGES C CXX) -################################################################################ -# If this is a Makefile generator and the build type was not defined, then the -# project should default to a debug build. Also sets the generated -# configurations to match the build type. -if("${CMAKE_GENERATOR}" MATCHES "Makefiles" AND NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Debug) -endif() - -if("${CMAKE_GENERATOR}" MATCHES "Makefiles") - set(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE}) -endif() - ################################################################################ # Options are public build variables that will be surfaced to a CMake GUI if # you might using one. @@ -48,32 +32,21 @@ option(CLANG_TIDY "Perform linting with clang-tidy" OFF) ################################################################################ # dependencies -include(dependencies) +# # Build PIC dependencies when created extern shared library. if (BUILD_EXTERN) set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif(BUILD_EXTERN) +add_subdirectory(dependencies) + ### ### Global Config ### set_property(GLOBAL PROPERTY USE_FOLDERS ON) #set(CMAKE_OSX_ARCHITECTURES "arm64") -################################################################################ -# update the general compiler configuration -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) - -# clang & gcc -if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU") - add_compile_options(-pedantic -Wextra) -elseif(MSVC) - #add_compile_options(/W4) -endif() - if(CLANG_TIDY) find_program(CLANG_TIDY_EXE NAMES "clang-tidy") if(CLANG_TIDY_EXE) @@ -83,35 +56,10 @@ if(CLANG_TIDY) endif() endif() - - -################################################################################ -# subdirectories - if we want to build tests or anything else, we could add the -# subdirectories here. Generally, the subdirectories on this level would be -# include, contrib, src, and tests. - -include_directories( include src/extern ) - - ### ### Dependencies ### -find_package(Picoquic REQUIRED) -message(STATUS "Picoquic/include: ${Picoquic_INCLUDE_DIRS}" ) -message(STATUS "Picoquic library: ${Picoquic_LIBRARIES}" ) - -find_package(PTLS REQUIRED) -message(STATUS "picotls/include: ${PTLS_INCLUDE_DIRS}" ) -message(STATUS "picotls libraries: ${PTLS_LIBRARIES}" ) - -find_package(Quicr REQUIRED) -message(STATUS "quicr/include: ${QUICR_INCLUDE_DIRS}" ) -message(STATUS "quicr libraries: ${QUICR_LIBRARIES}" ) - -include_directories(include lib tests - ${QUICR_INCLUDE_DIRS} ${Picoquic_INCLUDE_DIRS} ${PTLS_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR}) - set(LIBRARIES media_api gsl sframe) # samplerate @@ -166,34 +114,10 @@ endif() ### ### Library Source ### -add_subdirectory(lib) +#add_subdirectory(lib) add_subdirectory(src) -### -### Library Config -### - -set(LIB_NAME "${PROJECT_NAME}") - -file(GLOB_RECURSE LIB_HEADERS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/include/*.hh") -file(GLOB_RECURSE LIB_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc") - -add_library(${LIB_NAME} ${LIB_HEADERS} ${LIB_SOURCES}) -target_link_directories(${LIB_NAME} PUBLIC ${PROJECT_LIBS_LIBRARY_DIR} ${OpenH264_LIB_DIR}) -target_link_libraries(${LIB_NAME} ${LIBRARIES} OpenSSL::Crypto openh264) -target_include_directories(${LIB_NAME} - PUBLIC - $ - ${CMAKE_CURRENT_BINARY_DIR} - ${Protobuf_INCLUDE_DIRS} - ${OpenH264_INCLUDE_DIR} - $ - ) - -target_link_libraries(${LIB_NAME} ${QUICR_LIBRARIES} ${Picoquic_LIBRARIES} ${PTLS_LIBRARIES}) - - ### ### Applications ### @@ -203,6 +127,7 @@ add_subdirectory(cmd) ### ### Tests ### -if(BUILD_TESTS) +include(CTest) +if(BUILD_TESTING AND qmedia_BUILD_TESTS) add_subdirectory(test) -endif(BUILD_TESTS) +endif() diff --git a/cmake/FindPTLS.cmake b/cmake/FindPTLS.cmake deleted file mode 100644 index 79667c0..0000000 --- a/cmake/FindPTLS.cmake +++ /dev/null @@ -1,45 +0,0 @@ -# - Try to find Picotls - -find_path(PTLS_INCLUDE_DIR - NAMES picotls/openssl.h - HINTS ${PTLS_PREFIX}/include/picotls - ${CMAKE_SOURCE_DIR}/../picotls/include - ${CMAKE_BINARY_DIR}/../picotls/include - ../picotls/include/ ) - -set(PTLS_HINTS ${PTLS_PREFIX}/lib ${CMAKE_BINARY_DIR}/../picotls ../picotls) - -find_library(PTLS_CORE_LIBRARY picotls-core HINTS ${PTLS_HINTS}) -find_library(PTLS_OPENSSL_LIBRARY picotls-openssl HINTS ${PTLS_HINTS}) -find_library(PTLS_FUSION_LIBRARY picotls-fusion HINTS ${PTLS_HINTS}) -if(NOT PTLS_FUSION_LIBRARY) - include(FindPackageHandleStandardArgs) - # handle the QUIETLY and REQUIRED arguments and set PTLS_FOUND to TRUE - # if all listed variables are TRUE - find_package_handle_standard_args(PTLS REQUIRED_VARS - PTLS_CORE_LIBRARY - PTLS_OPENSSL_LIBRARY - PTLS_INCLUDE_DIR) - if(PTLS_FOUND) - set(PTLS_LIBRARIES ${PTLS_CORE_LIBRARY} ${PTLS_OPENSSL_LIBRARY} ) - set(PTLS_INCLUDE_DIRS ${PTLS_INCLUDE_DIR}) - set(PTLS_WITH_FUSION_DEFAULT OFF) - endif() -else() - include(FindPackageHandleStandardArgs) - # handle the QUIETLY and REQUIRED arguments and set PTLS_FOUND to TRUE - # if all listed variables are TRUE - find_package_handle_standard_args(PTLS REQUIRED_VARS - PTLS_CORE_LIBRARY - PTLS_OPENSSL_LIBRARY - PTLS_FUSION_LIBRARY - PTLS_INCLUDE_DIR) - - if(PTLS_FOUND) - set(PTLS_LIBRARIES ${PTLS_CORE_LIBRARY} ${PTLS_OPENSSL_LIBRARY} ${PTLS_FUSION_LIBRARY}) - set(PTLS_INCLUDE_DIRS ${PTLS_INCLUDE_DIR}) - set(PTLS_WITH_FUSION_DEFAULT ON) - endif() -endif() - -mark_as_advanced(PTLS_LIBRARIES PTLS_INCLUDE_DIRS) \ No newline at end of file diff --git a/cmake/FindPicoquic.cmake b/cmake/FindPicoquic.cmake deleted file mode 100644 index a2db7c4..0000000 --- a/cmake/FindPicoquic.cmake +++ /dev/null @@ -1,36 +0,0 @@ -# - Try to find Picoquic -find_path(Picoquic_INCLUDE_DIR - NAMES picoquic.h - HINTS ${CMAKE_SOURCE_DIR}/../picoquic/picoquic - ${CMAKE_BINARY_DIR}/../picoquic/picoquic - ../picotls/picoquic/ ) - -find_path(Picoquic_BINLOG_DIR - NAMES autoqlog.h - HINTS ${CMAKE_SOURCE_DIR}/../picoquic/loglib - ${CMAKE_BINARY_DIR}/../picoquic/loglib - ../picotls/picoquic/ ) - -set(Picoquic_HINTS ${CMAKE_BINARY_DIR}/../picoquic ../picoquic) - -find_library(Picoquic_CORE_LIBRARY picoquic-core HINTS ${Picoquic_HINTS}) -find_library(Picoquic_LOG_LIBRARY picoquic-log HINTS ${Picoquic_HINTS}) - -message(STATUS "suhas: ${Picoquic_CORE_LIBRARY}") -include(FindPackageHandleStandardArgs) -# handle the QUIETLY and REQUIRED arguments and set Picoquic_FOUND to TRUE -# if all listed variables are TRUE -find_package_handle_standard_args(Picoquic REQUIRED_VARS - Picoquic_CORE_LIBRARY - Picoquic_INCLUDE_DIR) - -if(Picoquic_FOUND) - set(Picoquic_LIBRARIES - ${Picoquic_CORE_LIBRARY} - ${Picoquic_LOG_LIBRARY}) - set(Picoquic_INCLUDE_DIRS - ${Picoquic_INCLUDE_DIR} - ${Picoquic_BINLOG_DIR}) -endif() - -mark_as_advanced(Picoquic_LIBRARIES Picoquic_INCLUDE_DIRS) diff --git a/cmake/FindQuicr.cmake b/cmake/FindQuicr.cmake deleted file mode 100644 index 25ed104..0000000 --- a/cmake/FindQuicr.cmake +++ /dev/null @@ -1,33 +0,0 @@ -# - Try to find Quicrq - -find_path(QUICRQ_INCLUDE_DIR - NAMES quicrq.h - HINTS ${CMAKE_SOURCE_DIR}/../quicrq/include - ${CMAKE_BINARY_DIR}/../quicrq/include - ../quicrq/include ) - -find_path(QUICRQ_INTERNAL_DIR - NAMES quicrq_internal.h - HINTS ${CMAKE_SOURCE_DIR}/../quicrq/lib - ${CMAKE_BINARY_DIR}/../quicrq/lib - ../quicrq/lib ) - -set(QUICRQ_HINTS ${CMAKE_BINARY_DIR}/../quicrq ../quicrq) - -find_library(QUICRQ_CORE_LIBRARY quicrq-core HINTS ${QUICRQ_HINTS}) - -include(FindPackageHandleStandardArgs) -# handle the QUIETLY and REQUIRED arguments and set PTLS_FOUND to TRUE -# if all listed variables are TRUE -find_package_handle_standard_args(Quicr REQUIRED_VARS - QUICRQ_CORE_LIBRARY - QUICRQ_INCLUDE_DIR - QUICRQ_INTERNAL_DIR) - -if(Quicr_FOUND) - set(QUICR_LIBRARIES - ${QUICRQ_CORE_LIBRARY}) - set(QUICR_INCLUDE_DIRS ${QUICRQ_INCLUDE_DIR} ${QUICRQ_INTERNAL_DIR}) -endif() - -mark_as_advanced(QUICR_LIBRARIES QUICR_INCLUDE_DIRS) diff --git a/cmd/CMakeLists.txt b/cmd/CMakeLists.txt index bb87aeb..d9c9e20 100644 --- a/cmd/CMakeLists.txt +++ b/cmd/CMakeLists.txt @@ -1,16 +1,22 @@ -add_executable(forty forty-bytes.cc) -target_link_libraries( forty PUBLIC qmedia) - find_package(portaudio QUIET) if(portaudio_FOUND) - add_executable( sound sound.cc) - target_link_libraries( sound PUBLIC qmedia) + add_executable(sound sound.cc) + target_link_libraries(sound PUBLIC qmedia) if (WIN32) - target_link_libraries( sound PUBLIC portaudio) + target_link_libraries(sound PUBLIC portaudio) else(WIN32) - target_link_libraries( sound PUBLIC portaudio_static) + target_link_libraries(sound PUBLIC portaudio_static) endif(WIN32) + target_compile_options(sound + PRIVATE + $<$,$,$>: -Wpedantic -Wextra -Wall> + $<$: >) + set_target_properties(sound + PROPERTIES + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED YES + CXX_EXTENSIONS OFF) else(portaudio_FOUND) message(STATUS "Skipping building sound as missing portaudio") endif(portaudio_FOUND) diff --git a/cmd/forty-bytes.cc b/cmd/forty-bytes.cc deleted file mode 100644 index b7557e8..0000000 --- a/cmd/forty-bytes.cc +++ /dev/null @@ -1,207 +0,0 @@ -#include -#include -#include -#include - -#include "neo_media_client.hh" -#include "neo.hh" - -#include -#include - -using namespace neo_media; -using namespace std::chrono_literals; - - -uint64_t conference_id = 1234; -bool done = false; -ClientTransportManager *transportManager = nullptr; - -static std::string to_hex(const std::vector &data) -{ - std::stringstream hex(std::ios_base::out); - hex.flags(std::ios::hex); - for (const auto &byte : data) - { - hex << std::setw(2) << std::setfill('0') << int(byte); - } - return hex.str(); -} - -void read_loop() -{ - std::cout << "Client read audio loop init\n"; - while (!done) - { - auto packet = transportManager->recv(); - if (!packet) - { - continue; - } - if (packet->packetType == neo_media::Packet::Type::StreamContent) - { - std::cout << "40B:<<<<<<<" << to_hex(packet->data) << "\n"; - } - else - { - } - } -} - -void send_loop(uint64_t client_id, uint64_t source_id) -{ - const uint8_t forty_bytes[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - uint32_t pkt_num = 0; - - while (!done) - { - auto data = bytes(forty_bytes, forty_bytes + sizeof(forty_bytes)); - PacketPointer packet = std::make_unique(); - assert(packet); - pkt_num++; - packet->clientID = client_id; - packet->data = std::move(data); - packet->sourceID = source_id; - packet->conferenceID = conference_id; - packet->packetType = neo_media::Packet::Type::StreamContent; - packet->packetizeType = neo_media::Packet::PacketizeType::None; - packet->mediaType = neo_media::Packet::MediaType::Opus; - packet->videoFrameType = neo_media::Packet::VideoFrameType::Idr; - packet->encodedSequenceNum = pkt_num; - std::cout << "40B:>>>>>>>>:" << to_hex(packet->data) << std::endl; - transportManager->send(std::move(packet)); - std::this_thread::sleep_for(std::chrono::milliseconds(50)); - } -} - -std::shared_ptr getTransportHandle(ClientTransportManager*& transportManager) { - auto transport = transportManager->transport(); - std::weak_ptr tmp = - std::static_pointer_cast(transport.lock()); - return tmp.lock(); -} - -int main(int argc, char *argv[]) -{ - std::string mode; - std::string transport_type; - std::string me; - std::string you; - uint64_t source_id = 0x1000; - uint16_t server_port = 7777; - std::string server_ip; - if (argc < 5) - { - std::cerr << "Usage: forty " - << std::endl; - std::cerr << "port: server ip for quicr origin/relay" << std::endl; - std::cerr << "port: server port for quicr origin/relay" << std::endl; - std::cerr << "mode: sendrecv/send/recv" << std::endl; - std::cerr << "self-client-id: some string" << std::endl; - std::cerr << "other-client-id: some string that is not self" << std::endl; - return -1; - } - - server_ip.assign(argv[1]); - - std::string port_str; - port_str.assign(argv[2]); - if (port_str.empty()) - { - std::cout << "Port is empty" << std::endl; - exit(-1); - } - server_port = std::stoi(argv[2], nullptr); - - mode.assign(argv[3]); - if (mode != "send" && mode != "recv" && mode != "sendrecv") - { - std::cout << "Bad choice for mode.. Bye" << std::endl; - exit(-1); - } - - // names - me.assign(argv[4]); - you.assign(argv[5]); - - LoggerPointer logger = std::make_shared("FORTY_BYTES"); - logger->SetLogFacility(LogFacility::CONSOLE); - - transportManager = new ClientTransportManager( - neo_media::NetTransport::QUICR, server_ip, server_port, nullptr, logger); - transportManager->start(); - - if (mode == "recv") - { - if(you.empty()) { - std::cout << "Bad choice for other-client-id" << std::endl; - exit(-1); - } - - auto quicr_transport = getTransportHandle(transportManager); - quicr_transport->subscribe( - source_id, Packet::MediaType::Opus, you); - // start the transport - quicr_transport->start(); - - while (!transportManager->transport_ready()) - { - std::this_thread::sleep_for(std::chrono::milliseconds(10)); - } - - std::cout << "Transport is ready" << std::endl; - read_loop(); - } - else if (mode == "send") - { - if(me.empty()) { - std::cout << "Bad choice for self-client-id" << std::endl; - exit(-1); - } - auto quicr_transport = getTransportHandle(transportManager); - quicr_transport->publish( - source_id, Packet::MediaType::Opus, me); - - // start the transport - quicr_transport->start(); - - while (!transportManager->transport_ready()) - { - std::this_thread::sleep_for(std::chrono::milliseconds(10)); - } - - std::cout << "Transport is ready" << std::endl; - - send_loop(1111, source_id); - } - else - { - if (me.empty() || you.empty()) { - std::cout << "Bad choice for clientId(s)" << std::endl; - exit(-1); - } - - auto quicr_transport = getTransportHandle(transportManager); - quicr_transport->subscribe( - source_id, Packet::MediaType::Opus, you); - - quicr_transport->publish( - source_id, Packet::MediaType::Opus, me); - - quicr_transport->start(); - - while (!transportManager->transport_ready()) - { - std::this_thread::sleep_for(std::chrono::seconds(2)); - } - - std::cout << "Transport is ready" << std::endl; - - std::thread reader(read_loop); - send_loop(1111, source_id); - } - - return 0; -} diff --git a/cmake/dependencies.cmake b/dependencies/CMakeLists.txt similarity index 55% rename from cmake/dependencies.cmake rename to dependencies/CMakeLists.txt index 08152c9..3dba8db 100644 --- a/cmake/dependencies.cmake +++ b/dependencies/CMakeLists.txt @@ -1,6 +1,3 @@ -################################################################################ -# Pull in dependency by using FetchContent -# https://cmake.org/cmake/help/v3.18/module/FetchContent.html include(FetchContent) ################################################################################ @@ -11,5 +8,16 @@ include(FetchContent) FetchContent_Declare( sframe GIT_REPOSITORY https://github.com/cisco/sframe.git GIT_TAG master) -FetchContent_MakeAvailable(sframe) +################################################################################ +# Project URL: https://github.com/cisco/sframe +# Git URL: https://github.com/cisco/sframe.git +# Branch: master +# Targets: sframe +FetchContent_Declare(quicr + GIT_REPOSITORY git@github.com:Quicr/libquicr.git + GIT_TAG main) +set(quicr_BUILD_TESTS OFF) +set(quicrq_BUILD_TESTS OFF) + +FetchContent_MakeAvailable(sframe quicr) diff --git a/include/netTransportQuicR.hh b/include/netTransportQuicR.hh index dbf70aa..4f33b96 100644 --- a/include/netTransportQuicR.hh +++ b/include/netTransportQuicR.hh @@ -100,7 +100,7 @@ public: virtual bool doSends() override; virtual bool doRecvs() override; virtual void shutdown() override {} - virtual NetTransport::PeerConnectionInfo getConnectionInfo() + virtual NetTransport::PeerConnectionInfo getConnectionInfo() override { return PeerConnectionInfo{quicr_client_ctx.server_address, quicr_client_ctx.server_address_len, diff --git a/include/simple_video_assembler.hh b/include/simple_video_assembler.hh index fefa358..8decede 100644 --- a/include/simple_video_assembler.hh +++ b/include/simple_video_assembler.hh @@ -16,6 +16,6 @@ public: protected: std::map deques; - void decodeMedia(Packet *packet); + void decodeMedia(Packet *packet) override; }; } // namespace neo_media diff --git a/lib/metrics/CMakeLists.txt b/lib/metrics/CMakeLists.txt index 19167b0..a98072b 100644 --- a/lib/metrics/CMakeLists.txt +++ b/lib/metrics/CMakeLists.txt @@ -1,5 +1,3 @@ -set(CURRENT_LIB_NAME metrics) - ### ### Dependencies ### @@ -11,21 +9,32 @@ find_package(OpenSSL 1.1 REQUIRED) # curl for influx find_package(CURL REQUIRED) -list(APPEND LIBRARIES ${CURL_LIBRARIES}) - -file(GLOB_RECURSE LIB_HEADERS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/include/*.hh") -file(GLOB_RECURSE LIB_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc") -add_library(${CURRENT_LIB_NAME} ${LIB_HEADERS} ${LIB_SOURCES}) -target_link_libraries(${CURRENT_LIB_NAME} PRIVATE ${LIBRARIES}) -target_include_directories(${CURRENT_LIB_NAME} - PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include - ) +add_library(metrics + src/measurements.cc + src/metrics.cc) +target_link_libraries(metrics + PUBLIC + ${CURL_LIBRARIES} + OpenSSL::SSL + OpenSSL::Crypto) +target_include_directories(metrics + PUBLIC + ${CMAKE_SOURCE_DIR}/include) +target_compile_options(metrics + PRIVATE + $<$,$,$>: -Wpedantic -Wextra -Wall> + $<$: >) +set_target_properties(metrics + PROPERTIES + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED YES + CXX_EXTENSIONS OFF) ### ### Tests ### - -#if (TESTING) +include(CTest) +if(BUILD_TESTING AND qmedia_BUILD_TESTS) add_subdirectory(test) -#endif() \ No newline at end of file +endif() diff --git a/lib/metrics/include/measurements.hh b/lib/metrics/include/measurements.hh index e532bd2..12245a2 100644 --- a/lib/metrics/include/measurements.hh +++ b/lib/metrics/include/measurements.hh @@ -3,6 +3,7 @@ #include #include #include +#include namespace metrics { diff --git a/lib/metrics/src/measurements.cc b/lib/metrics/src/measurements.cc index 21283e4..458ac8a 100644 --- a/lib/metrics/src/measurements.cc +++ b/lib/metrics/src/measurements.cc @@ -1,3 +1,4 @@ +#include #include "measurements.hh" namespace metrics @@ -161,4 +162,4 @@ std::string InfluxMeasurement::lineProtocol_fields(Fields &fields) return line; } -} \ No newline at end of file +} diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index c0244c1..edce483 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -2,19 +2,11 @@ # project project(media_api) -################################################################################ -# generate a list of proto definitions -set(PROTOCOL_DEFINITIONS media) - -foreach(file IN LISTS PROTOCOL_DEFINITIONS) - list(APPEND protocol_files ${CMAKE_CURRENT_SOURCE_DIR}/${file}.proto) -endforeach() - ################################################################################ # protoc is not found by the initial cache generation of cmake, so we need to # give it a hint. Assuming that we are using vcpkg. find_program( - Protobuf_PROTOC_EXECUTABLE protoc + Protobuf_PROTOC_EXECUTABLE protoc PATHS ${CMAKE_CURRENT_BINARY_DIR}/../vcpkg_installed/${VCPKG_TARGET_TRIPLET}/tools/protobuf REQUIRED) @@ -25,10 +17,20 @@ set(Protobuf_DEBUG ON) ################################################################################ # compile protocol definitions -protobuf_generate_cpp(library_sources library_headers ${protocol_files}) +protobuf_generate_cpp(library_sources library_headers media.proto) ################################################################################ # build -add_library(${PROJECT_NAME} STATIC ${library_sources} ${library_headers}) -target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${Protobuf_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} ${Protobuf_LIBRARIES}) +add_library(media_api STATIC ${library_sources} ${library_headers}) +target_include_directories(media_api PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${Protobuf_INCLUDE_DIRS}) +target_link_libraries(media_api ${Protobuf_LIBRARIES}) +target_compile_options(media_api + PRIVATE + $<$,$,$>: -Wpedantic -Wextra -Wall> + $<$: >) +set_target_properties(media_api + PROPERTIES + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED YES + CXX_EXTENSIONS OFF) + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cbae26b..72ec013 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,3 +1,52 @@ +add_library(qmedia + audio_encoder.cc + full_Fill.cc + h264_decoder.cc + h264_encoder.cc + jitter.cc + jitter_queues.cc + jitter_silence.cc + logger.cc + loopback-jitter.cc + metrics.cc + modulus_deque.cc + neo.cc + netTransportQuicR.cc + opus_assembler.cc + packet.cc + playout_leakybucket.cc + playout_sync.cc + playout_tools.cc + resampler.cc + rtx_manager.cc + simple_packetize.cc + simple_video_assembler.cc + transport_manager.cc) +target_link_directories(qmedia PUBLIC ${OpenH264_LIB_DIR}) +target_link_libraries(qmedia + PUBLIC + ${LIBRARIES} + OpenSSL::Crypto + openh264 + quicr + picoquic-core + picotls-core) +target_include_directories(qmedia + PUBLIC + ${PROJECT_SOURCE_DIR}/include + ${Protobuf_INCLUDE_DIRS} + ${OpenH264_INCLUDE_DIR}) +target_compile_options(qmedia + PRIVATE + $<$,$,$>: -Wpedantic -Wextra -Wall> + $<$: >) +set_target_properties(qmedia + PROPERTIES + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED YES + CXX_EXTENSIONS OFF) + if(BUILD_EXTERN) add_subdirectory(extern) endif(BUILD_EXTERN) + diff --git a/src/extern/CMakeLists.txt b/src/extern/CMakeLists.txt index 9051d6d..31aef90 100644 --- a/src/extern/CMakeLists.txt +++ b/src/extern/CMakeLists.txt @@ -1,6 +1,13 @@ project(neo_media_client) -set(headers neo_media_client.hh) -set(sources neo_media_client.cc) -add_library(${PROJECT_NAME} SHARED ${sources} ${headers}) -target_link_libraries(${PROJECT_NAME} PUBLIC qmedia) +add_library(neo_media_client SHARED neo_media_client.cc) +target_link_libraries(neo_media_client PRIVATE qmedia) +target_compile_options(neo_media_client + PRIVATE + $<$,$,$>: -Wpedantic -Wextra -Wall> + $<$: >) +set_target_properties(neo_media_client + PROPERTIES + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED YES + CXX_EXTENSIONS OFF) diff --git a/src/netTransportQuicR.cc b/src/netTransportQuicR.cc index 7f4e542..5240962 100644 --- a/src/netTransportQuicR.cc +++ b/src/netTransportQuicR.cc @@ -30,7 +30,6 @@ #include "picoquic_logger.h" #include "picoquic_utils.h" #include "picosocks.h" -#include "picotls.h" #include "autoqlog.h" #include "performance_log.h" @@ -699,7 +698,7 @@ NetTransportQUICR::NetTransportQUICR(TransportManager *t, xport_ctx.port = sfuPort; quicr_client_ctx.port = sfuPort; - memcpy(&quicr_client_ctx.server_address, &addr, addr.ss_len); + memcpy(&quicr_client_ctx.server_address, &addr, sizeof(addr)); quicr_client_ctx.server_address_len = sizeof( quicr_client_ctx.server_address); assert(ret == 0); @@ -745,4 +744,4 @@ int NetTransportQUICR::runQuicProcess() /* Free the quicrq context */ quicrq_delete(quicr_client_ctx.qr_ctx); return 0; -} \ No newline at end of file +}