Pear - WebRTC Toolkit for IoT/Embedded Device

Overview

Pear - WebRTC Toolkit for IoT/Embedded Device

pear-ci

Pear is a WebRTC SDK written in C. The SDK aims to integrate IoT/Embedded device with WebRTC applications.

Notice: This project is a work in progress. Currently, only support streaming H264 video to browser.

Dependencies

Getting Started

# sudo apt -y install libglib2.0-dev libssl-dev git cmake ninja-build
# sudo pip3 install meson
# git clone --recursive https://github.com/sepfy/pear
# ./build-third-party.sh
# mkdir cmake
# cd cmake
# cmake ..
# make

Examples

This example is tested on Raspberry Pi zero W with image 2021-01-11-raspios-buster-armhf-lite.img

  1. Open index.html with browser in your computer
  2. Copy textarea content to remote_sdp.txt
  3. Download test video file
  4. Run local file sample. (Please ensure that remote_sdp.txt and test.264 in the same directory)
./cmake/examples/local_file/local_file
  1. Copy base64 sdp answer to browser.
  2. Click start session.

You will see the video on your browser.

Issues
  • PIPE LINE doesn't work well on VM ubuntu

    PIPE LINE doesn't work well on VM ubuntu

    Hello @sepfy !

    i run the example surveillance at my vm ubuntu. The "PIPE_LINE" doesn't work. i google some other command and still not work well. i don't familiar with gstreamer comand. could you provide an comand which can work well ?

    thanks Robert

    opened by robertqd 3
  • run local_file issues

    run local_file issues

    I don't know how to use the local_file example, and after running it, it prints the following:

    eyJ0eXBlIjogImFuc3dlciIsICJzZHAiOiAidj0wXHJcbm89LSAxNDk1Nzk5ODExMDg0OTcwIDE0OTU3OTk4MTEwODQ5NzAgSU4gSVA0IDAuMC4wLjBcclxucz1TdHJlYW1pbmcgVGVzdFxyXG50PTAgMFxyXG5hPWdyb3VwOkJVTkRMRSAwXHJcbmE9bXNpZC1zZW1hbnRpYzogcGVhclxyXG5tPXZpZGVvIDkgVURQL1RMUy9SVFAvU0FWUEYgMTAyXHJcbmM9SU4gSVA0IDAuMC4wLjBcclxuYT1zZW5kb25seVxyXG5hPW1pZDowXHJcbmE9cnRjcC1tdXhcclxuYT1pY2UtdWZyYWc6UXlGMVxyXG5hPWljZS1wd2Q6R3FVTHhHdTBLWU4yNGZtQk4xUVFEZ1xyXG5hPWljZS1vcHRpb25zOnRyaWNrbGVcclxuYT1maW5nZXJwcmludDpzaGEtMjU2IEE0OkU2Ojg4OkYzOjlBOkI2OjBFOkRFOkQ2OjM5Ojc5OkQxOjBEOjY5Ojc3OjAwOjc5OkE1OjE0OkFCOjczOkNEOkU3OjdCOjc0OkU4OkU2OjJDOjMzOkYwOjhEOjQ5XHJcbmE9c2V0dXA6cGFzc2l2ZVxyXG5hPXJ0cG1hcDoxMDIgSDI2NC85MDAwMFxyXG5hPWZtdHA6MTAyIHBhY2tldGl6YXRpb24tbW9kZT0xXHJcbmE9cnRjcC1mYjoxMDIgbmFja1xyXG5hPXJ0Y3AtZmI6MTAyIG5hY2sgcGxpXHJcbmE9cnRjcC1mYjoxMDIgZ29vZy1yZW1iXHJcbmE9Y2FuZGlkYXRlOjEgMSB1ZHAgMjAxNTM2MzMyNyAxMC4xMS4xNy4xNjcgMzM4MjAgdHlwIGhvc3RcclxuYT1jYW5kaWRhdGU6MiAxIHVkcCAxMDE1MDIxODIzIDEwLjExLjE3LjE2NyAwIHR5cCBob3N0XHJcbmE9Y2FuZGlkYXRlOjMgMSB1ZHAgMTAxMDgyNzUxOSAxMC4xMS4xNy4xNjcgNDIyMTUgdHlwIGhvc3RcclxuYT1jYW5kaWRhdGU6NyAxIHVkcCAxNjc5ODE5MDA3IDU4LjI1MC4yMy4xOTQgMzM4MjAgdHlwIHNyZmx4XHJcbmE9Y2FuZGlkYXRlOjggMSB1ZHAgODQ3MjQ5NjYzIDU4LjI1MC4yMy4xOTQgMCB0eXAgc3JmbHhcclxuYT1jYW5kaWRhdGU6OSAxIHVkcCA4NDMwNTUzNTkgNTguMjUwLjIzLjE5NCA0MjIxNSB0eXAgc3JmbHhcclxuIn0=

    ** (process:18272): WARNING **: 19:56:49.715: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 5 seconds

    ** (process:18272): WARNING **: 19:56:49.715: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 5 seconds

    ** (process:18272): WARNING **: 19:57:00.295: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 10 seconds

    ** (process:18272): WARNING **: 19:57:00.295: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 10 seconds

    ** (process:18272): WARNING **: 19:57:15.297: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 20 seconds

    ** (process:18272): WARNING **: 19:57:15.297: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 20 seconds

    ** (process:18272): WARNING **: 19:57:40.297: Maximum number of retries failed, not trying again

    ** (process:18272): WARNING **: 19:57:40.297: Maximum number of retries failed, not trying again

    opened by lbit20131014-berry 3
  • Memory Leak on the gstreamer example

    Memory Leak on the gstreamer example

    When running the gstreamer example on a Pi Zero W , I noticed that the application was slowly but surely increasing it's memory usage, from around 7% as displayed on the top command, to around 70% when the PI crashed after 15 minutes or so. The fix is very simple, you need to unmap the gst buffer once you are done with it.

    I've opened a PR https://github.com/sepfy/pear/pull/9

    opened by icemanaf 1
  • fix crash due to misinitialization of PeerConnection

    fix crash due to misinitialization of PeerConnection

    If PeerConnection is not zeroed upon creation checking for its field to NULL is meaningless (as fields contain garbage) and leads to sigsegvs. For example this happens in peer_connection_ice_recv_cb:

        if(pc->ontrack != NULL) {
          pc->ontrack(buf, len, pc->ontrack_userdata);
        }
    

    This PR contains hotfix for this problem.

    opened by aldoshkind 0
  • docs: fix simple typo, exhange -> exchange

    docs: fix simple typo, exhange -> exchange

    There is a small typo in README.md.

    Should read exchange rather than exhange.

    Semi-automated pull request generated by https://github.com/timgates42/meticulous/blob/master/docs/NOTE.md

    opened by timgates42 0
  • Working over TURN

    Working over TURN

    Hello @sepfy ! I am trying to use Pear to work over TURN server. I use Coturn but unable to make it work. Do you have any experience with this? Maybe you have example? Thanks!

    opened by aldoshkin 1
  • The P2P can be established,but the video not display on chrome browse

    The P2P can be established,but the video not display on chrome browse

    Hi @sepfy could you help me? The description as follown: one termination is chrome(chrome/100.0.4896.127), another termiation is that pear was run at ubuntu on virtual machine. The P2P has been established. we can see the video data can be sent frome pear to chrome from wireshark. but the video doesn't display on chrome.
    the sdp offer: :48 createOfferOnSuccess (type: "offer", 2 sections) Copy description to clipboard v=0 (6 more lines) o=- 8752117117835402785 2 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE 0 a=extmap-allow-mixed a=msid-semantic: WMS m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127 121 125 107 108 109 124 120 123 119 35 36 41 42 114 115 116 117 118 (133 more lines) mid=0 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:jnf4 a=ice-pwd:bd90gvRbdL46FjqTu3AQ/EqY a=ice-options:trickle a=fingerprint:sha-256 1D:D5:DB:DB:D7:CA:B8:AA:7F:61:9A:74:0E:04:50:EE:41:5C:21:DB:42:B2:98:3F:4D:4F:91:5B:7B:B8:71:35 a=setup:actpass a=mid:0 a=extmap:1 urn:ietf:params:rtp-hdrext:toffset a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:3 urn:3gpp:video-orientation a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=sendrecv a=msid:- 4c46546f-7651-420e-b1af-8754bd3ea3ad a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 VP9/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 profile-id=2 a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:127 H264/90000 a=rtcp-fb:127 goog-remb a=rtcp-fb:127 transport-cc a=rtcp-fb:127 ccm fir a=rtcp-fb:127 nack a=rtcp-fb:127 nack pli a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:121 rtx/90000 a=fmtp:121 apt=127 a=rtpmap:125 H264/90000 a=rtcp-fb:125 goog-remb a=rtcp-fb:125 transport-cc a=rtcp-fb:125 ccm fir a=rtcp-fb:125 nack a=rtcp-fb:125 nack pli a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:107 rtx/90000 a=fmtp:107 apt=125 a=rtpmap:108 H264/90000 a=rtcp-fb:108 goog-remb a=rtcp-fb:108 transport-cc a=rtcp-fb:108 ccm fir a=rtcp-fb:108 nack a=rtcp-fb:108 nack pli a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:109 rtx/90000 a=fmtp:109 apt=108 a=rtpmap:124 H264/90000 a=rtcp-fb:124 goog-remb a=rtcp-fb:124 transport-cc a=rtcp-fb:124 ccm fir a=rtcp-fb:124 nack a=rtcp-fb:124 nack pli a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=124 a=rtpmap:123 H264/90000 a=rtcp-fb:123 goog-remb a=rtcp-fb:123 transport-cc a=rtcp-fb:123 ccm fir a=rtcp-fb:123 nack a=rtcp-fb:123 nack pli a=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f a=rtpmap:119 rtx/90000 a=fmtp:119 apt=123 a=rtpmap:35 H264/90000 a=rtcp-fb:35 goog-remb a=rtcp-fb:35 transport-cc a=rtcp-fb:35 ccm fir a=rtcp-fb:35 nack a=rtcp-fb:35 nack pli a=fmtp:35 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f a=rtpmap:36 rtx/90000 a=fmtp:36 apt=35 a=rtpmap:41 AV1/90000 a=rtcp-fb:41 goog-remb a=rtcp-fb:41 transport-cc a=rtcp-fb:41 ccm fir a=rtcp-fb:41 nack a=rtcp-fb:41 nack pli a=rtpmap:42 rtx/90000 a=fmtp:42 apt=41 a=rtpmap:114 H264/90000 a=rtcp-fb:114 goog-remb a=rtcp-fb:114 transport-cc a=rtcp-fb:114 ccm fir a=rtcp-fb:114 nack a=rtcp-fb:114 nack pli a=fmtp:114 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f a=rtpmap:115 rtx/90000 a=fmtp:115 apt=114 a=rtpmap:116 red/90000 a=rtpmap:117 rtx/90000 a=fmtp:117 apt=116 a=rtpmap:118 ulpfec/90000 a=ssrc-group:FID 2322705154 2857601720 a=ssrc:2322705154 cname:ZmMkzc9v9XyhMLOi a=ssrc:2322705154 msid:- 4c46546f-7651-420e-b1af-8754bd3ea3ad a=ssrc:2322705154 mslabel:- a=ssrc:2322705154 label:4c46546f-7651-420e-b1af-8754bd3ea3ad a=ssrc:2857601720 cname:ZmMkzc9v9XyhMLOi a=ssrc:2857601720 msid:- 4c46546f-7651-420e-b1af-8754bd3ea3ad a=ssrc:2857601720 mslabel:- a=ssrc:2857601720 label:4c46546f-7651-420e-b1af-8754bd3ea3ad

    the sdp answer: setRemoteDescription (type: "answer", 2 sections) Copy description to clipboard v=0 (5 more lines) o=- 1495799811084970 1495799811084970 IN IP4 0.0.0.0 s=- t=0 0 a=msid-semantic: WMS a=group:BUNDLE 0 m=video 9 UDP/TLS/RTP/SAVPF 127 121 (24 more lines) mid=0 a=rtpmap:127 H264/90000 a=rtcp-fb:127 goog-remb a=rtcp-fb:127 transport-cc a=rtcp-fb:127 com fir a=rtcp-fb:127 nack a=rtcp-fb:127 nack pli a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:121 rtx/90000 a=fmtp:121 apt=127 c=IN IP4 0.0.0.0 a=sendonly a=mid:0 a=rtcp-mux a=ice-ufrag:iBLd a=ice-pwd:s31NZ3bzksBs3+DvMAvko9 a=ice-options:trickle a=fingerprint:sha-256 52:CB:F9:3D:51:E0:9A:94:EC:01:86:F5:11:90:17:05:C3:42:ED:A5:41:27:E2:EA:8A:B1:AC:29:BC:2F:19:C4 a=setup:passive a=candidate:1 1 udp 2015363327 192.168.119.128 58364 typ host a=candidate:2 1 udp 1015021823 192.168.119.128 0 typ host a=candidate:3 1 udp 1010827519 192.168.119.128 58373 typ host a=candidate:7 1 udp 1679819007 183.134.94.123 59217 typ srflx a=candidate:8 1 udp 847249663 183.134.94.123 0 typ srflx a=candidate:9 1 udp 843055359 183.134.94.123 58373 typ srflx

    chrome webrtc internal debug: image

    opened by robertqd 5
  • Stack corruption if rtp packet size is 1400

    Stack corruption if rtp packet size is 1400

    Hi @sepfy ! I found an issue in surveillance example which possibly affects overall pear usage. Default mtu size of rtph264pay is 1400 url RTP packet buffer size is 1400 also url peer_connection_send_rtp_packet uses srtp_protect inside, which writes outside of provided buffer, which leads to stack corruption: note in libsrtp docs. I think to avoid this the only option is to inreased buffer size, but I cannot deduce how huge it should be. Please review this problem.

    opened by aldoshkind 1
  • STUN server address and working without STUN at all

    STUN server address and working without STUN at all

    Hello @sepfy ! In peer_connection.c I see following:

    static const gchar *STUN_ADDR = "18.191.223.12";
    static const guint STUN_PORT = 3478;
    

    What is this server? It takes approx 20 seconds to establish connection when I use these settings. If I use stun.l.google.com:19302 instead connection gets established in a second.

    And what about working in local isolated network? How to set everything up correctly? What STUN server settings shoul I use? Is it possible to avoid using STUN server?

    opened by aldoshkind 3
  • recording example receives/records nothing

    recording example receives/records nothing

    Browser asks to select screencast capture source, I choose one to share. In console it prints just:

    Listening 0.0.0.0:8000
    

    No file gets created in the directory of executable (CWD). Tested both with google-chrome and chromium with the same result.

    opened by AleXoundOS 10
SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

ossrs 18.4k Jun 23, 2022
webrtc c++ library for mediasoup with full sfu c++ demo

项目说明: 本项目是基于mediasoup v3 版本 webrtc m84版本 的sfu的js版本修改成的c++版本,支持和js版本一样的完整demo功能,但是本项目是直接把worker进程代码集成 到了demo可以直接代码级别的调用,支持VC2019,xcode,CLion的开发环境,可以直接断

null 96 Jun 19, 2022
yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.

YangWebrtc Overview yangwebrtc是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 支持视频会议、高清录播直播、直播互动等多种视音频应用。 可用于远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用

null 287 Jun 23, 2022
media server based on c++11, support webrtc/rtmp/httpflv/websocket flv

cpp_media_server A media server is writen by C++11, and the network io is writen by Boost.Asio. It support rtmp/httpflv/websocket(flv)/webrtc. preinst

Alex.CR 137 Jun 26, 2022
Yangwebrtc - Webrtc Libary for PC, non-google lib

MetaRTC(yangwebrtc) Overview MetaRTC(yangwebrtc)是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 yangwebrtc为PC版本 metaRTC为嵌入式版本 https://github.com/metar

meta 287 Jun 23, 2022
Enabling services on your device 66 Jun 23, 2022
Simple useful interoperability tests for WebRTC libraries. If you are a WebRTC library developer we'd love to include you!

