Commit Graph

432 Commits

Author SHA1 Message Date
Joni Räsänen 1738e6b10b doc: Properly document the enums in util.hh for Doxygen generation 2022-09-21 08:39:52 +03:00
Joni Räsänen 58fcad5086 common: Limit the maximum latency frame rate feature can add 2022-09-20 08:06:32 +03:00
Joni Räsänen 4f205c893d common: Use correct name for numerator 2022-09-19 14:43:08 +03:00
Joni Räsänen 3b31367da4 common: Add better name for fragment pacing 2022-09-19 14:22:10 +03:00
Joni Räsänen 80433cfcc4 common: Move internal definition out from public header 2022-09-19 09:34:02 +03:00
Joni Räsänen 72224ce909 common: Reduce the default MTU size by 8 bytes
This helps account for various protocols that add an extra 8 bytes on
top of sent UDP traffic.
2022-09-16 16:35:59 +03:00
Joni Räsänen 76b13879e5 common: Separate fps enforcement and fragment pacing
This commit also fixes (mostly) the fps enforcement.
2022-09-16 16:15:36 +03:00
Joni Räsänen 1b2996fd25 common: Release the memory of copy with RTP_COPY flag
uvgRTP does not indeed take ownership of the data when used with non-
smart pointer API. Now the copy is deleted by making it a unique_ptr.
2022-09-15 12:00:57 +03:00
Joni Räsänen 47c126262c common: Uniform ssize_t definition between MSVC and others 2022-09-15 08:52:46 +03:00
Joni Räsänen 4dba1d55d1 common: Update documentation of public API
This commit makes Doxygen generation create better documentation.
2022-09-15 08:17:58 +03:00
Joni Räsänen 3d63ea4074 common: Remove unused prohibition optimization 2022-09-15 08:17:57 +03:00
Joni Räsänen f0ee28bd67 common: Add possibility for adjusting rtp clock rate 2022-09-12 14:12:28 +03:00
Joni Räsänen 21c9528a0e common: Use the correct MTU size for ring buffer
Using the new correct MTU size seems to work. This enables much more
slots in the ring buffer, which in turn helps a lot with receiver
performance.
2022-09-12 14:02:35 +03:00
Joni Räsänen 9df2d0d459 common: Use the correct MTU size
The MTU size was too small since it subtracted the Ethernet header size
which is not included in MTU. This fix results in 14 bytes larger
RTP frames, which increases throughput slightly.

Also added few sizes for IPv6, but they are not used yet.
2022-09-12 13:19:02 +03:00
Joni Räsänen 938efe1176 common: Implement RTP_COPY flag 2022-09-09 13:29:50 +03:00
Joni Räsänen 570fc01a2b common: Have System Call Clustering (SCC) be disabled by default
SCC has an increased chance of losing frames at the receiving end if
used and I think this justifies it disabling. The benefit of SCC is
reduce CPU usage at the sender. Added a flag for enabling it.
2022-09-09 11:09:21 +03:00
Joni Räsänen b8091d02b6 common: Simplify media_stream code
Remove unused media_config and construct socket and holepuncher at
constructor.
2022-09-08 11:27:44 +03:00
Joni Räsänen f7040a4992 formats: Make restoration of stream the default option
This may break some implementation if they don't want start code prefix
for some reason or if they already implemented start code prefix in
their code.

Those who implemented themselves are using an inferior solution
(one extra stream copy for fragmented frames) and should update anyway.
Those who use the flag will just get a warning to update their flags.
Those whose decoder doesn't want start code prefix may not work without
adding a flag.
2022-09-08 08:14:52 +03:00
Joni Räsänen e06fc3c46c common: Remove unnecessary stuff from util.hh 2022-09-07 15:03:16 +03:00
Joni Räsänen 9ee5518147 common: Move socket.hh away from public API
Socket has never been part of the public API.
2022-09-07 14:10:24 +03:00
Joni Räsänen 237e71d465 common: Separate setting the ring buffer size from socket buffer
Gives user more control over internals of uvgRTP.
2022-09-06 13:42:00 +03:00
Joni Räsänen d68fcb0690 common: Add possibility only send or only receive
The API forced uvgRTP to both bind to local port even if user does not
need or want this and it also expects the user to know the remote
remote address which is not always possible.

