summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS2
-rw-r--r--COPYING23
-rw-r--r--LICENSE21
-rw-r--r--README115
4 files changed, 57 insertions, 104 deletions
diff --git a/AUTHORS b/AUTHORS
index 62e02f6..120ce43 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1 +1 @@
-liburtc is written and maintained by Chris Hiszpanski <chris@hiszpanski.name>.
+Chris Hiszpanski <chris@liburtc.org>
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..3633198
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,23 @@
+Copyright (c) 2019-2021 Chris Hiszpanski. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGE.
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index eff0eb0..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright 2019-2021 Chris Hiszpanski
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/README b/README
index 3a0833e..7bbc317 100644
--- a/README
+++ b/README
@@ -1,16 +1,17 @@
-liburtc
-=======
+INTRODUCTION
-Real-time communication for microcontrollers
+liburtc is a small-footprint WebRTC native stack for embedded devices, such as
+IP cameras.
-The WebRTC reference implementation was designed for web browsers, namely
-Chromium. It requires specialized build tools, over 10GB of disk space for
-source code, and produces a binary with a large footprint. liburtc, on the
-other hand, is designed with the following goals in mind:
+Google's WebRTC reference implementation was designed for web browsers, namely
+Chromium. It requires specialized Google build tools (i.e. Bazel), over 10GB of
+disk space for the source code alone, resulting in a large binary tens of
+megabytes in size. liburtc, on the other hand, is designed with the following
+goals in mind:
* Small footprint. Under 100KB.
-* Portable. Implemented in C (C99) and works on nearly any architecture and
- POSIX.1-2001 compliant operating system.
+* Portable. Implemented in C (C99) to work on nearly any architecture,
+ POSIX.1-2001 compliant operating system, and environment.
* Easy to use. Straight-forward to compile and integrate into your code.
* Standards compliant. Adheres to IETF specs to ensure interoperability.
* Minimal. Only implements subset of protocols required for basic functionality
@@ -18,92 +19,42 @@ other hand, is designed with the following goals in mind:
* Minimal dependencies. Only dependency is OpenSSL.
-Bootstrapping
--------------
+WHAT IS WEBRTC?
-If checking out this code via `git`, run `autoconf` to generate a `configure`
-script.
+In a nutshell, it is a Voice-over-IP videophone that can be actuated via
+Javascript (i.e. RTCPeerConnection API). It is a the only form of real-time
+communication (< 300ms end-to-end latency) ubiquitously supported by web
+browsers.
+For example, liburtc enables a web browser to view video from an IP camera
+with sub-300ms latency over wide-area networks. It also supports bi-directional
+audio and data, for instance for a smart cameras or teleoperated devices.
-Quickstart
-----------
-To compile the library and usage example from source, you will need autoconf,
-automake, and libtool. Use `autogen.sh` to create a `configure` script for
-configuring and making the library:
-
- ./autogen.sh && ./configure && make
-
-To test the library:
-
- make check
-
-Next, see `example/README.md` for running a demo.
-
-
-Features
---------
+BOOTSTRAPPING
-- Autotools based build process
-- POSIX.1-2001 compliant implementation
+If checking out this code via git, you first need to generate a 'configure'
+script:
-/ sdp
-/ stun client
-- ice agent (state machine)
- - aes cbc encipher / decipher (openssl)
-- v4l2
-- libx264
-- libopus
-- dtls (openssl?)
-- srtp
+ ./autogen.sh
-- ANSI C compliant implementation (C99)
-- BSD sockets (winsock not supported)
-- Session Description Protocol (SDP)
- - SHA-256 certificate fingerprint
-
-- Interactive Connectivity Establishment (ICE) agent
- - STUN: RFC 5389 compliant client (no server capability)
- - TURN: RFC 5766 compliant client (no server capability)
-
-- DTLS-SRTP transport
- - RFC 5764 compliant implementation (using OpenSSL)
-
-- Video codecs:
- - H.264
- - Profiles: baseline, constrained baseline, main, high
- - Levels: 3.1 and up
- - H.265 not supported (few, if any, browsers support this)
- - VP8/9 not supported (few embedded devices support this)
-
-- Video sources:
- - Video4Linux2
- - USB Video Class
-
-- Audio codecs:
- - G.711
- - Opus
-
-- Audio sources:
- - ALSA
- - PulseAudio
+QUICKSTART
+To compile the library and usage example from source, you will need autoconf,
+automake, and libtool. Then:
-Possible Future Improvements
-----------------------------
+ ./configure && make
-- seamless handoff between network interfaces (e.g. cellular and wifi)
+To test the library:
-Notes
------
+ make check
-- A thread is used per peer connection. Each thread asynchronously handles
- i/o events.
+Next, see 'example/README.md' for running a demo.
-Credits
--------
+CONCURRENCY MODEL
-- Diego Elio Petteno (https://autotools.io) for the wonderful resource on
- autoconf, automake, libtool, and other tools in the autotools suite.
+A new thread is used for each peer connection. All network i/o and timer events
+related to the peer connection are then processed via a select/poll/epoll event
+loop on the thread.