Overview This project aims to be a convenient location for WebRTC library developers to perform interoperability tests. Who can Participate The projec

Aaron Clauson 91 Jun 22, 2022
OvenMediaEngine (OME) is a Streaming Server for Sub-Second Latency. It supports WebRTC, RTMP, SRT, MPEG-2 TS, RTSP as input, WebRTC, LL-DASH, MPEG-DASH, HLS as output.

OvenMediaEngine (OME) is a Streaming Server for Sub-Second Latency. It supports WebRTC, RTMP, SRT, MPEG-2 TS, RTSP as input, WebRTC, LL-DASH, MPEG-DASH, HLS as output.

AirenSoft 1.5k Jun 21, 2022
Espressif IoT Library. IoT Device Drivers, Documentations And Solutions.

Espressif IoT Library. IoT Device Drivers, Documentations And Solutions.

Espressif Systems 1.2k Jun 29, 2022
IoT for Beginners - 12 Weeks, 24 Lessons, IoT for All!

Azure Cloud Advocates at Microsoft are pleased to offer a 12-week, 24-lesson curriculum all about IoT basics. Each lesson includes pre- and post-lesson quizzes, written instructions to complete the lesson, a solution, an assignment and more. Our project-based pedagogy allows you to learn while building, a proven way for new skills to 'stick'.

