418 lines
19 KiB
Plaintext
418 lines
19 KiB
Plaintext
![]() |
|
||
|
JRTPLIB ChangeLog
|
||
|
-----------------
|
||
|
3.11.2 (April 2020):
|
||
|
* Taking EINTR in nanosleep, poll and select calls into account.
|
||
|
Thanks to Filippo Guerzoni (filippo.guerzoni@gmail.com) 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 (vladvic_r@mail.ru) and to
|
||
|
Alexey Obergan (alex.obergan@gmail.com) 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
|
||
|
(roddi@me.com) 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
|
||
|
(crazykum@ukr.net) 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 (d.thomas.harper@gmail.com)
|
||
|
* Fixed bug in INF_GetEstimatedTimestampUnit (possibility of
|
||
|
division by zero). Thanks to Gilson Yi (gilson.yi@gmail.com)
|
||
|
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
|
||
|
(uandersen@mayah.com) for bringing this to my attention.
|
||
|
* Added OnPollThreadStart and OnPollThreadStop to RTPSession.
|
||
|
Thanks to Daniele Barzotti (daniele.barzotti@eurocomtel.com)
|
||
|
for suggesting this.
|
||
|
* Added method to RTPSessionParams to force a specific CNAME.
|
||
|
Thanks to Lars Rohwedder (L.Rohwedder@mocotec.de) 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 (dani@warp.es) and Eric Johnson
|
||
|
(EJohnson@pelco.com) 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
|
||
|
(Dmitry.Shandyba@materialise.kiev.ua) 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
|
||
|
(yhchan@csie.nctu.edu.tw) and Franco Sinhori
|
||
|
(francosinhori@gmail.com) 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 (herman.bastiaens@student.uhasselt.be)
|
||
|
for supplying the patch.
|
||
|
* Fixed Win32 rand_s bug. Thanks to Jeremy Noring
|
||
|
(jnoring@wilife.com) 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 (jun@jnb.odn.ne.jp)
|
||
|
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
|
||
|
(alove@exceptionalinnovation.com) 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 (chamilton@cs.dal.ca) 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 (takis.issaris@uhasselt.be) for informing me
|
||
|
that these are C99 compliant.
|
||
|
* Changed sprintf functions to safer snprintf functions. Thanks to
|
||
|
Panagiotis Issaris (takis.issaris@uhasselt.be) for pointing this
|
||
|
out.
|
||
|
* Fixed bug in RTPSources (counters were not reset when the source
|
||
|
table was cleared). Thanks to Justin Matthews (jmatthewsr@yahoo.com)
|
||
|
for pointing this out.
|
||
|
* Fixed bug in RTPHashTable and RTPKeyHashTable. Thanks to
|
||
|
Tom Pijsel (tom.pijsel@twelvecubes.com) 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
|
||
|
(burger@speedy.org).
|
||
|
|
||
|
3.2.1 (September 2005)
|
||
|
* The library wouldn't compile when probation support was disabled.
|
||
|
Thanks to Herman Bastiaens (herman.bastiaens@student.luc.ac.be) 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 (schima@neumann-elektronik.com) for
|
||
|
mentioning this to me.
|
||
|
* Added a OnBYEPacket method to the RTPSession class. Thanks to
|
||
|
Sigrid Thijs (sthijs@androme.be) 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
|
||
|
(cflerackers@androme.be) 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 (uandersen@mayah.com).
|
||
|
* 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 (yhchan@csie.nctu.edu.tw)
|
||
|
for contributing some code.
|
||
|
* Added Win32 code for GetLocalIPList_Interfaces (both IPv4 and IPv6).
|
||
|
Thanks to Ivan Makushkin (camry@pisem.net) 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
|
||
|
(uandersen@mayah.com) for bringing this to my attention.
|
||
|
* Fixed bug in CNAME creation.
|
||
|
* Added WinCE support. Thanks to Maarten Daniels
|
||
|
(maarten.daniels@uhasselt.be) for supplying patches.
|
||
|
* Changed the CurrentTime implementation for the MS-Windows version.
|
||
|
Thanks to Maarten Daniels (maarten.daniels@uhasselt.be) and Chris
|
||
|
Flerackers (cflerackers@androme.be).
|
||
|
|
||
|
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 (stijn.agten@luc.ac.be) 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
|
||
|
(dominique.prunier@micromedia-int.com) 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
|
||
|
(bobowiec@icslab.agh.edu.pl)
|
||
|
* Added function in RTPSourceData which returns the IP address
|
||
|
* Changed the random routines. Thanks to Jaap Keuter
|
||
|
(jaap.keuter@xs4all.nl)
|
||
|
* Made the shared library link against libstdc++ if possible.
|
||
|
Thanks to Anatoly Yakovenko (aeyakovenko@yahoo.com) 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 (klaus.matuschek@infonova.com)
|
||
|
* 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 (sergey@page.net.ru) 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
|
||
|
(philippe.cardon@bt.com) for writing this code.
|
||
|
* Fixed a bug in the 'packets lost' calculation. Thank to Domingo
|
||
|
Cuevas Jr. (dcj@onebox.com) 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
|
||
|
(m.russool@eim.surrey.ac.uk) 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
|
||
|
(drebes@inf.ufrgs.br) 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. (dcj@onebox.com) 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 (dosborne@argoneng.com) 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 (qh1c4@mizzou.edu) for
|
||
|
helping me to improve the support for the Solaris platform. Also
|
||
|
many thanks to Dario Maggiorini (dario@netdev.usr.dsi.unimi.it) 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
|
||
|
(ramonc@win.tue.nl). Many thanks for this, Ramon.
|
||
|
|
||
|
2.2 (February 2000)
|
||
|
* Extra support for Sun and HP. Thanks to Henry Lau (hlau@nuera.com)
|
||
|
and Justin Matthews (jmatthews@nuera.com) 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 (jmatthews@nuera.com) 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.
|