Skip to content

meetecho/imquic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

138 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

imquic

imquic is an open source QUIC library designed and developed by Meetecho for the specific purpose of experimenting with QUIC-based multimedia applications. While it can be used as a generic QUIC (and WebTransport) library, it also comes with experimental native RTP Over QUIC (RoQ) and Media Over QUIC (MoQ) support. At the time of writing, there's no support for HTTP/3 beyond the simple establishment of WebTransport connections. The QUIC foundation is provided by picoquic.

For more information and documentations, make sure you pay the project website a visit!

Note well: in its current stage, the library should be considered at an alpha stage, and very experimental. It is currently being used by Meetecho for prototyping RoQ and MoQ demos in local and controlled environments, and will probably not always work as expected in more challenging network scenarios.

Dependencies

To compile imquic, you'll need to satisfy the following dependencies:

You'll need to install picoquic in the root folder of the repo, as that's where the configure script will look for it. Besides, you'll need to tell cmake to build picotls too, and build everything with -fPIC support, otherwise trying to use it within the context of a shared library like imquic will not work. You can use the following steps to install the dependency:

git clone https://github.com/private-octopus/picoquic
cd picoquic
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DPICOQUIC_FETCH_PTLS=Y .
make -j$(nproc)

Should you be interested in building the imquic documentation as well (public and internal), you'll need some additional tools too:

Notice that, at the time of writing, only Linux is supported as a target, but the library should compile on macOS as well. Both macOS and Windows, as well as other platforms, are planned as a target in future releases.

Compile

Once you have installed all the dependencies, just use:

sh autogen.sh

to generate the configure file. After that, configure and compile as usual to start the whole compilation process:

./configure --prefix=/usr
make
make install

If you're interested in QLOG support, add --enable-qlog when launching the configure script. Notice that this will require Jansson. Also notice that this is only needed for producing QLOG files of the HTTP/3, RoQ and MoQ "layers": QLOG support for the QUIC stack is supported out of the box by picoquic itself.

You can build some demo applications by adding --enable-echo-examples (basic QUIC/WebTransport client/server demos), --enable-roq-examples (RoQ demos) and --enable-moq-examples (MoQ demos).

To build the documentation, add --enable-docs.

Examples

To learn more about the demo examples, refer to the related README.md.

Help us!

Any thought, feedback or (hopefully not!) insult is welcome!

Developed by @meetecho

About

QUIC library with RTP Over QUIC (RoQ) and Media Over QUIC (MoQT) support

Resources

License

Stars

Watchers

Forks

Contributors

Languages