Microsoft 10.3k Jun 23, 2022
Iot-Surveillance-Car - This is a IOT Based Surveillance Car which can be controlled, tracked globally as well as its data can be accessed globally

Iot-Surveillance-Car - This is a IOT Based Surveillance Car which can be controlled, tracked globally as well as its data can be accessed globally. The camera on the front of the car can also be monitored globally. It can go anywhere where sim connection is available. 5th Sem Mini project

Rahul Vijan 3 Feb 19, 2022
Hyelicht is an IoT/embedded project for home decoration/automation.

Hyelicht is an IoT/embedded project for home decoration/automation. Its software allows you to do colorful painting and animations on a LED-b

Eike Hein 7 Jan 17, 2022
BMI_automatics-faceshielding-device - this is a project utilizing STM32, MATLAB,Softmax classifier to achieve a portable face shielding(mask) device

BMI_automatics-faceshielding-device this is a project utilizing STM32, MATLAB,Softmax classifier to achieve a portable face shielding(mask) device in

Lyu Tian 2 Dec 23, 2021
SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

ossrs 18.4k Jun 23, 2022
webrtc c++ library for mediasoup with full sfu c++ demo

项目说明: 本项目是基于mediasoup v3 版本 webrtc m84版本 的sfu的js版本修改成的c++版本,支持和js版本一样的完整demo功能,但是本项目是直接把worker进程代码集成 到了demo可以直接代码级别的调用,支持VC2019,xcode,CLion的开发环境,可以直接断

