5.2.1. Release notes for v0.11
About release 0.11
The main feature of this SDK release is adding a new type of adaptive streaming rule
called AdaptiveBandsRule
.
For other improvements and bug fixes, see the release notes.
NOTE: This release introduces some breaking changes, please see the notes below.
WARNING: Previously deprecated functions are now removed
Previously deprecated APIs have been removed in this release. See the notes below for details of deprecated functions.
v0.11.2
Feature: Peer streaming improvements
Peer streams are now implemented using SRT, rather than SRTP. The benefits of this change include:
Receiving peers can now connect to a stream at any time, rather than needing to be present at the start of the stream.
Streams will recover after connection loss
Sending peers are now notified when a receiving peer connects or disconnects
v0.11.1
Bug fixes and improvements
This release includes adjustments and optimisations to peer streaming audio feeds. This should resolve reported issues of peer audio becoming increasingly out of sync over time, and improves general latency for peer audio feeds.
Feature: Proximie REST API improvements
The Proximie REST API support in ProximieServices
has been improved to include richer details in the case of errors.
Previously, only a simple error code indicating HTTP status type (e.g. a 400 “client error”)
would typically be available. Now, in the case of error, the details included in
the response are available in the resulting response object.
For more details, see the updated Proximie REST services section.
Deprecated types
The following types are deprecated and will be removed in a future release:
HttpFetchTyped<T>
and
RestService
.
These are unlikely to affect any client/application code, as they were chiefly used
to support the implementation of ProximieServices
,
which no longer uses them.
v0.11.0
WARNING: Previously deprecated functions are now removed
This release removes various previously deprecated functions and types. The sample demo has removed these deprecated functions and types.
Use
PxMedia::MediaServerOutgoingVideoFeed
for local/outgoing video feeds instead of:PxMedia::LocalVideoFeed
MediaServerSession::StartLocalVideoProperties
MediaServerSession::startLocalVideo
MediaServerSession::createLocalVideoFeed
MediaServerSession::stopLocalVideo
Use
PxMedia::MediaServerIncomingVideoFeed
for remote/incoming feeds instead of:MediaServerSession::StartRemoteVideoProperties
MediaServerSession::startRemoteVideo
MediaServerSession::stopRemoteVideo
Use
PxMedia::MediaServerTwoWayAudioFeed
for audio feeds instead of:MediaServerSession::StartAudioProperties
MediaServerSession::startAudio
MediaServerSession::stopAudio
Collect stats directly from feed objects:
PxMedia::FeedStatistics
is now namedPxMedia::MediaServerFeedStats
MediaServerSession::collectStatsPeriod
andMediaServerSession::onFeedStatistics
are removed
PeerSession::listFeeds
is nowlistSessionFeedIds()
Certain Proximie REST API payloads have had their deprecated fields removed:
-
scheduledDateAndTime
is removed, usescheduledAt
instead
PxRestApi::UserWithId
and subclasses:firstName
andlastName
are removed, usename
instead
-
Feature: New “banded” adaptive streaming rule
A new adaptive streaming rule called AdaptiveBandsRule
has been added to the SDK to allow the application specify a set of bands across
the quality range (0..1).
The application provides an ordered vector of bands, which are used to break the
quality range into segments. Each band has a “weight” which determines the band size.
using VideoResolution = PxMedia::VideoCapabilities::VideoResolution;
// Define 3 bands of equal weighting from low, to mid, to top quality
auto ruleCreated = PxMedia::AdaptiveBandsRule<VideoResolution>::create(
{{1, MIN_VIDEO_RESOLUTION}, // Lowest tier when quality is worst
{1, MID_VIDEO_RESOLUTION}, // Middle tier
{1, BEST_VIDEO_RESOLUTION}}); // Highest tier maintained for upper 1/3rd quality
if (!ruleCreated) {
// Handle error...
}
auto resolutionRule = ruleCreated.value();
// Apply rule to the feed video component as before
video.videoCapabilities().adaptiveResolution(resolutionRule);
This style of rule allows the application to specify discrete quality values rather
than a continuous range per the existing AdaptiveMinMaxRule
.
Bands can also be used to allow feeds to maintain a quality level whilst other feeds are behaving differently - e.g. a high priority feed could maintain a fixed quality output at the top of the range (e.g. setting the 50% - 100% band at high quality), allowing other feeds to drop quality earlier. Here, the goal could be to model allowing lower priority feeds to drop before the higher quality feeds decide to if the network conditions remain too poor.
The demo has been updated to demonstrate both the existing min/max rule and the new
banded rule. This is controlled by the existing demo-adaptive
command line option and
environment variable PXSDK_DEMO_ADAPTIVE
.
However, now instead of a flag option, demo-adaptive
accepts values of
either minmax
or bands
.
Feature: Obtain pipeline graphs from feed objects
Feed objects now support the ability to obtain GStreamer graphs for pipelines, in the standard dot format.
For details and example usage, see the Debugging section.