Having separate enums for general configuration and media configuration might be too confusing given that they are passed to kvzRTP using same variable and the configuration values must not clash with each other so the second enum's values would have to start from RCE_LAST which might look weird |
||
---|---|---|
benchmarks | ||
examples | ||
include | ||
src | ||
.gitignore | ||
BUILDING.md | ||
CMakeLists.txt | ||
COPYING | ||
Makefile | ||
README.md | ||
kvzRTP.sln | ||
kvzRTP.vcxproj | ||
kvzRTP.vcxproj.filters | ||
kvzrtp.pro |
README.md
kvzRTP
kvzRTP is an RTP library written in C++ with a focus on usability and efficiency. It features a very intuitive and easy-to-use API, built-in support for HEVC and Opus, SRTP and ZRTP. In ideal conditions it is able to receive a goodput of 600 MB/s for HEVC stream.
kvzRTP is licensed under the permissive BSD 2-Clause License
For SRTP/ZRTP support, kvzRTP uses Crypto++
Supported specifications:
- RFC 3350: RTP: A Transport Protocol for Real-Time Applications
- RFC 7798: RTP Payload Format for High Efficiency Video Coding (HEVC)
- RFC 7587: RTP Payload Format for the Opus Speech and Audio Codec
- RFC 3711: The Secure Real-time Transport Protocol (SRTP)
- RFC 6189: ZRTP: Media Path Key Agreement for Unicast Secure RTP
Based on Marko Viitanen's fRTPlib
Building and linking
See Building for instructions on how to build and use kvzRTP
Examples
Please see examples directory for different kvzRTP examples
Adding support for new media types
Adding support for new media types quite straight-forward:
- add the payload to util.hh's
RTP_FORMAT
list - create files to src/formats/
format_name
.{cc, hh} - create
namespace format_name
insidenamespace kvz_rtp
- Add functions
push_frame()
andframe_receiver()
- You need to implement all (de)fragmentation required by the media type
See src/formats/hevc.cc and src/formats/hevc.hh for help when in doubt.