Commit Graph

488 Commits

Author SHA1 Message Date
Aaro Altonen 997924c111 Separate frame loss and packet loss 2020-05-01 12:58:06 +03:00
Aaro Altonen eac06c34cb Add ability to find the best configuration of FPS and threads
By default, the script requires that 99% of the frames/packets have
been received but the limit is adjustable with --threshold parameter
2020-04-30 09:14:07 +03:00
Aaro Altonen daa8b9246a Remove find_best.sh
The same functionality can be found from parse.pl
2020-04-30 07:10:11 +03:00
Aaro Altonen f01b0d3dfd Ignore invalid benchmark runs 2020-04-30 06:58:58 +03:00
Aaro Altonen 3525ee0e3e Fix SRTP example with user-managed keys 2020-04-30 01:49:45 +03:00
Aaro Altonen c2438e3017 Add support for user-managed SRTP session
Because the architecture has changed a bit, the context is initialized
only after add_srtp_ctx() has been called to prevent the user from
sending unencrypted messages.
2020-04-30 01:45:28 +03:00
Aaro Altonen 527b5e5c09 Set correct FPS in FFmpeg send benchmark 2020-04-29 20:47:23 +03:00
Aaro Altonen a41e8b93f3 Fix FFmpeg receiver code
The code bailed out too early
2020-04-29 20:47:10 +03:00
Aaro Altonen 4f021a287b Use iter instead of lines
They're the same thing and as iter is a mandatory parameter,
it's better to use it instead
2020-04-29 20:06:27 +03:00
Aaro Altonen ff8ef9bdaf Add code for parsing FFmpeg's recv benchmark output 2020-04-29 20:06:00 +03:00
Aaro Altonen aca3932cb9 Add code for parsing FFmpeg's send benchmark output 2020-04-29 19:53:35 +03:00
Aaro Altonen 2f8db432be Use the arrival time of last succesful frame 2020-04-29 14:12:25 +03:00
Aaro Altonen e77dde544d Add missing my keyword to generic receiver 2020-04-29 13:39:16 +03:00
Aaro Altonen a40f72ce6a Fix total goodput calculation for sender 2020-04-28 11:38:13 +03:00
Aaro Altonen 7e28da0cbb Calculate average time for the benchmark run 2020-04-28 11:26:33 +03:00
Aaro Altonen 1a24079a4a Print estimate of time even if all frames were not received 2020-04-28 11:19:40 +03:00
Aaro Altonen afb2eff134 Print the best values in find_best.sh 2020-04-28 11:18:13 +03:00
Aaro Altonen f7f7562be2 Sort the output properly
Sorted output without -V gave incorrect values
2020-04-28 11:18:13 +03:00
Aaro Altonen cc8f2ec65b Fix total goodput for single thread benchmark runs 2020-04-28 11:18:13 +03:00
Aaro Altonen efe71cb25d Add iter parameter to parse.pl 2020-04-28 11:18:13 +03:00
Aaro Altonen 18c705ad96 Add example code for context configuration 2020-04-28 11:18:13 +03:00
Aaro Altonen 649be450e5 Enable runtime configuration functionality
Remove old context configuration flags that are no longer used,
convert configure_ctx() to work as a handler for all RCC_* flags
and use default values in sender/receiver/queue during initialization
2020-04-28 11:18:13 +03:00
Aaro Altonen c62194aea2 Add ability to specify custom payload type 2020-04-28 11:18:13 +03:00
Aaro Altonen 9dc147f3b8 Ignore a.out files 2020-04-28 11:18:13 +03:00
Aaro Altonen c2e7eb1bc1 Rename kvzRTP to uvgRTP 2020-04-28 11:18:07 +03:00
Aaro Altonen 94ab632f4b Set clock rate to 10000 for generic frames
If the clock rate is not set (ie. it's zero) it will screw up
the timestamp calculations and may cause problems for the receiver,
especially when fragmentation is enabled
2020-04-27 13:48:49 +03:00
Aaro Altonen df4c96c072 Removed unused Opus function 2020-04-27 12:57:00 +03:00
Aaro Altonen 29749c3623 Create RCE_INPLACE_ENCRYPTION flag
This flag indicates to kvzRTP that the input data given to push_frame()
is writable and the encryption can be done in-place.

By default kvzRTP assumes that the input cannot be modified and creates
a copy of the input data.
2020-04-27 12:22:28 +03:00
Aaro Altonen a9d1d411ea Handle RTP_COPY for unique_ptrs too 2020-04-27 12:22:28 +03:00
Aaro Altonen 53270c6966 Add example code for SRTP using ZRTP 2020-04-27 12:22:24 +03:00
Aaro Altonen a46c904de0 Make sure the HEVC frame is actually too large
Failing to check this caused an infrequent error where kvzRTP
started a fragmentation unit but because there was not enough bytes
it couldn't finish it and thus the receiver never returned the frame
to user because it only received the first fragment (which was the full
frame)
2020-04-26 21:04:28 +03:00
Aaro Altonen 98404d9316 Increase the MAX_PAYLOAD to 1443
There's 2 bytes left in the budget after all media headers
2020-04-26 21:04:28 +03:00
Aaro Altonen 44276308c8 Update README 2020-04-26 21:04:25 +03:00
Aaro Altonen c7b8188dcd Add example code for generic fragmentation 2020-04-24 21:51:12 +03:00
Aaro Altonen 5cedd36641 Add ability to fragment/reconstruct generic frames 2020-04-24 21:51:12 +03:00
Aaro Altonen 63bbd2408b Remove the SEQ(x) and TS(x) macros 2020-04-24 21:51:12 +03:00
Aaro Altonen 7ebf1410bc Remove the frames array from HEVC receiver 2020-04-24 21:51:12 +03:00
Aaro Altonen 082372fba1 Merge RTP context configuration flags into one enum
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
2020-04-24 21:51:12 +03:00
Aaro Altonen ab3746d2c9 Add Visual Studio project files 2020-04-24 21:51:07 +03:00
Aaro Altonen d8a54f1af1 Ignore tags file 2020-04-24 11:10:26 +03:00
Aaro Altonen 8fdc0193ec Parse netcat output in benchmark.pl 2020-04-23 12:53:52 +03:00
Aaro Altonen a9fd4206ed Clamp the FPS to more sensical values 2020-04-23 12:30:27 +03:00
Aaro Altonen 44b15a68c9 Drop invalid inter frame fragments before frame construction
No point in allocating space for the frame and constructing it
from fragments just to drop it a few moments later
2020-04-23 12:30:27 +03:00
Aaro Altonen 796bcf2717 Drop invalid inter/intra frames only if intra delay is enabled 2020-04-23 12:30:27 +03:00
Aaro Altonen d889893ea4 Create inter frame even if intra is in progress
Dropping new inter frames when an intra is in progress is a little
too aggressive considering the intra might be finished by the time
all inter frame packets have been received so basically we would lost
a perfectly valid frame for no reason
2020-04-23 12:30:07 +03:00
Aaro Altonen 127108fafa Create generic receiver for the benchmarking
To test the maximum raw throughput of sender, netcat can be used
to capture the stream which does not care about late frames or
FPS values.
2020-04-23 11:19:46 +03:00
Aaro Altonen 3f97fc28f0 Clamp FPS values to range 0.9375 - 960
This is the range where it's possible to reach sensical send/recv goodputs.
Going lower than 0.9375 doesn't even make sense and going higher than 960
will probably result in 90% of frames being dropped because
nobody can packetize and send 4K stream that fast.
2020-04-23 11:19:46 +03:00
Aaro Altonen 7e143288ae Add ability to pass remote address to benchmark code 2020-04-23 11:19:46 +03:00
Aaro Altonen 29bf2197fb Convert the benchmark setup to FPS-based 2020-04-23 11:19:46 +03:00
Aaro Altonen b4c7e84900 Change the default receiver IP for kvzRTP 2020-04-23 11:19:46 +03:00