5.1.1. Release notes for v0.16
5.1.1.1. v0.16.1
Deprecations in this release
For consistency and clarity, the following SDK features have been deprecated in this release:
VideoOutputFeedFakehas been renamed toVideoOutputComponentNull. Please update any references to use theVideoOutputComponentNullclass andPxMedia/VideoOutputComponentNull.hheader.
Bug fix: Remote recording samples recording state improvements
The sample code was tracking its own version of recording state, but the correct approach is to simply obtain the current recording state from the session, which is updated when changed by any session participant.
Remote recording sample update: requires audio feed
Proximie media server sessions expect an audio feed to be present when using the recording feature.
The remote recording sample has been updated to create “no-op” audio feed to demonstrate how an
application that does not need audio input or output can meet this requirement.
It uses special audio components AudioInputComponentSilence (for
a silent input) and AudioOutputComponentNull (for a null output).
See the recording demo sample for more details.
Note, this requirement will be removed in a forthcoming SDK release.
Bug fix: SDK destruction improvements
During static destruction, a logger could be destructed before other elements try to use it,
resulting in an error. PXLOG() now checks for logger existence before trying to use it.
PXASSERT macros now log more useful information
PXASSERT(), PXASSERT_MSG() and PXASSERT_SUCCESS() macros now log error codes and error
messages based on error codes where possible.
Docker images now pin some build dependency versions
To ensure consistent builds, some build dependencies in the SDK Docker images are now pinned to specific versions. The pinned versions are as follows:
gcovr: 8.6
breathe: 4.36.0
sphinx-rtd-theme: 3.1.0
This change helps to avoid potential issues arising from updates to these tools that could affect the build process.
5.1.1.2. v0.16.0
This release includes several new features and bug fixes, as well as some minor breaking changes:
Minor breaking changes
Renaming of streamId to sessionId or feedId for clarity.
New Features
Remote recording support in media server sessions.
New video input feed class to read video from file.
Bug fixes
Fixes related to media server feed handling and session connection outcomes.
Session connect/disconnect outcome reporting fixed.
Other changes
Media server feed creation functions now communicate with servers.
Sample authentication code improvements.
Updated CMake installer script to ensure CMake repository GPG key is kept up to date.
See below for full details.
Bug fix: SDK feeds were incorrectly sorted in Live App
Newly added feeds are expected to appear after existing feeds.
Fix: Incorrect ‘outcome’ of session connect/disconnect
Fixes an incorrect outcome results being reported from
connectToSession() and
disconnectFromSession().
Previously, the outcome would indicate failure, but when the error value was checked, it would indicate success:
auto disconnected = mediaSession->disconnectFromSession().get();
if (!disconnected) {
// Previously: the outcome always indicated failure...
auto error = disconnected.error();
if (!error) {
// Disconnection was actually successful!?
}
}
Now, the outcome will only indicate a failure when an actual error has occurred.
auto disconnected = mediaSession->disconnectFromSession().get();
if (!disconnected) {
// Now: The outcome error will never indicate success when outcome indicated failure
auto error = disconnected.error();
assert(error); // error will never indicate success now
}
Outgoing media server feed creation functions now communicate with servers
The following functions:
now conduct blocking round trip communication with Proximie servers. Asynchronous versions of these functions have been added which return FutureOutcome instead of NotNullOutcome.
Minor breaking change: renamed streamId to either sessionId or feedId (or id when feed or session is clear from context)
Renamed:
Proximie::PxMedia::FeedBase::idfrom streamIdProximie::PxMedia::IFeedFeature::idfrom streamidProximie::PxMedia::MediaServerSession::FeedMetadata::feedIdfrom streamIdProximie::PxMedia::MediaServerIncomingVideoFeed::subscribeFeedIdfrom subscribeFeedStreamIdProximie::PxMedia::PxMediaErrorCode::FeedIdNotFoundfrom StreamIdNotFoundProximie::PxMedia::PxMediaErrorCode::InvalidFeedIdfrom InvalidStreamId
Removed:
Proximie::PxMedia::MediaSessionController::roomStreamId
Sample authentication improvements
Access tokens required to access Proximie services expire after a set period; the sample authentication
code didn’t fully demonstrate this but has been updated with a checkRefresh function that checks
if the current token is soon to expire, and refreshes it if necessary.
The “auth” sample itself demonstrates token refresh using the refresh token acquired when initially authenticating.
The “complete” sample also demonstrates this by polling the auth helper in it’s sleep loop. Note that this is only for demonstration purposes, and applications will probably want to use a timer mechanism rather than polling.
Since all the samples use the same command line options for authentication, we have refactored the sample code so the authentication helper parses the command line options itself.
Updated CMake installer script
The CMake installer script, samples/environment/scripts/installers/cmake_ppa.sh, has been
updated to include the previously-erroneously-missing installation of the Kitware keyring package.
This ensures that the Kitware apt repository continues to work when the repository key is updated.
The script has also been extended with a -u option to uninstall the Kitware repository and
keyring, for convenience. Docker images have been rebuilt to include the Kitware keyring package.
New Features
New feature: remote recording support
This release adds support to start, stop and monitor remote recordings in media server sessions. The recording feature is the first “session service” for media server sessions, which you can find out more about in Media Server Services. We have also added a new sample application to demonstrate remote recording - see SDK Samples.
New video input feed: VideoInputFeedFile
A new video input feed class, VideoInputFeedFile, has been
added to allow applications to read an image or video from a file as a video input feed. See
Video Inputs for more details.