C++14 evented IO libraries for high performance networking and media based applications

Overview

LibSourcey

C++ Networking Evolved

Circle CI Doxygen

LibSourcey is a collection of cross platform C++14 modules and classes that provide developers with an arsenal for rapidly developing high performance network based p2p and media streaming applications. Think of it as the power and performance of libuv combined with the features of FFmpeg, OpenCV and WebRTC, all integrated with the ease and readability of the stl (C++ Standard Library).

Basic features

  • Event-based IO — Core modules are built on top of libuv (the underlying C library that powers nodejs) and use event-based asynchronous IO throughout to maximize performance and minimize concurrency reliance for building mission critical native and server side apps.

  • Cross platform — The codebase is cross platform and should compile on any system with access to a modern C++14 compiler.

  • Modular libraries — Libraries are modular for easy integration into your existing projects, so you can just "include what you need" without incurring extra incumbent bloat.

  • Well tested — Core modules are well tested with unit tests and stress tested daily in production.

  • Clean and readable code — Modern C++ design principles have been adhered to throughout for clean and readable code.

  • Easy packaging and installation — LibSourcey can be compiled and installed on most platforms with CMake. For straight forward distribution and integration with existing projects the libraries be also packaged as a deb, rpm, tar.gz, zip, and more formats with a single command.

  • Docker images — Semantically versioned images are available on Docker Hub. Just type docker pull sourcey/libsourcey to grab the latest.

  • Solid networking layer — At the core of LibSourcey is a solid and blazing fast networking layer build on libuv and openssl primitives, with TCP, SSL and UDP socket implementations.

  • Web servers and clients — A HTTP stack is provided that includes servers, clients, WebSockets, media streaming, file transfers, and authentication. The HTTP parser is based on the super-fast C code used by nginx.

  • Media streaming and encoding — The av library consists of thin wrappers around FFmpeg and OpenCV for media capture, encoding, recording, streaming, analysis and more.

  • Realtime messaging — LibSourcey aims to bridge the gap between desktop, mobile and web by providing performance oriented messaging solutions that work across all platforms.

    • Socket.IO — Socket.IO C++ client that supports the latest protocol revision 4 (>= 1.0). Read more about Socket.IO.
    • Symple — Sourcey's home grown realtime messaging protocol that works over the top of Socket.IO to provide rostering, presence and many other features necessary for building online games and chat applications. More about Symple.
  • WebRTC support — WebRTC native support allows you to build p2p desktop and server side applications that inherit LibSourcey's realtime messaging and media capabilities. Take a look at the examples for how to stream live webcam and microphone streams to the browser, and also how to record live WebRTC streams on the server side.

Getting started

See the installation guides in the docs to get started playing with LibSourcey.

A few examples

What better way to get acquainted with a new library then with some tasty code examples.

HTTP echo server

Lets start with the classic HTTP echo server, which looks something like this:

http::Server srv{ "127.0.0.1", 1337 };
srv.Connection += [](http::ServerConnection::Ptr conn) {
    conn->Payload += [](http::ServerConnection& conn, const MutableBuffer& buffer) {
        conn.send(bufferCast<const char*>(buffer), buffer.size());
        conn.close();
    };
};
srv.start();

Pretty neat right? Its crazy fast too, especially on Linux kernel 3.9 or newer where its optimized to use of kernel level multicore socket load balancing. Don't take our word for it though, here are some benchmarks using wrk:

LibSourcey httpechoserver

$ wrk -d10s --timeout 2s http://localhost:1337
Running 10s test @ http://localhost:1337
  2 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   265.76us  472.62us  12.42ms   97.51%
    Req/Sec    18.84k     1.26k   21.57k    74.50%
  375060 requests in 10.01s, 20.39MB read
Requests/sec:  37461.50
Transfer/sec:      2.04MB

Nodejs echo server

$ wrk -d10s --timeout 2s http://localhost:1337
Running 10s test @ http://localhost:1337
  2 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   502.70us  715.11us  14.83ms   97.90%
    Req/Sec    11.69k     1.46k   14.52k    70.50%
  232667 requests in 10.01s, 21.97MB read
Requests/sec:  23236.33
Transfer/sec:      2.19MB

As you can see the httpechoserver is almost twice as fast as the dead simple nodejs echo server, which is not a bad performance gain over one of the web's leading technologies thats touted for it's performance. Check the httpechoserver sample for the full code, including the nodejs echo server we used for benchmarking.

Processes

Interacting with system processes and piping IO doesn't have to be painful. The following code will run the ping sourcey.com and with stdio and exit callbacks:

Process proc{ "ping", "sourcey.com" };
proc.onstdout = [](std::string line)
{
    // handle process output
};
proc.onexit = [](std::int64_t status)
{
    // handle process exit
};
proc.spawn();

// write some random data to the stdin pipe
proc.in() << "random data"

Packet Stream

A good starting point for learning LibSourcey is the PacketStream, which lets you create a dynamic delegate chain for piping, processing and outputting arbitrary data packets. This method of layering packet processors and makes it possible to develop complex data processing applications on the fly.

For example, the code below captures a live webcam stream, encodes it into H.264, and then finally broadcasts it in realtime over the internet:

// Create a PacketStream to pass packets from the
// input device captures -> encoder -> socket
PacketStream stream;

// Setup the encoder options
av::EncoderOptions options;
options.oformat = av::Format{"MP4", "mp4",
    { "H.264", "libx264", 640, 480, 25, 48000, 128000, "yuv420p" },
    { "AAC", "aac", 2, 44100, 64000, "fltp" }};

// Create a device manager instance to enumerate system devices
av::DeviceManager devman;
av::Device device;

// Create and attach the default video capture
av::VideoCapture::Ptr video;
if (devman.getDefaultCamera(device)) {
    video.open(device.id, 640, 480);
    video.getEncoderFormat(options.iformat);
    stream.attachSource(video, true);
}

