Skip to content

Commit

Permalink
Code autogenerated from Kurento/doc-kurento@4ce9614
Browse files Browse the repository at this point in the history
  • Loading branch information
jenkinskurento committed May 11, 2022
1 parent a1e5578 commit 21b261b
Show file tree
Hide file tree
Showing 5 changed files with 265 additions and 84 deletions.
2 changes: 1 addition & 1 deletion source/dev/dev_guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ To build the source code of Kurento Media Server, you have 2 options:

To work directly with Kurento source code, the easiest way is using the **kms-omni-build** repo, which aggregates all the other Kurento projects in the form of `git submodules <https://git-scm.com/book/en/v2/Git-Tools-Submodules>`__.

In all cases, the workflow is the same. Follow these steps to end up with an environment that is approrpiate for hacking on the Kurento source code:
In all cases, the workflow is the same. Follow these steps to end up with an environment that is appropriate for hacking on the Kurento source code:

1. Install required tools.
2. Install build dependencies.
Expand Down
3 changes: 2 additions & 1 deletion source/project/relnotes/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ Release Notes
.. toctree::
:maxdepth: 1

v6_16_1
v6_18_0
v6_17_0
v6_16_0
v6_15_0
v6_14_0
Expand Down
82 changes: 0 additions & 82 deletions source/project/relnotes/v6_16_1.rst

This file was deleted.

30 changes: 30 additions & 0 deletions source/project/relnotes/v6_17_0.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
===================
6.17.0 (March 2022)
===================

This is a very small release, made to incorporate the ability to inherit new modules from *RtpEndpoint*.

To install Kurento Media Server: :doc:`/user/installation`.



Changed
=======

Inheritable RtpEndpoint
-----------------------

The Kurento *RtpEndpoint* classes were *final*, meaning that it was not possible to inherit from them in order to create new, specialized versions of the endpoint. This was a problem for the fellow contributors at `Naeva Tec <https://www.naevatec.com/>`__, who were trying to write `SipRtpEndpoint <https://github.com/naevatec/kms-siprtpendpoint>`__, a new endpoint that contains specific behaviors to make it work well with SIP communications.

This limitation got solved in this release. With the reorganization of several classes and introduction of a new internal library for the *RtpEndpoint*, it can now be inherited to create new classes based on it.

Thanks to `@slabajo <https://github.com/slabajo>`__ (Saúl Labajo) for `Kurento/kms-elements#32 <https://github.com/Kurento/kms-elements/pull/32>`__ (*prepare for siprtp_module*) and `Kurento/kms-elements#33 <https://github.com/Kurento/kms-elements/pull/33>`__ (*RtpEndpoint library*).



Other changes
=============

This list includes other changes and fixes contributed by users and/or fellow developers, who merit our sincere appreciation and thanks for sharing their work with the Kurento project:

* `@pabs3 <https://github.com/pabs3>`__ (Paul Wise) for `Kurento/kurento-module-creator#3 <https://github.com/Kurento/kurento-module-creator/pull/3>`__ (*Add KurentoModuleCreatorConfig with path to FindKurentoModuleCreator*).
232 changes: 232 additions & 0 deletions source/project/relnotes/v6_18_0.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,232 @@
===================
6.18.0 (UNRELEASED)
===================

One of the latest (if not the last) releases of the 6.x branch of Kurento; this one brings several deprecations that pave the way for introduction of the upcoming Kurento 7.0.

To install Kurento Media Server: :doc:`/user/installation`.



Added
=====

FLV Recording Profile for RTMP
------------------------------

The *RecorderEndpoint* gained a new **FLV** recording profile, which means that the resulting files can be used directly for RTMP streaming.

Thanks to `@alex1712 <https://github.com/alex1712>`__ (Alex) for `Kurento/kms-core#24 <https://github.com/Kurento/kms-core/pull/24>`__ and `Kurento/kms-elements#30 <https://github.com/Kurento/kms-elements/pull/30>`__ (*FLV media profile*).



Changed
=======

WebRTC DTLS Quick Connection
----------------------------

There was a design issue in the way Kurento established the WebRTC communications channel, that led it to mistakenly send the initial DTLS handsake packets before ICE had established a working network socket, leading to the dropping of such handsake packets.

