RaptorQ (RFC6330)
Project description
raptorq
Rust implementation of RaptorQ (RFC6330)
Recovery properties: Reconstruction probability after receiving K + h packets = 1 - 1/256^(h + 1). Where K is the number of packets in the original message, and h is the number of additional packets received. See "RaptorQ Technical Overview" by Qualcomm
This crate requires Rust 1.46 or newer.
Examples
See the examples/
directory for usage.
Benchmarks
The following were run on an Intel Core i5-6600K @ 3.50GHz
Symbol size: 1280 bytes (without pre-built plan)
symbol count = 10, encoded 127 MB in 0.465secs, throughput: 2202.0Mbit/s
symbol count = 100, encoded 127 MB in 0.483secs, throughput: 2118.9Mbit/s
symbol count = 250, encoded 127 MB in 0.474secs, throughput: 2158.1Mbit/s
symbol count = 500, encoded 127 MB in 0.460secs, throughput: 2218.5Mbit/s
symbol count = 1000, encoded 126 MB in 0.490secs, throughput: 2072.7Mbit/s
symbol count = 2000, encoded 126 MB in 0.562secs, throughput: 1807.2Mbit/s
symbol count = 5000, encoded 122 MB in 0.578secs, throughput: 1689.6Mbit/s
symbol count = 10000, encoded 122 MB in 0.687secs, throughput: 1421.5Mbit/s
symbol count = 20000, encoded 122 MB in 1.019secs, throughput: 958.4Mbit/s
symbol count = 50000, encoded 122 MB in 1.432secs, throughput: 682.0Mbit/s
Symbol size: 1280 bytes (with pre-built plan)
symbol count = 10, encoded 127 MB in 0.220secs, throughput: 4654.2Mbit/s
symbol count = 100, encoded 127 MB in 0.149secs, throughput: 6868.7Mbit/s
symbol count = 250, encoded 127 MB in 0.167secs, throughput: 6125.4Mbit/s
symbol count = 500, encoded 127 MB in 0.163secs, throughput: 6260.8Mbit/s
symbol count = 1000, encoded 126 MB in 0.173secs, throughput: 5870.7Mbit/s
symbol count = 2000, encoded 126 MB in 0.199secs, throughput: 5103.6Mbit/s
symbol count = 5000, encoded 122 MB in 0.257secs, throughput: 3799.9Mbit/s
symbol count = 10000, encoded 122 MB in 0.341secs, throughput: 2863.8Mbit/s
symbol count = 20000, encoded 122 MB in 0.427secs, throughput: 2287.0Mbit/s
symbol count = 50000, encoded 122 MB in 0.540secs, throughput: 1808.4Mbit/s
Symbol size: 1280 bytes
symbol count = 10, decoded 127 MB in 0.679secs using 0.0% overhead, throughput: 1508.0Mbit/s
symbol count = 100, decoded 127 MB in 0.583secs using 0.0% overhead, throughput: 1755.5Mbit/s
symbol count = 250, decoded 127 MB in 0.564secs using 0.0% overhead, throughput: 1813.7Mbit/s
symbol count = 500, decoded 127 MB in 0.539secs using 0.0% overhead, throughput: 1893.3Mbit/s
symbol count = 1000, decoded 126 MB in 0.571secs using 0.0% overhead, throughput: 1778.7Mbit/s
symbol count = 2000, decoded 126 MB in 0.708secs using 0.0% overhead, throughput: 1434.5Mbit/s
symbol count = 5000, decoded 122 MB in 0.769secs using 0.0% overhead, throughput: 1269.9Mbit/s
symbol count = 10000, decoded 122 MB in 0.902secs using 0.0% overhead, throughput: 1082.7Mbit/s
symbol count = 20000, decoded 122 MB in 1.135secs using 0.0% overhead, throughput: 860.4Mbit/s
symbol count = 50000, decoded 122 MB in 1.929secs using 0.0% overhead, throughput: 506.3Mbit/s
symbol count = 10, decoded 127 MB in 0.669secs using 5.0% overhead, throughput: 1530.5Mbit/s
symbol count = 100, decoded 127 MB in 0.582secs using 5.0% overhead, throughput: 1758.5Mbit/s
symbol count = 250, decoded 127 MB in 0.550secs using 5.0% overhead, throughput: 1859.9Mbit/s
symbol count = 500, decoded 127 MB in 0.520secs using 5.0% overhead, throughput: 1962.5Mbit/s
symbol count = 1000, decoded 126 MB in 0.548secs using 5.0% overhead, throughput: 1853.3Mbit/s
symbol count = 2000, decoded 126 MB in 0.582secs using 5.0% overhead, throughput: 1745.1Mbit/s
symbol count = 5000, decoded 122 MB in 0.658secs using 5.0% overhead, throughput: 1484.1Mbit/s
symbol count = 10000, decoded 122 MB in 0.835secs using 5.0% overhead, throughput: 1169.5Mbit/s
symbol count = 20000, decoded 122 MB in 1.105secs using 5.0% overhead, throughput: 883.8Mbit/s
symbol count = 50000, decoded 122 MB in 1.784secs using 5.0% overhead, throughput: 547.4Mbit/s
Public API
Note that the additional classes exported by the benchmarking
feature flag are not considered part of this
crate's public API. Breaking changes to those classes may occur without warning. The flag is only provided
so that internal classes can be used in this crate's benchmarks.
Python bindings
The Python bindings are generated using pyo3.
Some operating systems require additional packages to be installed.
$ sudo apt install python3-dev
maturin is recommended for building the Python bindings in this crate.
$ pip install maturin
$ maturin build --cargo-extra-args="--features python"
Alternatively, refer to the Building and Distribution section in the pyo3 user guide.
Note, you must pass the --cargo-extra-args="--features python"
argument to Maturin when building this crate
to enable the Python binding features.
License
Licensed under
- Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0)
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be licensed as above, without any additional terms or conditions.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file raptorq-1.6.1.tar.gz
.
File metadata
- Download URL: raptorq-1.6.1.tar.gz
- Upload date:
- Size: 80.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/0.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b4cb991b1bc685b7c7dfdebc3682ff978b63ed8d471878d2654fdcc244eb5b3 |
|
MD5 | ee01e4e844760140ea17071185e7f4a0 |
|
BLAKE2b-256 | 5085b3f1e2396f1f7fbe0cad7d0119c4adfd413f6f967f9dd2743925cab7fdc5 |
File details
Details for the file raptorq-1.6.1-cp39-cp39-manylinux1_x86_64.whl
.
File metadata
- Download URL: raptorq-1.6.1-cp39-cp39-manylinux1_x86_64.whl
- Upload date:
- Size: 314.5 kB
- Tags: CPython 3.9
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/0.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc50e9615602291975ceef9701df8bb17ec849fb5a421aea16d056ce69e94756 |
|
MD5 | bd626f9f6cff7625bdb71a3a1fe29901 |
|
BLAKE2b-256 | f57c096688785c4bd6dafdeaf381f2848ff5bad5f057cbe8b5c8542c56115052 |
File details
Details for the file raptorq-1.6.1-cp38-cp38-manylinux1_x86_64.whl
.
File metadata
- Download URL: raptorq-1.6.1-cp38-cp38-manylinux1_x86_64.whl
- Upload date:
- Size: 314.5 kB
- Tags: CPython 3.8
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/0.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd952fd74359354480a03ff4577e7f3b8acb1f2596d4e4537158d63e601da6f5 |
|
MD5 | 20618a7842016f0b8ca759740574b402 |
|
BLAKE2b-256 | 2d2f99e83a0969f91dff057541b9c78c3f036e96d6f3fbd2c9608e1590ebdd18 |
File details
Details for the file raptorq-1.6.1-cp37-cp37m-manylinux1_x86_64.whl
.
File metadata
- Download URL: raptorq-1.6.1-cp37-cp37m-manylinux1_x86_64.whl
- Upload date:
- Size: 314.5 kB
- Tags: CPython 3.7m
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/0.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c72b3e6e0a58d019606183ac8b0dbd1f768867b498edbcd450ac3edddfe04eb |
|
MD5 | 45de9ab295fc877fe58c0c58f6aed6de |
|
BLAKE2b-256 | 982fa510ca1e8ba408c9276dcfad8fce1db67bbcc0e4d32491722aa0e0c28677 |
File details
Details for the file raptorq-1.6.1-cp36-cp36m-manylinux1_x86_64.whl
.
File metadata
- Download URL: raptorq-1.6.1-cp36-cp36m-manylinux1_x86_64.whl
- Upload date:
- Size: 314.9 kB
- Tags: CPython 3.6m
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/0.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3584e1ffbacfc74991e4a37e701e3f9a8ad4bbc076bb9a578d2c18fd493c4d52 |
|
MD5 | aab2c7ef42df5be194f7c78d2c9fd5cc |
|
BLAKE2b-256 | c0720a9c7e061112a52084b0084de09d35791f9fd53d23173360e3bdd54c81e0 |
File details
Details for the file raptorq-1.6.1-cp35-cp35m-manylinux1_x86_64.whl
.
File metadata
- Download URL: raptorq-1.6.1-cp35-cp35m-manylinux1_x86_64.whl
- Upload date:
- Size: 314.5 kB
- Tags: CPython 3.5m
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/0.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 799a6abf6132360f4c621e83ae87c478a3c32c2b229135d02d9dc4151cc1620d |
|
MD5 | b38b636842ee9c6ab27d3186d3b8ac9c |
|
BLAKE2b-256 | 3d38a56529f94ceb65ec3bcf4d30ba442cb097419fd1a85daf4bd9ac4a1e8f3f |