// Create and attach the default audio capture
av::AudioCapture::Ptr audio;
if (devman.getDefaultMicrophone(device)) {
    audio.open(device.id, 2, 44100);
    audio.getEncoderFormat(options.iformat);
    stream.attachSource(audio, true);
}

// Create and attach the multiplex encoder
av::MultiplexPacketEncoder::Ptr encoder(options);
stream.attach(encoder);

// Attach the output net::Socket instance (instantiated elsewhere)
// to broadcast encoded packets over the network
stream.attach(socket);

// Start the stream
// This method call will start the device captures and begin
// pumping encoded media into the output socket
stream.start();

There are plenty more demos and sample code to play with over on the examples page.

Contributors

A massive thanks to everyone who has contributed to making LibSourcey awesome:

  • Kam Low (@auscaster) — Primary developer
  • Yury Shulbn (@yuryshubin) — iOS build toolchain and platform fixes
  • Vinci Xu (@VinciShark) — Windows documentation, testing and updates
  • Michael Fig (@michael-fig) — Fixed compiler flags to build without FFmpeg
  • Hyunuk Kim (@surinkim) — Fixed std::codecvt unicode character conversion on Windows
  • Damian Zelim (@ZelimDamian) — Fixed compiler flags for OS X build
  • Norm Ovenseri (@normano) — Added verbose logging output to build system
  • Alexey (@deilos) — Fixed cross-platform FFmpeg build script
  • Kryton (@Malesio) — Fixed segfaults in samples and tidied up Valgrind warnings

Contributing