Thankfully, DTLS doesn't give up as soon as some packets are dropped; instead, it just follows a progressively larger timeout scheme. Eventually the ICE protocol would establish a working socket, and one of the DTLS reattempts would finally be able to travel through it. However, this whole delay meant that WebRTC connections were taking much more time than what they really should.

Thanks to this change, now the DTLS handsake will be put on hold until ICE has finished its work and the network socket is well established and ready for comms; this way, the very first DTLS packets will already reach their destination, thus speeding up the whole process.

Thanks to `@slabajo <https://github.com/slabajo>`__ (Saúl Labajo) for `Kurento/kms-elements#37 <https://github.com/Kurento/kms-elements/pull/37>`__ (*WebRTC DTLS handsake quick connection*).



Deprecated: OpenCV extra modules
================================

Kurento has always included several Computer Vision plugins and extension modules, for demonstration purposes. These were used to showcase the powerful, dynamic plug-and-play capabilities of Kurento Pipelines, providing a very visual and somewhat fancy way to convey how easy it is to manipulate video images in real time, with Kurento and OpenCV.

However, Kurento's OpenCV modules had been written against the old, C-based API of OpenCV 2.0. Over time, OpenCV 3.0 evolved into a more modern C++ based API, while keeping some backwards-compatibility with older C code. This was enough for us to keep publishing the Kurento demonstration plugins on Ubuntu 16.04 "Xenial" and Ubuntu 18.04 "Bionic". However, on 2020 the release of Ubuntu 20.04 "Focal", **OpenCV 4.0 marks the point where the Kurento plugin code doesn't compile and must be retired**.

The list of modules marked for retirement is as follows:

* Plugins that came included in *kms-filters* module:

- facedetector
- faceoverlay
- imageoverlay
- logooverlay
- movementdetector

* Plugins that were offered as additional installable modules:

- kms-chroma
- kms-crowddetector
- kms-datachannelexample
- kms-markerdetector
- kms-platedetector
- kms-pointerdetector

Starting with support for OpenCV 4.0, the old OpenCV 2.0 based plugin code cannot be compiled any more. Kurento project maintainers do not have the time, knowledge, or scheduling bandwidth to migrate these plugins into modern OpenCV 4.0 style code, so they will get discontinued until/unless some open-source community members can offer some help with porting them. If you'd like to see these plugins alive, and would be able to give us a hand, please contact us! :-)

These removals will be efective starting from the next major release, Kurento 7.0.



Deprecated: Renamed API methods
===============================

This section details all API deprecations that occur with the intention of paving the way for a cleaned up API in Kurento 7.0.

By following the renames detailed here, you should be able to make the jump to newer versions of Kurento without requiring any rewrites at the logic level.



timestamp -> timestampMillis
----------------------------

Several object classes contained a ``timestamp`` field, which wasn't fine-grained enough, so the ``timestampMillis`` field was introduced to replace the former.

These classes are ``Stats`` (common parent of all Stats classes), and ``RaiseBase`` (common parent of all ``Event`` classes).

* Old: ``timestamp`` - Seconds elapsed since the UNIX Epoch (Jan 1, 1970, UTC)
* New: ``timestampMillis`` - Milliseconds elapsed since the UNIX Epoch (Jan 1, 1970, UTC)



MediaObject and MediaElement
----------------------------

These changes are located in the parent classes of all Kurento elements, so all Kurento classes are affected, such as ``RtpEndpoint``, ``WebRtcEndpoint``, ``PlayerEndpoint``, ``RecorderEndpoint``, etc.



Media Events
~~~~~~~~~~~~

A series of deprecations and renamings that normalize all events into the same naming convention.

* Old: ``MediaFlowOutStateChange`` event
* New: ``MediaFlowOutStateChanged`` event

* Old: ``MediaFlowInStateChange`` event
* New: ``MediaFlowInStateChanged`` event

* Old: ``MediaTranscodingStateChange`` event
* New: ``MediaTranscodingStateChanged`` event



childs -> children
~~~~~~~~~~~~~~~~~~

