forked from j0r1/JRTPLIB
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
417 lines (381 loc) · 19.4 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
JRTPLIB ChangeLog
-----------------
3.11.2 (April 2020):
* Taking EINTR in nanosleep, poll and select calls into account.
Thanks to Filippo Guerzoni ([email protected]) for bringing
this to my attention.
* Disabled some copy constructors
* Bugfix in RTPExternalTransmitter: a buffer could fill up causing the
an operation to fail to get aborted
* Added constructor to RTPRawPacket to guess RTP/RTCP type
* Bugfixed regarding some calles being cut short due to an EINTR
3.11.1 (March 2017)
* Bugfix in rtpsources.cpp: if the RTP packet got deleted in
OnValidatedRTPPacket, then an illegal address would be accessed
when looking up the CSRC identifiers. Thanks to Lau Bakman for
reporting this.
3.11.0 (March 2017)
* In the RTPSession class, thread safety can be requested even
if the poll thread is not used.
* Moved the 'abort decriptor' stuff into a separate class and
made it possible for the UDPv4 transmitter to use a pre-created
instance. In turn this allows a single poll thread to be set up
for multiple RTPSession instances. Example8 illustrates this.
* Made an abstraction RTPSelect for the 'select' call. This can
use 'poll' or 'WSAPoll' depending on the availabity, which can
allow better scaling for a use case such as example8.
* Added RTPRandom::CreateDefaultRandomNumberGenerator to create
the default random number engine for the platform in use.
* When using gcc, warnings will be treated as error by default
(this can be disabled in the cmake options)
* Added a transmission component that allows packets to be sent
and received over TCP.
3.10.0 (December 2016)
* Support for MingW compilation was added
* Outgoing data or incoming data can be intercepted and changed
(useful for encryption)
* SRTP support (using libsrtp) through the RTPSecureSession class.
Thanks to Vladimir V. Pavluk ([email protected]) and to
Alexey Obergan ([email protected]) for providing very helpful
code.
* RTP packets can now be processed in RTPSession's
OnValidatedRTPPacket virtual function.
* Various virtual function were added to the RTPSession class to
get immediate notification of RTCP sender reports, receiver
reports, SDES data.
* Support for RTP and RTCP multiplexing over the same port, for the
UDPv4 transmitter.
* Added a member function to RTPSession to send raw data, i.e. to
send data directly over the RTP or RTCP channel of the transmitter.
* Added a member function to RTPSession by which you can retrieve the
next RTP sequence number.
* Specifying port 0 for the UDPv4 transmitter chooses a port pair
by itself.
* The UDPv4 transmitter can be initialized using pre-created RTP
and RTCP sockets.
* Modified RTPTime class to use an internal representation of a
double precision floating point number. Also using clock_gettime
if available instead of gettimeofday, to obtain times that are
not affected by clock adjustments.
3.9.2 (December 2016)
* Major bugfix: zero length UDP packets should no longer block
the reception of packets.
* Various compiler warnings were fixed. Thanks to Ruotger Skupin
([email protected]) for supplying the patch.
3.9.1 (November 2011)
* Fixed a bug in the CMake configuration: was unable to handle
path names with spaces.
* Fixed bug in rtcpsdespacket.h: end namespace curly bracket
was in wrong place.
* In an MS-Windows environment you can now choose to build a
DLL instead of a static library.
3.9.0 (July 2011)
* Switched to CMake build system.
* Added the RTPByteAddress class, which can be used to describe
a host/port combination in a very general way.
* Added the RTPExternalTransmitter class which can be used if
one would like to use a transmission mechanism other than
the UDP based transmitters.
* Placed everything in namespace 'jrtplib'.
3.8.2 (February 2011)
* Fixed bug in RTPRandomRand48. The uint16_t version used a
& 0xff instead of & 0xffff. Thanks to Alexey Kumkov
([email protected]) for bringing this to my attention.
3.8.1 (October 2010)
* Initialization of the RTPRandomRandS class didn't work as
intended, causing the fall-back class RTPRandomRand48 always
being used on the Win32 platform.
3.8.0 (September 2010)
* Fixed bug in RTPSources implementation. An incorrect
'GotoNextElement' call was replaced by a 'GotoPreviousElement'
call.
* Added functionality to send unknown RTCP packets. Patch
was supplied by Tom Harper ([email protected])
* Fixed bug in INF_GetEstimatedTimestampUnit (possibility of
division by zero). Thanks to Gilson Yi ([email protected])
for bringing this to my attention.
* Added some code to allow a specific SSRC to be used.
* Fixed bug in jitter calculation code. Thanks to Uwe Andersen
([email protected]) for bringing this to my attention.
* Added OnPollThreadStart and OnPollThreadStop to RTPSession.
Thanks to Daniele Barzotti ([email protected])
for suggesting this.
* Added method to RTPSessionParams to force a specific CNAME.
Thanks to Lars Rohwedder ([email protected]) for the
suggestion.
* Removed old RTPRandom code and made RTPRandom an abstract
interface. Added a /dev/urandom implementation, a rand_s
implementation and a rand48 implementation. By default,
/dev/urandom and rand_s are tried, and rand48 is used as a
fall-back mechanism.
3.7.1 (May 2007)
* Fixed bug in the CurrentTime implementation (Win32/WinCE version).
Thanks to Dani Baeyens ([email protected]) and Eric Johnson
([email protected]) for helping me solve this problem.
3.7.0 (January 2007)
* Send and receive socket buffer sizes can now be set in the
transmission parameters. Thanks to Dmitry Shandyba
([email protected]) for suggesting this.
* Changed a 'htons' call to a 'ntohs' call in ShouldAcceptData
in both the IPv4 and IPv6 transmitters.
* Fixed bug in RTPIPv6Destination. Thanks to Yi-Huan Chan
([email protected]) and Franco Sinhori
([email protected]) for bringing this to my attention.
3.6.0 (June 2006)
* Added a constructor to the RTCPCompoundPacket class to be able
to parse a compound packet out of a byte array (and not only
out of an RTPRawPacket instance).
* Added a method to RTPSession to send RTCP APP packets. Thanks
to Herman Bastiaens ([email protected])
for supplying the patch.
* Fixed Win32 rand_s bug. Thanks to Jeremy Noring
([email protected]) for supplying the patch.
* Removed the GetNumRTPPacketsSent and GetNumRTCPPacketsSent
functions in the transmitter. The counts were only used to
check if packets had been sent. Now, a flag in RTPSession is
used for this purpose.
* Added memory management support.
* Added a member function to RTPSession which allows passing an
RTPTransmitter instance.
* The instances in the destination lists now store struct
sockaddr variables. This makes sending data to each destination
more efficient.
3.5.2 (March 2006)
* Fixed bug in the random number functions which are used with
MS Visual Studio 2005. Thanks to Jun Ohasi ([email protected])
for bringing the incorrect use of rand_s to my attention.
* Changed types like u_int32_t to types like uint32_t in the
documentation.
3.5.1 (March 2006)
* Fixed bug in RTCP scheduler. Due to -= operation on an RTPTime
instance, an incredibly large scheduling interval could be
calculated.
3.5.0 (March 2006)
* Now, the define RTP_SNPRINTF is used instead of snprintf,
_snprintf or _snprintf_s.
* In the RTPSources member function MultipleTimeouts, I neglected
to call the OnRemoveSource virtual function. Thanks to Adam Love
([email protected]) for bringing this to my attention.
* Added a OnSendRTCPCompoundPacket member function to the RTPSession
class. Useful for inspecting outgoing data.
* Modified the templates somewhat. Should cause less compiler problems
this way. Thanks tot Chris Hamilton ([email protected]) for
providing this solution.
* On Win32, if possible the functions rand_s and srand_s are now used.
3.4.0 (January 2006)
* Changed u_int32_t like types to uint32_t like types. Thanks to
Panagiotis Issaris ([email protected]) for informing me
that these are C99 compliant.
* Changed sprintf functions to safer snprintf functions. Thanks to
Panagiotis Issaris ([email protected]) for pointing this
out.
* Fixed bug in RTPSources (counters were not reset when the source
table was cleared). Thanks to Justin Matthews ([email protected])
for pointing this out.
* Fixed bug in RTPHashTable and RTPKeyHashTable. Thanks to
Tom Pijsel ([email protected]) for bringing this to my
attention.
* Fixed bug in example3.cpp
3.3.0 (October 2005)
* Now it is possible to use a user-defined transmission component.
* Added GStreamer transmission component written by Philippe Khalaf
3.2.1 (September 2005)
* The library wouldn't compile when probation support was disabled.
Thanks to Herman Bastiaens ([email protected]) for
bringing this to my attention.
* When parsed from an RTPRawPacket, the receive time is also stored
in the RTPPacket instance.
3.2.0 (September 2005)
* Modified the routine in the RTPSession class which creates the
CNAME. Aparently on some systems, the 'getlogin' call returns
null. As an alternative, the library uses getenv("LOGNAME").
Thanks to Mark Schiffmann ([email protected]) for
mentioning this to me.
* Added a OnBYEPacket method to the RTPSession class. Thanks to
Sigrid Thijs ([email protected]) for suggesting this.
* When probation support is enabled, a probation type can be selected
when the session is created. Supported types are "No probation",
"Use probation, but store packets" and "Use probation and discard
packets received in probation mode". Thanks to Chris Flerackers
([email protected]) for suggesting this feature.
* Added a parameter to WaitForIncomingData which indicates if
data is available when the function returns. Based on a suggestion
by Uwe Andersen ([email protected]).
* Now using getifaddrs (if possible) to obtain our own IP addresses
(both in IPv4 version and IPv6 version).
* IPv6 code in Win32 version now works, but Visual Studio 2005 beta
has to be used. Thanks to Yi-Huan Chan ([email protected])
for contributing some code.
* Added Win32 code for GetLocalIPList_Interfaces (both IPv4 and IPv6).
Thanks to Ivan Makushkin ([email protected]) for pointing out how
this could be done.
* Added an option to use a SR packet when sending a BYE message.
Previously, a RR packet was always used, even if a session is
actually an active sender of data. Thanks to Uwe Andersen
([email protected]) for bringing this to my attention.
* Fixed bug in CNAME creation.
* Added WinCE support. Thanks to Maarten Daniels
([email protected]) for supplying patches.
* Changed the CurrentTime implementation for the MS-Windows version.
Thanks to Maarten Daniels ([email protected]) and Chris
Flerackers ([email protected]).
3.1.0 (October 2004)
* Added a callback OnPollThreadStep which is called at the end of
each loop of the poll thread
* Added the examples subdirectory to the package
* Fixed bug in rtpudpv4transmitter.cpp and rtpudpv6transmitter.cpp
which caused an infinite loop in LeaveAllMulticastGroups. Thanks
to Stijn Agten ([email protected]) for pointing this out.
* Added a function GetTransmissionInfo to the RTPTransmitter class
(and subclasses). The function will return some additional
information about the transmitter, like local IP addresses and
socket descriptors.
3.0.2 (September 2004)
* Bugfix in rtpinternalsourcedata.cpp. The bug caused a crash when
duplicate packets were received. Thanks to Dominique Prunier
([email protected]) for informing me about
this.
3.0.1 (September 2004)
* Bugfix in rtpudpv4transmitter.cpp and rtpudpv6transmitter.cpp in
method SetReceiveMode
* Removed unused 'acceptownpackets' variable from
rtpudpv4transmitter.cpp and rtpudpv6transmitter.cpp
* Added a 'Dump' function (for debugging) in RTPUDPv4Transmitter
and RTPUDPv6Transmitter
* Now using JThread 1.1.0
3.0.0 (August 2004)
* Complete rewrite of the library to provide better extensibility
and compliance with RFC 3550
* Changes from the 2.x series:
- The 2.x series was created with the idea that the user
would only need to use the RTPSession class which meant
that the other classes were not very useful by themselves.
This version on the other hand, aims to provide many
useful components to aid the user in building RTP capable
applications.
- In this version, the code which is specific for the
underlying protocol by which RTP packets are transported,
is bundled in a class which inherits its interface from a
class called RTPTransmitter. This makes it easy for
different underlying protocols to be supported. Currently
there is support for UDP over IPv4 and UDP over IPv6.
2.9 (July 2004)
* Fixed bug in rtpsrclist.cpp. Thanks to Lukasz Bobowiec
* Added function in RTPSourceData which returns the IP address
* Changed the random routines. Thanks to Jaap Keuter
* Made the shared library link against libstdc++ if possible.
Thanks to Anatoly Yakovenko ([email protected]) for the
suggestion.
2.8 (January 2004)
* Added code to avoid a crash when receiving a malformed packet
* Fixed a memory leak (forgot to free memory when a malformed
packet was discarded)
* Changed debug routines for memory tracking
2.7b (November 2003)
* Only added --enable-fpic and --enable-fPIC to the configure script
2.7 (December 2002)
* Fixed important bug in rtpsources.cpp. This bug could cause
source information to get lost and could create a memory leak.
* Improved support for AIX in multicasting code (uses _AIX define).
Thanks to Klaus Matuschek ([email protected])
* Fixed possible buffer overrun in rtpcontributingsources.cpp
2.6 (January 2002)
* This release only contains some minor changes
* An 'install' target was added to the Makefile
* Some newlines were added add the end of certain files to avoid
compiler warnings
* Improved the jitter calculations somewhat
2.5 (December 2000)
* Added the possibility for the user to receive the raw RTCP packets.
* Fixed a bug in RTPContributingSources::CreateLocalCNAME(). In this
routine, the wrong length was passed to 'gethostname'. Thanks to
Sergey V.Shpital ([email protected]) for bringing this to my
attention.
* Added a routine to set the Type of Service (ToS) field of the
outgoing packets (both RTP and RTCP). Thank to Philippe Cardon
([email protected]) for writing this code.
* Fixed a bug in the 'packets lost' calculation. Thank to Domingo
Cuevas Jr. ([email protected]) for helping me find this bug.
* Fixed a bug in the sequence number and jitter calculation: when
packets were received out of order, the sequence numbers and
jitter got messed up. Many thanks to Mohammad Tawsheeq Russool
([email protected]) for helping me track down these
bugs.
* Added the possibility to set the timestamp unit for a particular
source. Previously, it was assumed that their timestamp unit
was the same as that of the local session.
2.4 (July 2000)
* Fixed a bug which caused all CSRS's except one to be incorrect.
* Added RTP header extension support (for both sending and receiving).
* Added some things (which should have been there already) to
RTPPacket.
* Adjusted the way in which the login name is retrieved on unix-like
systems. First I used a call to 'getlogin', but apparently this
function messes with timers through the use of 'alarm' calls (at
least on Linux). Now, I use a combination of 'geteuid' and
'getpwuid' to obtain the necessary information. This does not
have that problem and is a lot cleaner since it doesn't depend
on login info (utmp) like 'getlogin'. Thanks to Roberto Jung Drebes
([email protected]) for pointing out the timer-problem.
* Made a LaTeX version of the manual and tutorial. Looks a lot nicer.
* Made it possible for the user to specify the local IP address
instead of letting the library figure it out itself.
* Fixed a bug which caused the 'fraction lost' in a RR packet to be
zero all the time. Thanks to Domingo Cuevas Jr. ([email protected]) for
pointing this out.
* Rewrote the RTCP packet sending routines. Now, they are much cleaner
and much more understandable :)
* Added better support for RTCP 'APP' packets. You can now both send
and receive APP packets.
2.3 (April 2000)
* The routine which creates and sends RTCP packets is now a bit faster.
* Added a sample that demonstrates the round-trip time function.
* Added functions to RTPSourceData: now the time when the last RR or
SR report was received can be retrieved. Also, the round trip time
can be retrieved: this is calculated as suggested in RFC 1889.
* Fixed a bug: the LSR value was not calculated correctly, now it is
(or should be ;-) )
* Instead of specifying defines on the command line, they are now
defined in a config file. The unix version of this file is created
by the configure script.
* Added a member to RTPPacket which I had forgotten (the payload type,
which is obviously important :-) ).
* The library should now be able to work on a VxWorks platform. Thanks
to Dave Osborne ([email protected]) for his help.
* Added a tutorial and a small example application.
* Added some debugging routines (RTPDebug class) to check for memory
leaks. It turned out that there weren't any, so I'm pretty pleased ;)
* I've added a 'configure' script to make compilation a bit easier
across different platforms. Thanks to Qi Han ([email protected]) for
helping me to improve the support for the Solaris platform. Also
many thanks to Dario Maggiorini ([email protected]) for
helping me test the script on several platforms.
* Added multicasting support.
* A bug in rtpsourcedata.cpp was pointed out and fixed by Ramon Clout
([email protected]). Many thanks for this, Ramon.
2.2 (February 2000)
* Extra support for Sun and HP. Thanks to Henry Lau ([email protected])
and Justin Matthews ([email protected]) for this information.
* The 'Poll' routine in rtpconnection.cpp has been altered. Now, the
routine should work even if there's that ioctl bug (previously, this
bug was only taken into consideration on a Windows platform).
Thanks to Justin Matthews ([email protected]) for his bugreport.
* Added some routines to RTPSession to get the local IP address and the
port number of the sending socket.
* 'install' rule added to the makefile.
* Added the define 'RTP_SOCKLENTYPE_UINT'. See README.TXT for more
information about this.
2.1 (December 1999)
* First release of jrtplib.
* Added member functions of RTPSession to retrieve the used sockets.
* Made the destination list faster by using a hash table.
2.0 (August 1999)
* First decent implementation of RTP. Entirely rewritten since 1.0.
1.0 (August 1999)
* First implementation of RTP. There were a lot of things that weren't
quite right and the organisation of the classes was quite nasty.
However, I learned a lot about RTP making this version, and so it
allowed me to make a good start on version 2.0.