This commit adds API to session for specifying only one port when
creating media_stream. This commit also adds RCE_SEND_ONLY and
RCE_RECEIVE_ONLY flags which can be used to prevent binding and specify
the meaning of single address and port parameters.
2022-09-06 11:45:19 +03:00
Joni Räsänen fe28c423a9 common: Add support for formats that don't require packetization 2022-09-05 13:21:57 +03:00
Joni Räsänen d359371040 formats: Modify RCE_FRAGMENT_GENERIC to follow existing definitions
I noticed that H263 uses a very similar fragmentation as
RCE_FRAGMENT_GENERIC and this commit modifies the implementation to use
the exactly same scheme in case we want to support H263 at some point.
2022-09-05 09:57:39 +03:00
Joni Räsänen f55c4578a8 rtcp: Add field t APP that tells the payload length
This design is similar to RTP packets.
2022-09-05 07:37:10 +03:00
Joni Räsänen 1e751e051f common: Remove memory leaks shown by Valgrind with tests 2022-09-01 12:18:46 +03:00
Joni Räsänen eb5e7c7c2f common: Fix warnings given by GCC on Linux 2022-08-25 18:19:05 +03:00
Joni Räsänen f915b2aa17 common: Remove most MSVC compiler warnings 2022-08-25 17:30:09 +03:00
Joni Räsänen c4f89cf7b5 Merge remote-tracking branch 'remotes/Gitlab/fix_encryption_bugs'
# Conflicts:
#	src/srtp/srtp.cc
2022-08-25 08:03:30 +03:00
Joni Räsänen f21a81bec4 zrtp: Improve debug prints 2022-08-25 07:58:23 +03:00
Joni Räsänen ec2e341ca5 common: Move all binding to socket 2022-08-25 07:58:10 +03:00
Joni Räsänen 1c9dcd2aad common: Clarify address naming 2022-08-24 14:34:12 +03:00
Joni Räsänen 8b05132deb zrtp: Fix race condition in performing DH 2022-08-24 14:33:30 +03:00
Matt Durgavich 98715d5b53
common: Silence two warnings
* common: Remove stray quote from include to silence warning

* Fix warning related to return type for sendmmsg stand-in