* Old: ``MediaObject.getChilds()``
* New: ``MediaObject.getChildren()``



setOutputBitrate -> minOutputBitrate, maxOutputBitrate
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

All ``MediaElement``-derived classes had a ``setOutputBitrate()`` method that could be used to set a specific target bitrate for the video stream. Instead, use the setters to specify a minimum and maximum desired target. To replicate the same behavior that ``setOutputBitrate()`` had, just provide the same value as both min and max.

* Old: ``setOutputBitrate()``
* New: ``setMinOutputBitrate()``, ``setMaxOutputBitrate()``



minOuputBitrate, maxOuputBitrate -> minOutputBitrate, maxOutputBitrate
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

These changes fix a typo in the original property names.

* Old: ``getMinOuputBitrate()``, ``setMinOuputBitrate()``
* New: ``getMinOutputBitrate()``, ``setMinOutputBitrate()``

* Old: ``getMaxOuputBitrate()``, ``getMaxOuputBitrate()``
* New: ``setMaxOutputBitrate()``, ``setMaxOutputBitrate()``



WebRtcEndpoint
--------------

ICE Events
~~~~~~~~~~

A series of deprecations and renamings that normalize all events into the same naming convention.

* Old: ``OnIceCandidate`` event
* New: ``IceCandidateFound`` event

* Old: ``OnIceGatheringDone`` event
* New: ``IceGatheringDone`` event

* Old: ``OnIceComponentStateChanged``, ``IceComponentStateChange`` events
* New: ``IceComponentStateChanged`` event

* Old: ``OnDataChannelOpened``, ``DataChannelOpen`` events
* New: ``DataChannelOpened`` event

* Old: ``OnDataChannelClosed``, ``DataChannelClose`` event
* New: ``DataChannelClosed`` event



externalAddress -> externalIPv4, externalIPv6
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Old: ``externalAddress`` setting
* New: ``externalIPv4``, ``externalIPv6`` settings

* Old: ``getExternalAddress()``
* New: ``getExternalIPv4()``, ``getExternalIPv6()``

* Old: ``setExternalAddress()``
* New: ``setExternalIPv4()``, ``setExternalIPv6()``



IceCandidatePair
----------------

Unifies all Kurento "Id" members under the same naming convention.

* Old: ``streamID``
* New: ``streamId``

* Old: ``componentID``
* New: ``componentId``



Stats
-----

inputAudioLatency, inputVideoLatency -> inputLatency
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Old: ``ElementStats.inputAudioLatency``, ``ElementStats.inputVideoLatency`` - Average latency, in nanoseconds.
* New: ``ElementStats.inputLatency`` - Array of average latencies (``MediaLatencyStat[]``), in nanoseconds.



audioE2ELatency, videoE2ELatency -> E2ELatency
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Old: ``EndpointStats.audioE2ELatency``, ``EndpointStats.videoE2ELatency`` - End-to-end latency, in nanoseconds.
* New: ``EndpointStats.E2ELatency`` - Array of average latencies (``MediaLatencyStat[]``), in nanoseconds.



Fixed
=====

* `#289 <https://github.com/Kurento/bugtracker/issues/289>`__ (*Kurento scaffolder produces not compilable code if using a wrong name*).
* `#470 <https://github.com/Kurento/bugtracker/issues/470>`__ (*kmsaudiomixer outputs silence after running for 2 hours*).
* `#616 <https://github.com/Kurento/bugtracker/issues/616>`__ (*Kurento Media Server not sending relay candidates, although configured, unless ANSWER is received or OFFER is processed*).
* `#622 <https://github.com/Kurento/bugtracker/issues/622>`__ (*externalIpv4 and externalIpv6 affect all candidates instead of just host*).



Other changes
=============

This list includes other changes and fixes contributed by users and/or fellow developers, who merit our sincere appreciation and thanks for sharing their work with the Kurento project:

* `@dpocock <https://github.com/dpocock>`__ (Daniel Pocock) for `Kurento/kms-elements#35 <https://github.com/Kurento/kms-elements/pull/35>`__ (*CMakeLists.txt: explicitly list the Boost libraries required for linking*).

0 comments on commit 21b261b

Please sign in to comment.