diff --git a/README.md b/README.md index 720593e..f606ece 100644 --- a/README.md +++ b/README.md @@ -1,149 +1,24 @@ -JRTPLIB -======= - -> Developed at the [Expertise Centre for Digital Media (EDM)](http://www.edm.uhasselt.be), -> a research institute of the [Hasselt University](http://www.uhasselt.be) - -Library location and contact ----------------------------- - -Normally, you should be able to download the latest version of the library -from this url: [http://research.edm.uhasselt.be/jori/jrtplib](http://research.edm.uhasselt.be/jori/jrtplib) - -Documentation can be found at [jrtplib.readthedocs.io](http://jrtplib.readthedocs.io) - -If you have questions about the library, you can mail me at: -[jori.liesenborgs@gmail.com](mailto:jori.liesenborgs@gmail.com) - -Acknowledgment --------------- - -I would like thank the people at the Expertise Centre for Digital Media -for giving me the opportunity to create this rewrite of the library. -Special thanks go to Wim Lamotte for getting me started on the RTP -journey many years ago. - -Disclaimer & Copyright ----------------------- - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. - -Installation notes ------------------- - -* Use the [CMake](https://cmake.org/) build system to compile the library. - In case extra include directories or libraries are needed, you can use the - `ADDITIONAL_` CMake variables to specify these. They will be stored in both - the resulting JRTPLIB CMake configuration file and the pkg-config file. - -* The library documentation can be generated using Doxygen. An on-line - version can be found at [http://jrtplib.readthedocs.io](http://jrtplib.readthedocs.io) - -* For systems with low memory or for applications which will involve only - a few participants at a time: - You can set the `HASHSIZE` defines in `rtpsources.h`, `rtpudpv4transmitter.h` - and `rtpudpv6transmitter.h` to a lower value to avoid memory being wasted. - Note that the library will have to be recompiled. - -* Used defines: - - - `WIN32`: For compilation on an Win32 platform. - - - `_WIN32_WCE`: Define needed for compilation on a WinCE platform - - - `RTP_HAVE_SYS_FILIO`: Set if `` exists. - - - `RTP_HAVE_SYS_SOCKIO`: Set if `` exists. - - - `RTP_BIG_ENDIAN`: If set, assume big-endian byte ordering. - - - `RTP_SOCKLENTYPE_UINT`: Indicates that getsockname used an unsigned int - as its third parameter. - - - `RTP_HAVE_SOCKADDR_LEN`: Indicates that struct sockaddr has an sa_len - field. - - - `RTP_SUPPORT_IPV4MULTICAST`: Enables support for IPv4 multicasting. - - - `RTP_SUPPORT_THREAD`: Enables support for JThread. - - - `RTP_SUPPORT_SDESPRIV`: Enables support for RTCP SDES private items. - - - `RTP_SUPPORT_PROBATION`: If set, a few consecutive RTP packets are - needed to validate a member. - - - `RTP_SUPPORT_GETLOGINR`: If set, the library will use getlogin_r instead - of getlogin. - - - `RTP_SUPPORT_IPV6`: If set, IPv6 support is enabled. - - - `RTP_SUPPORT_IPV6MULTICAST`: If set, IPv6 multicasting support is enabled. - - - `RTP_SUPPORT_SENDAPP`: If set, sending of RTCP app packets is enabled. - - - `RTP_SUPPORT_MEMORYMANAGEMENT`: If set, the memory management system is - enabled. - - - `RTP_SUPPORT_RTCPUNKNOWN`: If set, sending of unknown RTCP packets is - enabled. - - - `RTPDEBUG`: Enables some memory tracking functions and some debug - routines. - -Cross-compilation of JThread & JRTPLIB for Android --------------------------------------------------- - -**Warning:** When cross-compiling, the configuration defaults to big-endian. -But since most Android systems are little-endian, you should probably change -this setting in the CMake configuration. - -The approach I follow for cross-compiling these libraries for the Android -platform is sketched below. The following lines are stored in a file called -`toolchain.cmake` (for example): - - set(CMAKE_SYSTEM_NAME Android) - set(CMAKE_SYSTEM_VERSION 21) # API level - set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a) - set(CMAKE_ANDROID_NDK /path/to/ndk-bundle/) - set(CMAKE_ANDROID_STL_TYPE gnustl_static) - - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - -When starting CMake, first for JThread and afterwards for JRTPLIB, I then manually -add the following entries: - - CMAKE_TOOLCHAIN_FILE /path/to/toolchain.cmake - CMAKE_INSTALL_PREFIX /path/to/installation/directory - CMAKE_FIND_ROOT_PATH /path/to/installation/directory - -For example, I like to use the `ccmake` program, which would yield -the following command line: - - ccmake -DCMAKE_TOOLCHAIN_FILE=/path/to/toolchain.cmake \ - -DCMAKE_INSTALL_PREFIX=/path/to/installation/directory \ - -DCMAKE_FIND_ROOT_PATH=/path/to/installation/directory \ - /path/to/main/CMakeLists.txt - -After configuring JThread this way, just build and install it. The same CMake -procedure for JRTPLIB should then automatically detect the correct JThread -(so the one that's installed in your cross-compilation installation directory), -after which you can again build and install the RTP library. +(For the original README file, see [README2.md](README2.md)) + +End of development +================== + +I find that this is a difficult decision, and I can't really think of a way +to present all the thoughts that have convinced me that this is a step I +need to make. This library started as my first real open source project way +back in 1999, when I was still very much a student, and it was the first time +I actually shared any kind of code with the outside world. Needless to say, +it will always be linked to many good memories, and as such is hard to let +go. + +Times change however, and I feel I haven't been able to give this project the +attention it deserves for quite some time now, even though it probably does +not really require that many interventions. As other things have come along +that captured my interest, and as some health issues have come along that +further captured some time, I think the time has come to make this difficult +decision. + +So it is with mixed emotions, both sadness as well as a feeling of relief, +that I say goodbye to JRTPLIB. + +Jori diff --git a/README2.md b/README2.md new file mode 100644 index 0000000..720593e --- /dev/null +++ b/README2.md @@ -0,0 +1,149 @@ +JRTPLIB +======= + +> Developed at the [Expertise Centre for Digital Media (EDM)](http://www.edm.uhasselt.be), +> a research institute of the [Hasselt University](http://www.uhasselt.be) + +Library location and contact +---------------------------- + +Normally, you should be able to download the latest version of the library +from this url: [http://research.edm.uhasselt.be/jori/jrtplib](http://research.edm.uhasselt.be/jori/jrtplib) + +Documentation can be found at [jrtplib.readthedocs.io](http://jrtplib.readthedocs.io) + +If you have questions about the library, you can mail me at: +[jori.liesenborgs@gmail.com](mailto:jori.liesenborgs@gmail.com) + +Acknowledgment +-------------- + +I would like thank the people at the Expertise Centre for Digital Media +for giving me the opportunity to create this rewrite of the library. +Special thanks go to Wim Lamotte for getting me started on the RTP +journey many years ago. + +Disclaimer & Copyright +---------------------- + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. + +Installation notes +------------------ + +* Use the [CMake](https://cmake.org/) build system to compile the library. + In case extra include directories or libraries are needed, you can use the + `ADDITIONAL_` CMake variables to specify these. They will be stored in both + the resulting JRTPLIB CMake configuration file and the pkg-config file. + +* The library documentation can be generated using Doxygen. An on-line + version can be found at [http://jrtplib.readthedocs.io](http://jrtplib.readthedocs.io) + +* For systems with low memory or for applications which will involve only + a few participants at a time: + You can set the `HASHSIZE` defines in `rtpsources.h`, `rtpudpv4transmitter.h` + and `rtpudpv6transmitter.h` to a lower value to avoid memory being wasted. + Note that the library will have to be recompiled. + +* Used defines: + + - `WIN32`: For compilation on an Win32 platform. + + - `_WIN32_WCE`: Define needed for compilation on a WinCE platform + + - `RTP_HAVE_SYS_FILIO`: Set if `` exists. + + - `RTP_HAVE_SYS_SOCKIO`: Set if `` exists. + + - `RTP_BIG_ENDIAN`: If set, assume big-endian byte ordering. + + - `RTP_SOCKLENTYPE_UINT`: Indicates that getsockname used an unsigned int + as its third parameter. + + - `RTP_HAVE_SOCKADDR_LEN`: Indicates that struct sockaddr has an sa_len + field. + + - `RTP_SUPPORT_IPV4MULTICAST`: Enables support for IPv4 multicasting. + + - `RTP_SUPPORT_THREAD`: Enables support for JThread. + + - `RTP_SUPPORT_SDESPRIV`: Enables support for RTCP SDES private items. + + - `RTP_SUPPORT_PROBATION`: If set, a few consecutive RTP packets are + needed to validate a member. + + - `RTP_SUPPORT_GETLOGINR`: If set, the library will use getlogin_r instead + of getlogin. + + - `RTP_SUPPORT_IPV6`: If set, IPv6 support is enabled. + + - `RTP_SUPPORT_IPV6MULTICAST`: If set, IPv6 multicasting support is enabled. + + - `RTP_SUPPORT_SENDAPP`: If set, sending of RTCP app packets is enabled. + + - `RTP_SUPPORT_MEMORYMANAGEMENT`: If set, the memory management system is + enabled. + + - `RTP_SUPPORT_RTCPUNKNOWN`: If set, sending of unknown RTCP packets is + enabled. + + - `RTPDEBUG`: Enables some memory tracking functions and some debug + routines. + +Cross-compilation of JThread & JRTPLIB for Android +-------------------------------------------------- + +**Warning:** When cross-compiling, the configuration defaults to big-endian. +But since most Android systems are little-endian, you should probably change +this setting in the CMake configuration. + +The approach I follow for cross-compiling these libraries for the Android +platform is sketched below. The following lines are stored in a file called +`toolchain.cmake` (for example): + + set(CMAKE_SYSTEM_NAME Android) + set(CMAKE_SYSTEM_VERSION 21) # API level + set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a) + set(CMAKE_ANDROID_NDK /path/to/ndk-bundle/) + set(CMAKE_ANDROID_STL_TYPE gnustl_static) + + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + +When starting CMake, first for JThread and afterwards for JRTPLIB, I then manually +add the following entries: + + CMAKE_TOOLCHAIN_FILE /path/to/toolchain.cmake + CMAKE_INSTALL_PREFIX /path/to/installation/directory + CMAKE_FIND_ROOT_PATH /path/to/installation/directory + +For example, I like to use the `ccmake` program, which would yield +the following command line: + + ccmake -DCMAKE_TOOLCHAIN_FILE=/path/to/toolchain.cmake \ + -DCMAKE_INSTALL_PREFIX=/path/to/installation/directory \ + -DCMAKE_FIND_ROOT_PATH=/path/to/installation/directory \ + /path/to/main/CMakeLists.txt + +After configuring JThread this way, just build and install it. The same CMake +procedure for JRTPLIB should then automatically detect the correct JThread +(so the one that's installed in your cross-compilation installation directory), +after which you can again build and install the RTP library.