Co-authored-by: Matt Durgavich <mdurgavich@vivox.com>
2022-08-24 13:17:05 +03:00
Joni Räsänen 3472e2d1f7 build: Move crypto.hh out from public API
It was making compiling software that wants to use crypto more
difficult and it was completely unnecessary. It is possible that
someone is using the enable function there, but it has also existed
in the context class for a long time.
2022-08-23 10:32:40 +03:00
Joni Räsänen f9a89f7408 common: Rename all flags to distinguish between types
I've already created one bug by not being able to distinguish between
different flags. uvgRTP has four types of flags: enable, context, rtp
and socket. I'm planning on adding one more flag type which makes this
a good point to rename all flags.
2022-08-23 09:47:41 +03:00
Joni Räsänen 55ac0d3909 common: Document new fps configuration variables 2022-08-22 12:01:18 +03:00
Joni Räsänen 2abf0bc4ef common: FPS API for sending 2022-08-22 11:34:06 +03:00
Joni Räsänen 3410d70aa3 common: Move debug.hh away from public include
I don't feel that the internal debug print API of uvgRTP needs to be
part of the public API for uvgRTP.
2022-08-17 13:57:49 +03:00
Matt Durgavich 2d378a3161 common: prepend logging macros with UVG_ to avoid collisions. 2022-08-17 01:00:13 -04:00
Joni Räsänen 26d311bb56
Merge pull request #153 from wowaser/featureBranch
rtcp: add a public getter function for interval_ms_
2022-08-15 14:47:24 +03:00
vechtomo 8c7eaaeb1f rtcp: add a public getter function for interval_ms_ 2022-08-15 14:42:28 +03:00
Joni Räsänen 6b7e88d5d5
Merge pull request #142 from eliteraspberries/build-apple
Build on macOS
2022-08-15 14:17:16 +03:00
vechtomo 7a7a018032 rtcp: deepcopy APP packet data and handle it internally 2022-07-21 18:50:10 +03:00
Joni Räsänen cb7ef9d6e9
Merge pull request #149 from eliteraspberries/log-clang-warnings
common: Remove GNU extension (, ##__VA_ARGS__).
2022-07-20 13:40:26 +03:00
Mansour Moufid fe1dfaaad5 common: Remove GNU extension (, ##__VA_ARGS__). 2022-07-19 11:20:17 -04:00
Mansour Moufid 3020622875 build: Prepend UVGRTP_ to exported preprocessor definitions. 2022-07-19 11:15:37 -04:00
Mansour Moufid 51083c335d rtp: Implement sendmmsg for macOS. 2022-07-15 12:00:06 -04:00
Joni Räsänen 177a0b0d83 rtcp: Calculate compound packet size correctly for app and bye 2022-07-15 10:56:31 +03:00
Joni Räsänen 202209fe8e
Merge pull request #135 from gugautie/master
Limited C api wrapper
2022-07-14 13:07:00 +03:00
Joni Räsänen 1c31592851 build: Rename files in anticipation of future wrappers
This way all the wrappers are gathered together if more show up.
2022-07-14 13:03:03 +03:00
Joni Räsänen f4461f6dc3 rtcp: APP and BYE compound packets
It is no longer possible to send APP packets alone as RFC 3550 does
not permit this. Instead they are sent together with SR and RR as they
are supposed to.
2022-07-14 09:30:27 +03:00
Joni Räsänen af1b94adbe rtcp: Remove duplicate function from API to set SDES items 2022-07-11 14:43:04 +03:00
Joni Räsänen 97baf19437 rtcp: Refactor rtcp so compound packets are read correctly 2022-07-09 17:41:54 +03:00
Joni Räsänen e8586e8550 rtcp: Add possibility for the user to provide SDES items 2022-07-09 13:36:13 +03:00
Joni Räsänen a08d92e848 rtcp: Move SR and RR construction to rtcp packets module 2022-07-08 09:53:49 +03:00
Joni Räsänen 55ce9aa419 rtcp: Move rtcp header construction to rtcp packets module 2022-07-07 19:51:13 +03:00
Joni Räsänen 8581ac512a rtcp: Refactor the encryption functions to common place 2022-07-07 19:32:44 +03:00
Joni Räsänen 2341238e7e rtcp: Get cname to rtcp for SDES packet 2022-07-07 19:29:08 +03:00
Guillaume GAUTIER 9e7e8e6b67 Limited C api wrapper 2022-07-07 11:58:47 +03:00
Joni Räsänen 0b7f4604c9 formats: Make reference discarding disabled by default 2022-07-07 10:55:40 +03:00
Joni Räsänen bca3bdb18e formats: Add RTP flag that can be used to disable SCL
This obsoletes the old RCE flag, that did not work.
2022-07-04 12:01:49 +03:00
Joni Räsänen 94293ea368 rtcp: Fix wrong type when saving jitter estimation
RFC 3550 A.8 says that jitter should be saved as float and sampled to
32-bit unsigned integer. This commit fixes this and seems to improve
the accuracy of jitter estimation (previously it often showed just
15 or 10).
2022-06-17 12:00:17 +03:00
Joni Räsänen 41af90b1cf rtcp: Use session bandwidth to calculate interval
This is not full implementation of RTCP interval calculation, but it is
a step in the right direction.
2022-06-17 12:00:17 +03:00
Joni Räsänen b7ff2777b5 formats: Have only one system of timeout in h26x
The garbage collection is now the only system of timing out frames, the
old one did not make sense to me.
2022-06-17 10:33:22 +03:00
Joni Räsänen 57f7440c80 formats: Increase timout 2022-06-17 10:29:46 +03:00
Joni Räsänen bfd6d3eff5 formats: Add frag for disabling no reference frame drops 2022-06-17 08:26:18 +03:00
Joni Räsänen 088fc585ed common: Add const qualifiers where applicable 2022-05-16 12:02:37 +03:00
Joni Räsänen a6f9afcd28 common: Add function for getting SSRC of media_stream
Came across needing to know the local SSRC when trying to separate
media streams from one another.
2022-05-16 10:52:55 +03:00
Joni Räsänen 519b535ecb rtcp: Improve thread safety in rtcp 2022-05-13 14:32:42 +03:00
Joni Räsänen a4b45ecd5f rtcp: Add unique_ptr interface to getting rtcp packets 2022-05-13 09:45:19 +03:00
Joni Räsänen 84c66b7c1c formats: Add a way to disable H26x SCL 2022-04-01 08:24:37 +03:00
Joni Räsänen 4ecfedcdc8 formats: Fix dropped frames based on size bug
The allowed payload sizes were calculated slightly incorrectly and
this caused frames with sizes near the allowed frame size to be not
sent or sent incorrectly. Now all these errors should be fixed.
2022-03-31 10:05:41 +03:00
Joni Räsänen 2fcdd3cc63 formats: Rename variables to reflect RFC specification
uvgRTP was using incorrect terms in few places which made the code more
difficult to understand. This commit fixes this by changing NAL header
(incorrect) to payload header (correct).
2022-03-29 14:55:13 +03:00
Joni Räsänen 3a9e3b1757 common: Remove runner class as it is not needed
Integrated runner into holepuncher since it was the only remaining class
still using it and they both are small classes where separation does more
harm than good.
2022-03-03 13:38:41 +02:00
Joni Räsänen 48bab5a54f common: Try releasing reserved memory
If a frame was caught in a buffer without querying by user, it would
not get deleted. This commit tries to free those frame buffers.
2022-03-03 13:28:10 +02:00
Joni Räsänen ced9ea4271 common: Use unique_ptr to manage holepuncher memory 2022-03-03 11:52:15 +02:00
Joni Räsänen 468e9d82e5 common: Use unique_ptr for managing memory of media_ 2022-03-03 11:48:50 +02:00
Joni Räsänen 737898d5dc common: Use unique_ptr for managing reception_flow memory 2022-03-03 11:43:26 +02:00
Joni Räsänen e62e59af9f common: Remove duplicate code in media_stream in init 2022-03-03 11:39:12 +02:00
Joni Räsänen 8e05f3dbc7 rtcp: Use shared_ptr to manage rtcp memory 2022-03-03 10:48:51 +02:00
Joni Räsänen 97317fed22 srtp: Use shared_ptr to manage srtp and srtcp memory 2022-03-03 10:44:04 +02:00
Joni Räsänen 32839127f4 common: Use shared_ptr for managing socket memory 2022-03-03 10:31:36 +02:00
Joni Räsänen de639fe861 common: Manage rtp memory using shared_ptr 2022-03-03 10:20:21 +02:00
Joni Räsänen cce653b9b7 common: Rename pkt_dispatch to reception_flow
The dispatching is what technique the class uses, but it does not
describe its responsibilities at all making it very hard to figure out
what role it plays in the architecture just by looking at the name.

Also removed all references to obsolete System call dispatcher
(different concept) in all the comments.
2022-03-03 09:16:09 +02:00
Joni Räsänen 06c14ace97 common: Add more debug prints to track lost packets 2022-03-01 12:24:49 +02:00
Joni Räsänen f4352358bb build: Separate common header file lib.hh from context class
With this separation, the user has the option of not including all
the classes with lib.hh, where as previously it was mandatory because
context is always needed.
2022-02-28 10:43:16 +02:00
Joni Räsänen 3437e194aa common: Remove extra ; from end of namespaces
This was correctly giving warnings with GCC --pedantic
2022-02-28 08:51:38 +02:00
Joni Räsänen f62ade9c70 Merge branch 'example_improvements'
# Conflicts:
#	CMakeLists.txt
#	src/formats/h264.hh
#	src/formats/h265.hh
#	src/formats/h266.hh
#	src/formats/h26x.cc
#	src/formats/h26x.hh
#	src/lib.cc
#	src/pkt_dispatch.hh
#	src/rtp.cc
#	uvgRTP.pro
2022-02-22 14:03:49 +02:00
Joni Räsänen 819d8acee8 common: Add missing memory include, fixes Linux build 2022-02-21 10:20:07 +02:00
Joni Räsänen d97079ffbb common: Use shared ptr for zrtp module 2022-02-07 10:42:37 +02:00
Joni Räsänen 5a7d8377d1 common: Print the library name in debug 2021-09-30 10:31:42 +03:00
Joni Räsänen 8f438c57d0 common: Vastly improve the pull_frame timing
The previous implementation had the pull_frame take around 20x longer
than what the user specifies (no matter how long the user specified.
Now the excess should only be max 30 ms, which is an improvement.
2021-09-16 12:04:38 +03:00
Joni Räsänen 5fe0116327 tests: Add initial unit tests
These tests are mostly just placeholders until something more
substantial is added. They are good tests, but it would be better to
also test the functions in different kinds of scenarios.

Note: the Crypto++ is causing problems in tests on Windows, because the
CMake is rerun often and this causes the Crypto++ linking to disappear.
2021-09-07 12:23:40 +03:00
Joni Räsänen ea55f655ea version: Rename header to follow same hh format as other headers 2021-09-02 12:28:53 +03:00
Joni Räsänen d5c2212b40 api: Adjust and fix version stuff
Update correct version number. Remove extra uvgrtp from file/function
names.
2021-08-30 15:25:29 +03:00
Joni Räsänen c265fdbd41
Merge pull request #68 from db-tech/CMakeRebuild
build: Completely Redesigned CMake files (#44)
2021-08-30 14:47:09 +03:00
Joni Räsänen 6a8880929d common: Make sure all linux compilers are covered 2021-08-27 11:35:23 +03:00
Joni Räsänen 3aedf8ccde build: Try to make Mac compilation more likely to succeed
I just switched all __linux to not _WIN32 in the hopes that Unix/Linux
API would be more likely to be found on Mac OS. This has not been
tested on Mac so it may or may not work.
2021-08-27 11:19:38 +03:00
dennis 837b58351e build: Completely Redesigned CMake files (#44)
Primary changes are:
- Versioning integrated in cmake build system with library for version usage in end user programs
- New minimum CMAke required version is 3.14
- Created install capabilities. Allows uvgRTP to be used in different scenarios for win and lin (mac-os still missing)
- Added testing environment with automatically fetched google test and some example test code.
- Added packaging capabilities (and some placeholders that have to be changed)
- Create Shared library with -DBUILD_SHARED_LIBS=TRUE
2021-08-08 22:18:40 +02:00
Joni Räsänen cfb7c5e665 rtcp: Separate sender and receiver statistics
Only functional change was in function that saved maximum seq for sent
packets. This function or value were not used anywhere.
2021-07-30 14:54:51 +03:00
Joni Räsänen 57b091292b rtcp: Don't report without RTP packets
Send receiver reports instead of sender reports if we haven't sent any
RTP packets. Also don't include report blocks if we haven't received
any RTP packets.
2021-07-30 14:54:49 +03:00
Joni Räsänen 7b0e1bc94a rtcp: Fix invalid size of receiver reports 2021-07-30 14:54:45 +03:00
Joni Räsänen 27dc0db42e api: Rename addr to remote_address for clarity 2021-07-28 15:32:59 +03:00
Joni Räsänen 7f5d60eacb rtcp: Improve timing of reports and remove dependency from runner 2021-07-28 14:26:54 +03:00
Joni Räsänen 1db0404b61 api: Add check for Crypto inclusion to context class 2021-07-26 16:01:02 +03:00
Joni Räsänen 3b5acb7f88 build: Move includes to include/uvgrtp folder 2021-07-09 12:11:05 +03:00
Joni Räsänen 4cc94e9abe srtp: Remove zrtp dependency from srtp_base
The architecture is more easily modified with less dependencies. The
dependency concerned only getting the keys from zrtp and now that is
handled by media_stream.

Also added checks that we are not double freeing resources, since
previous version seemed very risky.
2021-06-17 12:55:26 +03:00
Joni Räsänen 67e54644c4 rtcp: Add std function interface options for getting rtcp frames 2021-06-15 13:09:54 +03:00
Joni Räsänen d29479ced5 rtcp: Use function for reading rtcp report blocks
Removes duplicate code for reading reports.
2021-06-14 16:43:34 +03:00
Joni Räsänen d8b461aa0a rtcp: Move header reading to the common handle function
Also add few checks that we have received enough data.
2021-06-14 15:40:53 +03:00
Joni Räsänen 55dad012a1 rtcp: Combine generation of sender and receiver reports
This reduces the amount of duplicate code in rtcp.
2021-06-14 14:46:40 +03:00
Joni Räsänen 4b97303271 rtcp: Rename sender report and receiver report variables
The r_frame and s_frame are not as clear as rr_frame and sr_frame.
2021-06-11 12:19:11 +03:00
Joni Räsänen ded95e9c41 rtcp: Helper function for sending rtcp packets to participants
Also free the frame if encryption failed.
2021-06-09 11:02:40 +03:00
Joni Räsänen c337b803d5 rtcp: Helper function for reading rtcp header 2021-06-09 11:02:38 +03:00
Joni Räsänen 6449f9d614 rtcp: Use a common function for rtcp packet header construction
This commit removes little bit of duplicate code, making future bug
fixes easier. The length of the packet is not set correctly, but that
will bi fixed in future.
2021-06-09 11:02:33 +03:00
Joni Räsänen decde85859 build: Move private headers out from include folder 2021-06-04 14:43:51 +03:00
Joni Räsänen 44590422ee common: Eliminate causes of compiler warnings for type conversions
Tried to check the values that they don't exceed the maximum size.
Skipped checks in places where I think refactoring will happen soon.
2021-06-04 13:06:41 +03:00
Joni Räsänen e739648923 common: Default initializers for struct member variables
Since compiler was complaining about them and its little bit more
secure, I set all integers to 0 and pointers to nullptr. There is a
small risk of reduced performance if the initialization is done
frequently, but I think the risk is worth it since uvgRTP is already
one of the fastest RTP libraries in the world and there are issues with
reliability.

The member variable initialization was introduced in C++11 which is the
lowest we support at the moment.
2021-06-03 11:12:02 +03:00
Joni Räsänen 4413a65da4 build: Add missing network headers needed on Linux 2021-06-02 14:02:15 +03:00
Joni Räsänen 399f74e772 build: Rename defines so they don't conflict with crypto++ 2021-06-02 13:32:24 +03:00
Joni Räsänen cb99edb203 common: Reduce include dependencies in header files
I removed as many dependencies as I could. I tried to preserve the API
by including the necessary headers for library usage in lib.hh file.
2021-06-02 13:14:41 +03:00
Joni Räsänen ba8b0cba80 common: Reverse the order of the header includes
I tried to make the headers be included in local to global order. This
way any potential missing includes are detected making it easier to
make changes to header location and includes.
2021-06-02 11:06:17 +03:00
Joni Räsänen ae57fb6ce9 build: Also accept correct MSVC version
This is needed because MSVC doesn't always define cplusplus version.
2021-06-02 11:02:21 +03:00
Le Clech Philippe f1169cdc57
build: support for CentOS7
The 2.0.0 release of uvgRTP fails to build on CentOS7, because :
- the gcc-c++ compiler doesn't support the c++17 standard, which is
  required to compile the crypto.hh file
- the getrandom() function isn't available in the libc

This pull request adds CentOS7 build support.

The modified files are :

- CMakeLists.txt : the availability of the getrandom() function is checked.
  If it exists, the HAVE_GETRANDOM preprocessor definition is added

- src/random.cc : if HAVE_GETRANDOM isn't defined, a syscall equivalent to
  the getrandom() functions is called

- include/crypto.hh : the c++17 code is replaced by a code that compiles with
  the CentOS7 compiler (c++11)
2021-05-25 21:33:52 +02:00
Aaro Altonen c7216c02a4 formats/media: Adjust fragment buffer offset correctly
Fragmented generic frames whose sequence numbers crossed the overflow
boundary were incorrectly reconstructed as the last fragments of the
frame were in the beginning of the buffer.
2021-04-23 08:57:56 +03:00
Aaro Altonen 6e53f686f9 rtcp: Extract fraction and lost fields correctly from the report 2021-04-22 13:25:04 +03:00
Aaro Altonen bfaa3536c5 crypto: Add 192/256-bit key support for SRTP 2021-04-22 12:43:05 +03:00
Aaro Altonen 5c3f76f04d doc: Document NTP clock interface 2021-04-22 07:00:04 +03:00
Aaro Altonen 0806522ab9 doc: Add documentation for RTCP 2021-04-19 12:15:23 +03:00
Aaro Altonen 367a8ad465 Allow pkt_dispatcher thread access to pkt_dispatcher's state
This makes the code and interface cleaner
2021-03-23 01:19:47 +02:00
Aaro Altonen 2dadd7b937 Implement free_resources() 2021-03-23 01:19:47 +02:00
Aaro Altonen 238cf77f64 Implement create_media() helper function 2021-03-23 01:19:47 +02:00
Aaro Altonen b5aabb06c7 Update push_frame()/pull_frame() documentation 2021-03-23 01:19:47 +02:00
Aaro Altonen c2e6207698 Document set_ts_info() 2021-03-23 01:19:47 +02:00
Aaro Altonen 5bdb283193 Document add_srtp_ctx() 2021-03-23 01:19:47 +02:00
Aaro Altonen d80abd580e Document pull_frame() 2021-03-23 01:19:47 +02:00
Aaro Altonen 53f8afbdb2 Document push_frame() 2021-03-23 01:19:47 +02:00
Aaro Altonen 59b4eb4b27 Document install_receive_hook() 2021-03-23 01:19:47 +02:00
Aaro Altonen 4bacbaf36d Update VVC packet handler
Save the frame info to the media object and fetch it from there
when a packet is received, update the code to better handle out-of-order
packets and add support for RCE_H26X_PREPEND_SC
2021-03-23 01:18:59 +02:00
Aaro Altonen e574a2a786 Rename RCE_HEVC_NO_INTRA_DELAY to RCE_NO_H26X_INTRA_DELAY
Now the functionality of all three (AVC, HEVC and VVC) can be controlled
through one flag
2021-03-23 01:18:59 +02:00
Aaro Altonen 0e12e57a47 Rename uvg_rtp to uvgrtp
I have no idea why the name had an underscore but now it's gone.
The old namespace is kept as an alias for backwards-compatibility
but it may be removed in the future
2021-03-23 01:18:59 +02:00
Aaro Altonen 13989c66f1 Add Doxygen documentation support
Some of the API is still undocumented
2021-03-23 01:18:59 +02:00
Aaro Altonen 41011487ba Implement RCE_HOLEPUNCH_KEEPALIVE 2021-03-23 01:18:59 +02:00
Aaro Altonen 4d561a5b28 Implement RCC_MTU_SIZE 2021-03-23 01:18:59 +02:00
Aaro Altonen b1ccd7f788 Increase MAX_PAYLOAD by 3 bytes
1443 is the maximum payload size for H26X Fragmentation Units but
for generic frames there is no NAL + FU header meaning the 3 bytes
can be used for payload data
2021-03-23 01:18:59 +02:00
Aaro Altonen c950179790 Implement RCC_DYN_PAYLOAD_TYPE
This change removes set_dynamic_payload() as ctx_configure() function
should be used for all context configuration instead of separate functions
for some configurations
2021-03-23 01:16:42 +02:00
Aaro Altonen ca66f6f8dc Implement RCC_PKT_MAX_DELAY 2021-03-23 01:16:42 +02:00
Aaro Altonen 755fe99d88 Implement RCE_H26X_PREPEND_SC 2021-03-23 01:16:42 +02:00
Aaro Altonen f87b4e8e72 Use __has_include to detect the presence of Crypto++ automatically
Use __has_include to check if all needed headers are present in the
system and if so, build uvgRTP with crypto enabled.

Introduce new define, __RTP_NO_CRYPTO__ which disables SRTP/ZRTP
support even if Crypto++ is present in the system
2020-12-11 07:56:02 +02:00