Pull Requests are always welcome, so if you fix or make anything better then feel free to float a PR back upstream :)

  1. Fork LibSourcey on Github
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request
Comments
  • WebRTC recording with OpenCV integration?

    WebRTC recording with OpenCV integration?

    Bountysource

    Is there an example of using OpenCV to process frames from a live WebRTC video stream? As an example, say you wanted to perform some basic feature detection (e.g. canny edge detection) on frames as they streamed in from a WebRTC peer; how would you accomplish this with libsourcey?

    I noticed the WebRTC Native Video Recorder sample and this bit of code:

            Signaler app(options);
    
            Idler rtc(app.loop,
                      [](void* arg) {
                          // TraceL << "Running WebRTC loop" << endl;
                          auto thread = reinterpret_cast<rtc::Thread*>(arg);
                          thread->ProcessMessages(10);
                      },
                      rtc::Thread::Current());
    

    It's not clear to me though how I would integrate OpenCV to process frames as they were received. Is there something like a "frame received" event/object? Recording the stream is also desirable, so it seems like this example is a good place to start out, but I would also like to access the frames as images before they are recorded. Thanks.

    opened by fohara 14
  • macOS CMAKE error on symple app

    macOS CMAKE error on symple app

    When running CMAKE in macOS for the /libsourcey/src/symple app, see this error:

    CMake Error at CMakeLists.txt:1 (ask_build_sourcey_module): Unknown CMake command "ask_build_sourcey_module".

    opened by RichLewis007 13
  • CMake error with FindWebRTC.cmake

    CMake error with FindWebRTC.cmake

    Hi, after #115 resolved, I pull the latest code. But it seems that release version of cmake have some prombles. I get the following error: CMake Error at cmake/FindWebRTC.cmake:114 (get_filename_component): get_filename_component called with incorrect number of arguments Call Stack (most recent call first): cmake/LibSourceyIncludes.cmake:47 (find_package) cmake/LibSourceyIncludes.cmake:90 (find_dependency) src/webrtc/CMakeLists.txt:4 (include_dependency) and Release of WEBRTC Variables looks like disk name is missing: -- Release Libraries: /Program Files (x86)/Microsoft Visual Studio 12.0/VC/lib/amd64/vccorlibd.lib;/Program Files (x86)/Microsoft Visual Studio 12.0/VC/lib/amd64/vcomp.lib;... So I think somewhere still have bugs?

    opened by webbery 13
  • Visual Studio 2015 compilation/linking errors

    Visual Studio 2015 compilation/linking errors

    Hello again, Thanks to the latest updates, I've been able to get further in building libsourcey, but I am still having difficulties at the final step. I can build WebRTC and have CMake detect it and generate the VS solution, but when I try to build the solution (in Debug or Release), I get a flurry of errors in several of the projects.

    I have successfully built WebRTC as described in https://github.com/sourcey/libsourcey/blob/master/doc/installation-windows.md (I am using branch-heads/57).

    Here is my CMake output:

    $ cmake .. -DCMAKE_BUILD_TYPE=DEBUG -DBUILD_SHARED_LIBS=ON -DBUILD_MODULES=ON -DBUILD_APPLICATIONS=ON -DBUILD_SAMPLES=ON -DBUILD_TESTS=ON -DWITH_FFMPEG=ON -DWITH_WEBRTC=ON -DWEBRTC_ROOT_DIR=E:/webrtc/003/webrtc-checkout/src
    -- Including module archo
    -- Including module test archotests
    -- Including dependency: FFmpeg
    -- Including module av
    -- Including dependency: FFmpeg
    -- Including module sample deviceenumerator
    -- Including dependency: FFmpeg
    -- Including module sample devicerecorder
    -- Including module test avtests
    -- Including module base
    -- Including module test basetests
    -- Including dependency: SSL
    -- Including BoringSSL
    -- Including dependency: WebRTC
    -- Including module crypto
    -- Including module test cryptotests
    -- Including dependency: SSL
    -- Including BoringSSL
    -- Including dependency: WebRTC
    -- Including module http
    -- Including module sample httpechoserver
    -- Including module test httptests
    -- Including module json
    -- Including dependency: SSL
    -- Including BoringSSL
    -- Including dependency: WebRTC
    -- Including module net
    -- Including module sample echoserver
    -- Including module test nettests
    -- Including module sched
    -- Including module test schedtests
    -- Including dependency: SSL
    -- Including BoringSSL
    -- Including dependency: WebRTC
    -- Including module socketio
    -- Including dependency: SSL
    -- Including BoringSSL
    -- Including dependency: WebRTC
    -- Including module test socketiotests
    -- Including dependency: SSL
    -- Including BoringSSL
    -- Including dependency: WebRTC
    -- Including module stun
    -- Including module test stuntests
    -- Including dependency: SSL
    -- Including BoringSSL
    -- Including dependency: WebRTC
    -- Including module symple
    -- Including module sample sympleconsole
    -- Including module test sympletests
    -- Including module turn
    -- Including module sample turnserver
    -- Including module test turnclienttest
    -- Including module util
    -- Including module uv
    -- Including dependency: WebRTC
    CMake Warning at src/webrtc/CMakeLists.txt:7 (message):
      Compiling WebRTC libraries with `BUILD_SHARED_LIBS=OFF` is recommended
    
    
    -- Including module webrtc
    -- Including dependency: WebRTC
    -- Including dependency: FFmpeg
    -- Including module sample webrtcstreamer
    -- Including dependency: WebRTC
    -- Including dependency: FFmpeg
    -- Including module sample webrtcrecorder
    -- Parsing 'libsourcey.h.cmake'
    --
    --   Platform:
    --     Host:                        Windows 10.0.14393 AMD64
    --     CMake:                       3.7.0-rc1
    --     CMake generator:             Visual Studio 14 2015 Win64
    --     CMake build tool:            C:/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe
    --     MSVC:                        1900
    --
    --   C/C++:
    --     Built as dynamic libs?:      YES
    --     C++ Compiler:                C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
    --     C++ flags (Release):         /DWIN32 /D_WINDOWS /W4 /GR /EHa  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /wd4251 /MD /O2 /Ob2 /DNDEBUG   /Zi
    --     C++ flags (Debug):           /DWIN32 /D_WINDOWS /W4 /GR /EHa  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /wd4251 /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
    --     C Compiler:                  C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
    --     C flags (Release):           /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /MD /O2 /Ob2 /DNDEBUG  /Zi
    --     C flags (Debug):             /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
    --     Linker flags (Release):      /machine:x64  /SAFESEH:NO /INCREMENTAL:NO  /debug
    --     Linker flags (Debug):        /machine:x64  /SAFESEH:NO /debug /INCREMENTAL
    --
    --   Build Components:
    --
    --      Dependencies:               libuv;zlib;minizip;http_parser
    --      Modules:                    archo;av;base;crypto;http;json;net;sched;socketio;stun;symple;turn;util;uv;webrtc
    --      Applications:
    --      Samples:                    av;http;net;socketio;symple;turn;webrtc
    --      Tests:                      archo;av;base;crypto;http;net;sched;socketio;stun;symple;turn
    --
    --   Other third-party libraries:
    --
    --     Use OpenSSL:                 YES
    --     Use FFmpeg:                  YES
    --     Use OpenCV:                  NO
    --     Use WebRTC:                  YES
    --     Use Poco:                    NO
    --     Use wxWidgets:               NO
    --
    --     Install path:                E:/Libs/libsourcey/build/install
    --
    --     libsourcey.h is in:          E:/Libs/libsourcey/build/install/include/libsourcey.h
    -- -----------------------------------------------------------------
    --
    -- Configuring done
    -- Generating done
    -- Build files have been written to: E:/Libs/libsourcey/build
    

    Some of the libsourcey projects (e.g. "base") compile just fine, but others do not. Here is a sampling of the ~800 errors VS spits out at me:

    13>------ Build started: Project: basetests, Configuration: Debug x64 ------
    9>  cipher.cpp
    10>  configuration.cpp
    11>  audiobuffer.cpp
    12>  zipfile.cpp
    13>  basetests.cpp
    11>  audiocapture.cpp
    9>  crypto.cpp
    12>     Creating library E:/Libs/libsourcey/build/archo/Debug/scy_archod.lib and object E:/Libs/libsourcey/build/archo/Debug/scy_archod.exp
    12>zipfile.obj : error LNK2019: unresolved external symbol "public: __cdecl scy::LogStream::LogStream(enum scy::LogLevel,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int,void const *,char const *)" ([email protected]@@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]) referenced in function "public: void __cdecl scy::archo::ZipFile::extract(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([email protected]@[email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z)
    12>zipfile.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl scy::fs::dirname(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z) referenced in function "public: bool __cdecl scy::archo::ZipFile::extractCurrentFile(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,bool)" ([email protected]@[email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected])
    12>zipfile.obj : error LNK2019: unresolved external symbol "void __cdecl scy::fs::mkdirr(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)" ([email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]) referenced in function "public: bool __cdecl scy::archo::ZipFile::extractCurrentFile(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,bool)" ([email protected]@[email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected])
    12>zipfile.obj : error LNK2019: unresolved external symbol "void __cdecl scy::fs::addnode(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z) referenced in function "public: bool __cdecl scy::archo::ZipFile::extractCurrentFile(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,bool)" ([email protected]@[email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected])
    12>zipfile.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl scy::fs::transcode(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z) referenced in function "public: void __cdecl scy::archo::ZipFile::open(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([email protected]@[email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z)
    12>zipfile.obj : error LNK2001: unresolved external symbol "char const scy::fs::delimiter" ([email protected]@[email protected]@3DB)
    12>E:\Libs\libsourcey\build\archo\Debug\scy_archod.dll : fatal error LNK1120: 6 unresolved externals
    
    9>E:\Libs\libsourcey\src\crypto\include\scy/crypto/x509certificate.h(98): error C2039: 'set': is not a member of 'std'
    9>  C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\iostream(12): note: see declaration of 'std'
    9>E:\Libs\libsourcey\src\crypto\include\scy/crypto/x509certificate.h(98): error C2061: syntax error: identifier 'set'
    9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(229): error C2039: 'set': is not a member of 'std'
    9>  C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\iostream(12): note: see declaration of 'std'
    9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(229): error C2061: syntax error: identifier 'set'
    9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(231): error C2065: 'domainNames': undeclared identifier
    9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(231): error C2228: left of '.clear' must have class/struct/union
    9>  E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(231): note: type is 'unknown-type'
    9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(240): error C2065: 'domainNames': undeclared identifier
    9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(240): error C2228: left of '.insert' must have class/struct/union
    9>  E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(240): note: type is 'unknown-type'
    9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(247): error C2065: 'domainNames': undeclared identifier
    9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(247): error C2228: left of '.empty' must have class/struct/union
    9>  E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(247): note: type is 'unknown-type'
    9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(248): error C2065: 'domainNames': undeclared identifier
    9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(248): error C2228: left of '.insert' must have class/struct/union
    9>  E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(248): note: type is 'unknown-type'
    

    I suspect there is something related to the recent work in exchanging OpenSSL with BoringSSL and trying to exclude these x509 certificates that was incomplete.

    Please let me know if there is more data/logs I can provide you. Thanks!

    opened by DanAndersen 12
  • CMake cannot find custom WebRTC build

    CMake cannot find custom WebRTC build

    I built WebRTC in Gentoo with my own scripts, and trying to build with setting WEBRTC_ROOT_DIR, here it is:

    cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=OFF \
    -DBUILD_APPLICATIONS=OFF -DBUILD_MODULES=OFF \
    -DBUILD_SAMPLES=OFF -DBUILD_TESTS=ON \
    -DBUILD_MODULE_base=ON -DBUILD_MODULE_crypto=ON \
    -DBUILD_MODULE_http=ON -DBUILD_MODULE_json=ON \
    -DBUILD_MODULE_av=ON -DBUILD_MODULE_net=ON \
    -DBUILD_MODULE_socketio=ON -DBUILD_MODULE_stun=ON \
    -DBUILD_MODULE_symple=ON -DBUILD_MODULE_turn=ON \
    -DBUILD_MODULE_util=ON -DBUILD_MODULE_webrtc=ON \
    -DWITH_WEBRTC=ON -DWEBRTC_ROOT_DIR=/home/artem/webrtc-checkout/src \
    -DWITH_FFMPEG=OFF -DWITH_OPENCV=OFF \
    -DBUILD_MODULE_archo=OFF -DBUILD_MODULE_pacm=OFF \
    -DBUILD_MODULE_pluga=OFF -DBUILD_MODULE_sked=OFF
    
    ...
    
    -- Could NOT find WEBRTC (missing:  WEBRTC_LIBRARIES) 
    CMake Error at cmake/LibSourceyIncludes.cmake:72 (message):
      Failed to include dependency: WebRTC.  Please build and install
      dependencies before using CMake.
    Call Stack (most recent call first):
      LibSourcey.cmake:243 (find_dependency)
      CMakeLists.txt:35 (include)
    ...
    

    Commit 23e72cfd6c3e8369494fbf344433c64ecc255fe7 CMake 3.5.2

    And it seems that commenting this line helps: https://github.com/sourcey/libsourcey/blob/master/cmake/FindWebRTC.cmake#L168

    opened by artemiuzzz 11
  • Compile on Linux with SAMPLES_webrtc

    Compile on Linux with SAMPLES_webrtc

    Hello,

    I try to cmake with this command: (if building on the current master checkout)

    cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DWITH_WEBRTC=ON -DBUILD_SAMPLES_webrtc=ON -DWITH_FFMPEG=ON \ -DWEBRTC_ROOT_DIR=~/tmp/webrtcbuilds/out/webrtcbuilds-17821-fd68d65-linux-x64/ -DBUILD_SHARED_LIBS=OFF

    After running

    make

    I got Error:

    Linking CXX executable stuntests
    ~/tmp/webrtcbuilds/out/webrtcbuilds-17821-fd68d65-linux-x64/lib/x64/Release/libwebrtc_full.a: error adding symbols: Malformed archive
    

    If I used previous commit I got

    Linking CXX executable stuntests
    /usr/bin/ld: ~/tmp/webrtcbuilds/out/src/out/x64/Release/obj/third_party/boringssl/boringssl/cpu-intel.o: unrecognized relocation (0x2a) in section `.text.OPENSSL_cpuid_setup'
    /usr/bin/ld: final link failed: Bad value
    collect2: error: ld returned 1 exit status
    make[2]: *** [stun/tests/stuntests] Error 1
    make[1]: *** [stun/tests/CMakeFiles/stuntests.dir/all] Error 2
    make: *** [all] Error 2
    

    May be something wrong with my libc6?

    dpkg -l | grep libc6
    ii  libc6:amd64                           2.19-0ubuntu6.11                      amd64        Embedded GNU C Library: Shared libraries
    ii  libc6-dev:amd64                       2.19-0ubuntu6.11                      amd64        Embedded GNU C Library: Development Libraries and Header Files
    ii  libc6-i386                            2.19-0ubuntu6.11                      amd64        Embedded GNU C Library: 32-bit shared libraries for AMD64
    

    Thanks for any help.

    opened by VladislavSu 11
  • WebRTC troubles

    WebRTC troubles

    Hi! That's not actually an issue, but could you please provide an external repo or just some archive with Debug and Release WebRTC binaries(Visual Studio 2015) that libsourcey could be linked with? Thanks!

    opened by cexcell 11
  • Replacing adapters leads to crash (when overriding `onSocketRecv`)

    Replacing adapters leads to crash (when overriding `onSocketRecv`)

    Hello Kam,

    I've been testing some things with the HTTP module, and so I tried to implement some multi-request connection adapter thingy. The one-time use nature of the current implementation isn't really convenient, especially when dealing with a REST API. Although replacing the default ConnectionAdapter instance with a Websocket adapter works pretty well, this snippet leads to a segfault :

    ClientConnection::Ptr connection = createConnection(u);
    connection->replaceAdapter(new ConnectionAdapter(connection.get(), HTTP_RESPONSE));
    connection->request().setURI("/");
    connection->request().setHost(u.host(), u.port());
    connection->send();
    

    where u is here an instance of URL. I obviously call waitForShutdown so there isn't any destroyed pending operation. I also noticed that this replaceAdapter call is the same as the one in the ClientConnection constructor.

    More details about the crash

    Debugger reported that this is caused by dereferencing a null pointer, occuring in onSocketRecv of some SocketAdapter instance. The ptr member of ref is showed as a null pointer, even though the alive field is true. That means the pointer is deleted somewhere, and the alive flag isn't toggled to false.

    I'm tempted to think that something is broken in the replaceAdapter method, which sounds somewhat weird, mainly because the Websocket adapter is working just fine. I'll do some further investigation, though.

    Note: when run with Valgrind, the crash somehow doesn't seem to happen.

    opened by Malesio 10
  • Cast from pointer to smaller type 'int' loses information

    Cast from pointer to smaller type 'int' loses information

    "In file scy/signal.h:160:26: Cast from pointer to smaller type 'int' loses information".

    From my point of view it's inappropriate conversion for 64bit architecture like this:

    void* empty = 0;
    int value = (int)empty;
    
    opened by sparfenyuk 10
  • MacOS 10.12 compile error

    MacOS 10.12 compile error

    Hi there, I'm trying to build libsourcy on MacOS 10.12 with WEBRTC ON, after changing the FindWebRTC.cmake, Makefile generated successful. Clang genenarated Unsupported platform error, BTW, I used the webrtcbuilds to compile webrtc. Added some #define WEBRTC_POSIX WEBRTC_MAC, error gone. Then comes the following

    In file included from /Users/qulyf/Github/libsourcey/src/webrtc/src/streamrecorder.cpp:12: In file included from /Users/qulyf/Github/libsourcey/src/webrtc/include/scy/webrtc/streamrecorder.h:21: In file included from /Users/qulyf/Github/libsourcey/src/av/include/scy/av/multiplexencoder.h:20: In file included from /Users/qulyf/Github/libsourcey/src/av/include/scy/av/audioencoder.h:21: In file included from /Users/qulyf/Github/libsourcey/src/av/include/scy/av/audiocontext.h:23: In file included from /Users/qulyf/Github/libsourcey/src/av/include/scy/av/fpscounter.h:16: In file included from /Users/qulyf/Github/libsourcey/src/base/include/scy/packetstream.h:19: In file included from /Users/qulyf/Github/libsourcey/src/base/include/scy/memory.h:18: /Users/qulyf/Github/libsourcey/src/base/include/scy/timer.h:52:10: warning: 'start' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] void start(std::function<void()> func); ^ /Users/qulyf/Github/libsourcey/src/base/include/scy/runner.h:44:18: note: overridden virtual function is here virtual void start(std::function<void()> target) = 0; ^ In file included from /Users/qulyf/Github/libsourcey/src/webrtc/src/streamrecorder.cpp:12: In file included from /Users/qulyf/Github/libsourcey/src/webrtc/include/scy/webrtc/streamrecorder.h:21: /Users/qulyf/Github/libsourcey/src/av/include/scy/av/multiplexencoder.h:81:21: warning: 'options' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] EncoderOptions& options(); ^ /Users/qulyf/Github/libsourcey/src/av/include/scy/av/iencoder.h:94:29: note: overridden virtual function is here virtual EncoderOptions& options() = 0; ^ /Users/qulyf/Github/libsourcey/src/webrtc/src/streamrecorder.cpp:92:67: error: no member named 'DataY' in 'webrtc::VideoFrameBuffer' frame->data[0] = (uint8_t*)yuvframe.video_frame_buffer()->DataY(); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ /Users/qulyf/Github/libsourcey/src/webrtc/src/streamrecorder.cpp:93:67: error: no member named 'DataU' in 'webrtc::VideoFrameBuffer' frame->data[1] = (uint8_t*)yuvframe.video_frame_buffer()->DataU(); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ /Users/qulyf/Github/libsourcey/src/webrtc/src/streamrecorder.cpp:94:67: error: no member named 'DataV' in 'webrtc::VideoFrameBuffer' frame->data[2] = (uint8_t*)yuvframe.video_frame_buffer()->DataV(); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ 5 warnings and 3 errors generated. make[2]: *** [webrtc/CMakeFiles/webrtc.dir/src/streamrecorder.cpp.o] Error 1 make[1]: *** [webrtc/CMakeFiles/webrtc.dir/all] Error 2 make: *** [all] Error 2

    Stucked. Any help would be much appreciated. Thanks

    opened by qulyf 8
  • Fatal error in webrtcstreamer sample

    Fatal error in webrtcstreamer sample

    After building the webrtcstreamer example and running it I get the following error from webrtcstreamerd when trying to play the stream:

    [000:209] [32046] (channel.cc:1805): Changing voice state, recv=0 send=1
    
    
    #
    # Fatal error in ../../../webrtc/voice_engine/voe_base_impl.cc, line 91
    # last system error: 0
    # Check failed: 2 * number_of_channels == bytes_per_sample (4 vs. 2)
    # 
    #
    [000:209] [32046] (video_send_stream.cc:665): VideoSendStream::Start
    [000:209] [32068] (video_send_stream.cc:918): VideoSendStream::Start
    [000:209] [32046] (channel.cc:2063): Changing video state, send=1
    [000:210] [32077] (vie_encoder.cc:788): Video suspend state changed to: not suspended
    
    ==== C stack trace ===============================
    
    ./webrtcstreamerd(+0x4d17fb) [0x55e119f937fb]
    ./webrtcstreamerd(+0x9cfb40) [0x55e11a491b40]
    ./webrtcstreamerd(+0x9cff57) [0x55e11a491f57]
    ./webrtcstreamerd(+0xe92f7f) [0x55e11a954f7f]
     5: scy::wrtc::AudioPacketModule::sendFrameP()
     6: scy::wrtc::AudioPacketModule::processFrameP()
     7: scy::wrtc::AudioPacketModule::startProcessP()
     8: scy::wrtc::AudioPacketModule::OnMessage(rtc::Message*)
    ./webrtcstreamerd(+0x4a7030) [0x55e119f69030]
    ./webrtcstreamerd(+0x46fe1a) [0x55e119f31e1a]
    ./webrtcstreamerd(+0x46fd4a) [0x55e119f31d4a]
    ./webrtcstreamerd(+0x46fa97) [0x55e119f31a97]
    /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ca) [0x7f30f7a376ca]
    14: clone
    [1]    32043 abort (core dumped)  ./webrtcstreamerd
    
    opened by jdcc2 8
  • Bump express from 4.13.4 to 4.17.3 in /src/webrtc/samples/webrtccapturer/client

    Bump express from 4.13.4 to 4.17.3 in /src/webrtc/samples/webrtccapturer/client

    Bumps express from 4.13.4 to 4.17.3.

    Release notes

    Sourced from express's releases.

    4.17.3

    4.17.2

    4.17.1

    • Revert "Improve error message for null/undefined to res.status"

    4.17.0

    • Add express.raw to parse bodies into Buffer
    • Add express.text to parse bodies into string

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.17.3 / 2022-02-16

    4.17.2 / 2021-12-16

    4.17.1 / 2019-05-25

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump express from 4.13.4 to 4.17.3 in /src/av/samples/mediaserver/client

    Bump express from 4.13.4 to 4.17.3 in /src/av/samples/mediaserver/client

    Bumps express from 4.13.4 to 4.17.3.

    Release notes

    Sourced from express's releases.

    4.17.3

    4.17.2

    4.17.1

    • Revert "Improve error message for null/undefined to res.status"

    4.17.0

    • Add express.raw to parse bodies into Buffer
    • Add express.text to parse bodies into string

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.17.3 / 2022-02-16

    4.17.2 / 2021-12-16

    4.17.1 / 2019-05-25

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump express from 4.13.4 to 4.17.3 in /src/webrtc/samples/webrtcstreamer/client

    Bump express from 4.13.4 to 4.17.3 in /src/webrtc/samples/webrtcstreamer/client

    Bumps express from 4.13.4 to 4.17.3.

    Release notes

    Sourced from express's releases.

    4.17.3

    4.17.2

    4.17.1

    • Revert "Improve error message for null/undefined to res.status"

    4.17.0

    • Add express.raw to parse bodies into Buffer
    • Add express.text to parse bodies into string

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.17.3 / 2022-02-16

    4.17.2 / 2021-12-16

    4.17.1 / 2019-05-25

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump qs from 4.0.0 to 6.11.0 in /src/av/samples/mediaserver/client

    Bump qs from 4.0.0 to 6.11.0 in /src/av/samples/mediaserver/client

    Bumps qs from 4.0.0 to 6.11.0.

    Changelog

    Sourced from qs's changelog.

    6.11.0

    • [New] [Fix] stringify: revert 0e903c0; add commaRoundTrip option (#442)
    • [readme] fix version badge

    6.10.5

    • [Fix] stringify: with arrayFormat: comma, properly include an explicit [] on a single-item array (#434)

    6.10.4

    • [Fix] stringify: with arrayFormat: comma, include an explicit [] on a single-item array (#441)
    • [meta] use npmignore to autogenerate an npmignore file
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbol, object-inspect, tape

    6.10.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [actions] reuse common workflows
    • [Dev Deps] update eslint, @ljharb/eslint-config, object-inspect, tape

    6.10.2

    • [Fix] stringify: actually fix cyclic references (#426)
    • [Fix] stringify: avoid encoding arrayformat comma when encodeValuesOnly = true (#424)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] add note and links for coercing primitive values (#408)
    • [actions] update codecov uploader
    • [actions] update workflows
    • [Tests] clean up stringify tests slightly
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, object-inspect, safe-publish-latest, tape

    6.10.1

    • [Fix] stringify: avoid exception on repeated object values (#402)

    6.10.0

    • [New] stringify: throw on cycles, instead of an infinite loop (#395, #394, #393)
    • [New] parse: add allowSparse option for collapsing arrays with missing indices (#312)
    • [meta] fix README.md (#399)
    • [meta] only run npm run dist in publish, not install
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbols, tape
    • [Tests] fix tests on node v0.6
    • [Tests] use ljharb/actions/node/install instead of ljharb/actions/node/run
    • [Tests] Revert "[meta] ignore eclint transitive audit warning"

    6.9.7

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] stringify: avoid encoding arrayformat comma when encodeValuesOnly = true (#424)
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] add note and links for coercing primitive values (#408)
    • [Tests] clean up stringify tests slightly
    • [meta] fix README.md (#399)
    • Revert "[meta] ignore eclint transitive audit warning"

    ... (truncated)

    Commits
    • 56763c1 v6.11.0
    • ddd3e29 [readme] fix version badge
    • c313472 [New] [Fix] stringify: revert 0e903c0; add commaRoundTrip option
    • 95bc018 v6.10.5
    • 0e903c0 [Fix] stringify: with arrayFormat: comma, properly include an explicit `[...
    • ba9703c v6.10.4
    • 4e44019 [Fix] stringify: with arrayFormat: comma, include an explicit [] on a s...
    • 113b990 [Dev Deps] update object-inspect
    • c77f38f [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbol, tape
    • 2cf45b2 [meta] use npmignore to autogenerate an npmignore file
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by ljharb, a new releaser for qs since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump qs and express in /src/webrtc/samples/webrtcstreamer/client

    Bump qs and express in /src/webrtc/samples/webrtcstreamer/client

    Bumps qs to 6.11.0 and updates ancestor dependency express. These dependencies need to be updated together.

    Updates qs from 4.0.0 to 6.11.0

    Changelog

    Sourced from qs's changelog.

    6.11.0

    • [New] [Fix] stringify: revert 0e903c0; add commaRoundTrip option (#442)
    • [readme] fix version badge

    6.10.5

    • [Fix] stringify: with arrayFormat: comma, properly include an explicit [] on a single-item array (#434)

    6.10.4

    • [Fix] stringify: with arrayFormat: comma, include an explicit [] on a single-item array (#441)
    • [meta] use npmignore to autogenerate an npmignore file
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbol, object-inspect, tape

    6.10.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [actions] reuse common workflows
    • [Dev Deps] update eslint, @ljharb/eslint-config, object-inspect, tape

    6.10.2

    • [Fix] stringify: actually fix cyclic references (#426)
    • [Fix] stringify: avoid encoding arrayformat comma when encodeValuesOnly = true (#424)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] add note and links for coercing primitive values (#408)
    • [actions] update codecov uploader
    • [actions] update workflows
    • [Tests] clean up stringify tests slightly
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, object-inspect, safe-publish-latest, tape

    6.10.1

    • [Fix] stringify: avoid exception on repeated object values (#402)

    6.10.0

    • [New] stringify: throw on cycles, instead of an infinite loop (#395, #394, #393)
    • [New] parse: add allowSparse option for collapsing arrays with missing indices (#312)
    • [meta] fix README.md (#399)
    • [meta] only run npm run dist in publish, not install
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbols, tape
    • [Tests] fix tests on node v0.6
    • [Tests] use ljharb/actions/node/install instead of ljharb/actions/node/run
    • [Tests] Revert "[meta] ignore eclint transitive audit warning"

    6.9.7

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] stringify: avoid encoding arrayformat comma when encodeValuesOnly = true (#424)
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] add note and links for coercing primitive values (#408)
    • [Tests] clean up stringify tests slightly
    • [meta] fix README.md (#399)
    • Revert "[meta] ignore eclint transitive audit warning"

    ... (truncated)

    Commits
    • 56763c1 v6.11.0
    • ddd3e29 [readme] fix version badge
    • c313472 [New] [Fix] stringify: revert 0e903c0; add commaRoundTrip option
    • 95bc018 v6.10.5
    • 0e903c0 [Fix] stringify: with arrayFormat: comma, properly include an explicit `[...
    • ba9703c v6.10.4
    • 4e44019 [Fix] stringify: with arrayFormat: comma, include an explicit [] on a s...
    • 113b990 [Dev Deps] update object-inspect
    • c77f38f [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbol, tape
    • 2cf45b2 [meta] use npmignore to autogenerate an npmignore file
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by ljharb, a new releaser for qs since your current version.


    Updates express from 4.13.4 to 4.18.2

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump qs and express in /src/webrtc/samples/webrtccapturer/client

    Bump qs and express in /src/webrtc/samples/webrtccapturer/client

    Bumps qs to 6.11.0 and updates ancestor dependency express. These dependencies need to be updated together.

    Updates qs from 4.0.0 to 6.11.0

    Changelog

    Sourced from qs's changelog.

    6.11.0

    • [New] [Fix] stringify: revert 0e903c0; add commaRoundTrip option (#442)
    • [readme] fix version badge

    6.10.5

    • [Fix] stringify: with arrayFormat: comma, properly include an explicit [] on a single-item array (#434)

    6.10.4

    • [Fix] stringify: with arrayFormat: comma, include an explicit [] on a single-item array (#441)
    • [meta] use npmignore to autogenerate an npmignore file
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbol, object-inspect, tape

    6.10.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [actions] reuse common workflows
    • [Dev Deps] update eslint, @ljharb/eslint-config, object-inspect, tape

    6.10.2

    • [Fix] stringify: actually fix cyclic references (#426)
    • [Fix] stringify: avoid encoding arrayformat comma when encodeValuesOnly = true (#424)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] add note and links for coercing primitive values (#408)
    • [actions] update codecov uploader
    • [actions] update workflows
    • [Tests] clean up stringify tests slightly
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, object-inspect, safe-publish-latest, tape

    6.10.1

    • [Fix] stringify: avoid exception on repeated object values (#402)

    6.10.0

    • [New] stringify: throw on cycles, instead of an infinite loop (#395, #394, #393)
    • [New] parse: add allowSparse option for collapsing arrays with missing indices (#312)
    • [meta] fix README.md (#399)
    • [meta] only run npm run dist in publish, not install
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbols, tape
    • [Tests] fix tests on node v0.6
    • [Tests] use ljharb/actions/node/install instead of ljharb/actions/node/run
    • [Tests] Revert "[meta] ignore eclint transitive audit warning"

    6.9.7

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] stringify: avoid encoding arrayformat comma when encodeValuesOnly = true (#424)
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] add note and links for coercing primitive values (#408)
    • [Tests] clean up stringify tests slightly
    • [meta] fix README.md (#399)
    • Revert "[meta] ignore eclint transitive audit warning"

    ... (truncated)

    Commits
    • 56763c1 v6.11.0
    • ddd3e29 [readme] fix version badge
    • c313472 [New] [Fix] stringify: revert 0e903c0; add commaRoundTrip option
    • 95bc018 v6.10.5
    • 0e903c0 [Fix] stringify: with arrayFormat: comma, properly include an explicit `[...
    • ba9703c v6.10.4
    • 4e44019 [Fix] stringify: with arrayFormat: comma, include an explicit [] on a s...
    • 113b990 [Dev Deps] update object-inspect
    • c77f38f [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbol, tape
    • 2cf45b2 [meta] use npmignore to autogenerate an npmignore file
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by ljharb, a new releaser for qs since your current version.


    Updates express from 4.13.4 to 4.18.2

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
KoanLogic 400 Dec 25, 2022
EASTL stands for Electronic Arts Standard Template Library. It is an extensive and robust implementation that has an emphasis on high performance.

EA Standard Template Library EASTL stands for Electronic Arts Standard Template Library. It is a C++ template library of containers, algorithms, and i

Electronic Arts 6.9k Jan 3, 2023
C++ Parallel Computing and Asynchronous Networking Engine

As Sogou`s C++ server engine, Sogou C++ Workflow supports almost all back-end C++ online services of Sogou, including all search services, cloud input method,online advertisements, etc., handling more than 10 billion requests every day. This is an enterprise-level programming engine in light and elegant design which can satisfy most C++ back-end development requirements.

Sogou-inc 9.7k Dec 26, 2022
A collection of single-file C libraries. (generic containers, random number generation, argument parsing and other functionalities)

cauldron A collection of single-file C libraries and tools with the goal to be portable and modifiable. Libraries library description arena-allocator.

Camel Coder 40 Dec 29, 2022
Abseil Common Libraries (C++)

Abseil - C++ Common Libraries The repository contains the Abseil C++ library code. Abseil is an open-source collection of C++ code (compliant to C++11

Abseil 11.5k Jan 8, 2023
Basic Development Environment - a set of foundational C++ libraries used at Bloomberg.

BDE Libraries This repository contains the BDE libraries, currently BSL (Basic Standard Library), BDL (Basic Development Library), BAL (Basic Applicat

Bloomberg 1.4k Dec 29, 2022
stb single-file public domain libraries for C/C++

stb single-file public domain (or MIT licensed) libraries for C/C++ Noteworthy: image loader: stb_image.h image writer: stb_image_write.h image resize

Sean Barrett 20.7k Dec 30, 2022
JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.

JUCE is an open-source cross-platform C++ application framework used for rapidly developing high quality desktop and mobile applications, including VS

JUCE 4.7k Jan 1, 2023
A toolkit for making real world machine learning and data analysis applications in C++

dlib C++ library Dlib is a modern C++ toolkit containing machine learning algorithms and tools for creating complex software in C++ to solve real worl

Davis E. King 11.6k Jan 5, 2023
hypertextcpp - is a hyperfast HTML templating system for C++ applications.

It provides a highly readable .htcpp template file format and a command line utility that transpiles it to C++ HTML rendering code. Include a generated C++ header file in your project, then setup a build system to update it when necessary, and you're all set.

null 28 Oct 18, 2022
An open-source C++ library developed and used at Facebook.

Folly: Facebook Open-source Library What is folly? Folly (acronymed loosely after Facebook Open Source Library) is a library of C++14 components desig

Facebook 24k Jan 1, 2023
Functional Programming Library for C++. Write concise and readable C++ code.

FunctionalPlus helps you write concise and readable C++ code. Table of contents Introduction Usage examples Type deduction and useful error messages T

Tobias Hermann 1.7k Dec 29, 2022
Easy to use, header only, macro generated, generic and type-safe Data Structures in C

C Macro Collections Easy to use, header only, macro generated, generic and type-safe Data Structures in C. Table of Contents Installation Contributing

Leonardo Vencovsky 345 Jan 5, 2023
Idle is an asynchronous and hot-reloadable C++ dynamic component framework

Idle is an asynchronous, hot-reloadable, and highly reactive dynamic component framework similar to OSGI that is: ?? Modular: Your program logic is en

Denis Blank 173 Dec 7, 2022
TengineGst is a streaming media analytics framework, based on GStreamer multimedia framework, for creating varied complex media analytics pipelines.

TengineGst is a streaming media analytics framework, based on GStreamer multimedia framework, for creating varied complex media analytics pipelines. It ensures pipeline interoperability and provides optimized media, and inference operations using Tengine Toolkit Inference Engine backend, across varied architecture - CPU, iGPU and VPU.

OAID 69 Dec 17, 2022
Kodi is an award-winning free and open source software media player and entertainment hub for digital media

website • docs • community • add-ons Welcome to Kodi Home Theater Software! Kodi is an award-winning free and open source software media player and en

Team Kodi 15k Jan 2, 2023
Smartstreaming is a high-performance and scalable streaming media server.

1. introduction Smartstreaming is a high-performance and scalable streaming media server. 2. design | io | Coroutine | | transport | tcp/udp/srt/quic

null 2 Jan 7, 2022
Visualization Library is a C++ middleware for high-performance 2D and 3D graphics applications based on OpenGL 1.x-4.x supporting Windows, Linux and Mac OS X.

Visualization Library 2.2 Gallery About Visualization Library is a C++ middleware for high-performance 2D and 3D graphics applications based on the in

Michele 313 Nov 8, 2022
WAFer is a C language-based software platform for scalable server-side and networking applications. Think node.js for C programmers.

WAFer WAFer is a C language-based ultra-light scalable server-side web applications framework. Think node.js for C programmers. Because it's written i

Riolet Corporation 693 Dec 6, 2022
WAFer is a C language-based software platform for scalable server-side and networking applications. Think node.js for C programmers.

WAFer WAFer is a C language-based ultra-light scalable server-side web applications framework. Think node.js for C programmers. Because it's written i

Riolet Corporation 693 Dec 6, 2022