Aaro Altonen
95e8793149
Add RTCP Sender/Receiver Report frame (de)allocation routines
2019-06-17 11:56:21 +03:00
Aaro Altonen
89f5e3d708
Create rtp_errno global variable
...
Functions that can fail but cannot return error code (f.ex frame
allocation functions) should use this to specify the error condition
2019-06-17 10:03:50 +03:00
Aaro Altonen
5eccaf6675
Rename alloc_frame() to alloc_rtp_frame()
...
Unfortunately, overloading by return type is not possible so we
give new names for frame allocation functions
2019-06-14 12:51:10 +03:00
Aaro Altonen
ed4b01a61d
Add missing include to util.hh
2019-06-14 12:51:10 +03:00
Aaro Altonen
f855db02c3
Update README
2019-06-14 12:51:10 +03:00
Aaro Altonen
33cf96b2e6
Rewrite session statistic routines according to new code style
...
Remove the __RTP_STATS__ test as gathering statistics is no longer
optional
2019-06-14 12:51:02 +03:00
Aaro Altonen
3fc85e2875
Create new cross-platform socket API for the library
...
This makes the code much cleaner as now all ugly cross-platform
related checks are hidden behind the API
2019-06-13 13:02:06 +03:00
Aaro Altonen
1bf4c8196c
Use the new send functions on Linux for HEVC frames
2019-06-12 11:21:40 +03:00
Aaro Altonen
057bd41ceb
Use NDEBUG to disable LOG_DEBUG prints
2019-06-12 11:19:43 +03:00
Aaro Altonen
18f88017c2
Rewrite generic RTP frame sending
2019-06-12 11:19:18 +03:00
Aaro Altonen
f8d6ec6361
Implement faster RTP frag frame sending for Linux
...
This implementatation uses thread-local storage + sendmmsg()
to split large frames and send them using only one system call.
This may results in large performance improvements especially when
frame sizes increase as these implementatation doesn't do any extra
copying and sends the frame to remote using one system call (compared
to previous implementatation where each RTP frame was send individually)
Only works on Linux
2019-06-12 11:14:24 +03:00
Aaro Altonen
03542419d1
Create directory for the library to /usr/local/include and copy headers there
2019-06-10 10:14:08 +03:00
Aaro Altonen
4c9f8a049b
Implement Windows-specific parts
2019-06-05 09:45:28 +03:00
Aaro Altonen
c1e27ab008
Use header sizes defined in frame.hh
2019-06-04 13:57:09 +03:00
Aaro Altonen
7bfae48240
Fix the NAL header of reconstructed frame
...
The NAL type of the reconstructed frame was not set correctly
which casused some problems when the video was decoded
2019-06-04 13:11:28 +03:00
Aaro Altonen
4286d20023
Add install target
2019-06-04 08:12:09 +03:00
Aaro Altonen
af605b182d
Add short explanation of the read/write API
2019-06-03 13:14:15 +03:00
Aaro Altonen
bf042e94db
Add example for receiving RTP frames using receive hook
2019-06-03 13:13:43 +03:00
Aaro Altonen
67f0b1885e
Store the total size of FUs and the FUs themselves
...
This way we don't have to loop through the FU vector when the last
fragment is received
2019-06-03 12:40:06 +03:00
Aaro Altonen
67594f7e72
Add HEVC frame processing function
...
This function merges the HEVC fragmentation units and returns full
frames when all frag units have been received.
2019-06-03 11:58:53 +03:00
Aaro Altonen
72313a783d
Add generic frame processing fuction
2019-06-03 11:57:25 +03:00
Aaro Altonen
e07a9ef431
Add Opus frame processing fuction
2019-06-03 11:56:19 +03:00
Aaro Altonen
0f47b284f7
Add function for dumping array contents in hex format
2019-06-03 11:53:27 +03:00
Aaro Altonen
3c95b1cd6f
Rewrite RTP frame receving
...
Now each supported RTP frame types has its own handler which is called
when a new RTP frame is received. This way we can do frame type specific
operations (f.ex. merging HEVC FU frames) and return fully processed
frames to user
This change introduces new status code "RTP_NOT_READY" which indicates
to the caller that the operation did not finish (eg. we've received only
part of the frame).
2019-06-03 11:52:11 +03:00
Aaro Altonen
ab303a42c2
Add example code for receiving HEVC stream
2019-06-03 11:49:20 +03:00
Aaro Altonen
0fe82b6d77
Update gitignore
2019-06-03 11:45:36 +03:00
Aaro Altonen
0a57caebed
Create new folder structure for examples
2019-06-03 11:45:11 +03:00
Aaro Altonen
d1b6df764d
Remove warnings
2019-06-03 10:59:41 +03:00
Aaro Altonen
278bcc3e29
Update README
2019-06-03 09:37:49 +03:00
Aaro Altonen
65132821a4
Create Qt project file
2019-06-03 09:35:19 +03:00
Aaro Altonen
fa0da917d1
Delete unnecessary frame allocation from frame.cc
2019-05-29 12:53:03 +03:00
Aaro Altonen
73ba634774
Add missing SDP for HEVC
2019-05-29 08:43:07 +03:00
Aaro Altonen
d5dbb99ff4
Add example code for sending HEVC
2019-05-29 08:40:20 +03:00
Aaro Altonen
f1a6d43c34
Add warning about large packets to rtp_generic.cc
...
For now they require no extra work, let the lower levels to deal
with them
2019-05-29 08:40:20 +03:00
Aaro Altonen
12a24e2b18
Rewrite HEVC frame sending
...
Now sending HEVC frames requires no extra copying
2019-05-29 08:40:09 +03:00
Aaro Altonen
ca2666985d
Add function for writing complete RTP frames
2019-05-29 08:34:49 +03:00
Aaro Altonen
76b59f449f
Fix HEVC frame sending
...
Latest changes to RTP frame structure broke the HEVC sending
2019-05-29 08:34:49 +03:00
Aaro Altonen
18a161489f
Send generic as one write
...
There's no need to separate to write the header and then write the
payload when the frame has both fields and their lengths
2019-05-29 08:34:49 +03:00
Aaro Altonen
4305ec04f0
Create data and payload buffers for RTP frame
...
Data points to the beginning of data that is sent and payload points
to offset where user data can be copied to.
2019-05-29 08:34:49 +03:00
Aaro Altonen
341b2a7aae
Rename RTP format and type variables in RTP frame
...
Now they're more consistent with other variable names
2019-05-29 08:34:08 +03:00
Aaro Altonen
50606cc6b4
Create routines for destroying RTP readers/writers
...
The RTP connection should be destroyed by calling context->destroy_*
functions to ensure that the session is completely destroyed.
These functions will call the writer's/reader's destructor, close the
socket, release all common resources, remove them from the global
hashmap and send RTCP BYE message to all other participants
2019-05-23 09:14:34 +03:00
Aaro Altonen
6ea1f1fc7d
Destroy all frames in reader's destructor
2019-05-23 09:13:22 +03:00
Aaro Altonen
9126b7a43a
Rewrite the code using new style
...
* switch from camelCase to snake_case
* put all code behind kvz_rtp namespace
* improve how headers of RTP frames can ben handled
2019-05-22 12:43:35 +03:00
Aaro Altonen
732ecaf43a
Remove rtp uniq identifier generator from util.cc
2019-05-22 09:39:16 +03:00
Aaro Altonen
ebc5f42f26
Fix ifdef linux check
2019-05-22 09:38:10 +03:00
Aaro Altonen
bd8b9119db
Start using the new generic frame everywhere
2019-05-22 09:24:29 +03:00
Aaro Altonen
509d096b1d
Rewrite sending Opus using the new send API
2019-05-17 13:09:27 +03:00
Aaro Altonen
e244051611
Increase the RTP sequence after each send
2019-05-17 13:04:48 +03:00
Aaro Altonen
dd8d9cec53
Update RTP statistics in send.cc if enabled
2019-05-17 13:03:47 +03:00
Aaro Altonen
65c8131745
Add more common defines to util.hh
2019-05-17 12:49:33 +03:00