null 96 Jun 19, 2022
yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.

YangWebrtc Overview yangwebrtc是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 支持视频会议、高清录播直播、直播互动等多种视音频应用。 可用于远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用

null 287 Jun 23, 2022
media server based on c++11, support webrtc/rtmp/httpflv/websocket flv

cpp_media_server A media server is writen by C++11, and the network io is writen by Boost.Asio. It support rtmp/httpflv/websocket(flv)/webrtc. preinst

Alex.CR 137 Jun 26, 2022
Share PC desktop to Raspberry Pi with WebRTC

Share PC desktop to Raspberry Pi with WebRTC

null 31 May 22, 2022
Yangwebrtc - Webrtc Libary for PC, non-google lib

MetaRTC(yangwebrtc) Overview MetaRTC(yangwebrtc)是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 yangwebrtc为PC版本 metaRTC为嵌入式版本 https://github.com/metar

meta 287 Jun 23, 2022
Microsoft Cognitive Toolkit (CNTK), an open source deep-learning toolkit

CNTK Chat Windows build status Linux build status The Microsoft Cognitive Toolkit (https://cntk.ai) is a unified deep learning toolkit that describes

Microsoft 17.2k Jun 24, 2022
Lite.AI.ToolKit 🚀🚀🌟: A lite C++ toolkit of awesome AI models such as RobustVideoMatting🔥, YOLOX🔥, YOLOP🔥 etc.

Lite.AI.ToolKit ?? ?? ?? : A lite C++ toolkit of awesome AI models which contains 70+ models now. It's a collection of personal interests. Such as RVM, YOLOX, YOLOP, YOLOR, YoloV5, DeepLabV3, ArcFace, etc.

DefTruth 1.7k Jun 27, 2022
Zenotech 7 Nov 13, 2020
Insight Toolkit (ITK) is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration

ITK: The Insight Toolkit C++ Python Linux macOS Windows Linux (Code coverage) Links Homepage Download Discussion Software Guide Help Examples Issue tr

Insight Software Consortium 1k Jun 26, 2022
Microsoft Cognitive Toolkit (CNTK), an open source deep-learning toolkit

The Microsoft Cognitive Toolkit is a unified deep learning toolkit that describes neural networks as a series of computational steps via a directed graph.

Microsoft 17.2k Jun 26, 2022
DeepSpeech is an open source embedded (offline, on-device) speech-to-text engine which can run in real time on devices ranging from a Raspberry Pi 4 to high power GPU servers.

Project DeepSpeech DeepSpeech is an open-source Speech-To-Text engine, using a model trained by machine learning techniques based on Baidu's Deep Spee

Mozilla 19.8k Jun 28, 2022
VNOpenAI 22 Jun 15, 2022
SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications

SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++, and JavaScript.

SixtyFPS 4.6k Jun 22, 2022
Mongoose Embedded Web Server Library - a multi-protocol embedded networking library with TCP/UDP, HTTP, WebSocket, MQTT built-in protocols, async DNS resolver, and non-blocking API.

Mongoose - Embedded Web Server / Embedded Networking Library Mongoose is a networking library for C/C++. It implements event-driven non-blocking APIs

Cesanta Software 8.5k Jun 29, 2022
A place to collaborate on code for the Embedded.fm book club. Currently reading "STM32 ARM Programming for Embedded Systems".

Welcome to the Book Club Code site! This is a place for the Embedded.fm book club to collaborate and learn together. Repo Structure Guide Top-level fo

Peter Griffin 10 Jan 13, 2022