Loading...
Searching...
No Matches
README
imquic
======

imquic is an open source QUIC library designed and developed by [Meetecho](https://www.meetecho.com) 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.

For more information and documentations, make sure you pay the [project website](https://imquic.conf.meetecho.com) a visit!

> **Note well:** in its current stage, the library should be considered at an **alpha** stage, and very experimental due to its lack of support for some QUIC stack functionality. 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:

* [GLib](https://docs.gtk.org/glib/)
* [pkg-config](http://www.freedesktop.org/wiki/Software/pkg-config/)
* [quictls](https://quictls.github.io/) (QUIC TLS)

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

* [Doxygen](https://www.doxygen.org)
* [Graphviz](https://www.graphviz.org/)

## 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

Note that the configure script uses `pkg-config` to look for quictls by using the `openssl+quictls` name, which is how it's packaged in some repositories to avoid conflicts with OpenSSL. In case that doesn't work for you, you use the `QUICTLS_CFLAGS` and `QUICTLS_LIBS` environment variables to specify the include and lib directory of the library when launching the configure script, e.g.

	QUICTLS_CFLAGS="-I/opt/quictls/include/" \
	QUICTLS_LIBS="-L/opt/quictls/lib64/ -lssl -lcrypto" \
	./configure [..]

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](examples/README.md).

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

Developed by [@meetecho](https://github.com/meetecho)