Genvid SDK 1.13.0

Welcome to Genvid Technologies SDK 1.13.0. This release is ready and stable for integration and can be used for local development and limited cloud deployment. We are still missing some features for a complete production deployment which can be provided through other software. Please contact us at support@genvidtech.com if you’re planning a production deployment.

We are still committed to a regular pace for our releases until we get all the features done for a comfortable production deployment. We always work to ensure a smooth upgrade between releases and provide as much backward compatibility support as possible. Please contact us if you have any issues.

Current functionalities

Here is a summary of our current functionalities. See below for the list of new features in this release.

  • Windows C++ API with a C# wrapper
  • D3D11 or raw frame video capture
  • WASAPI audio capture
  • Video encoding (H264 + AAC)
  • Video streaming to YouTube
  • Multiple audiovisual and data streams coming from multiple instances
  • Streaming additional arbitrary game events and notifications
  • Scalable event messaging system
  • Javascript SDK for embedded webpage
  • Automatic synchronisation between video and game data streams
  • Multiple distributed source of A/V and Data (still beta)
  • Live video editing and basic composition effects (still in beta)
  • RTMP Ingest server (still in beta)
  • Unity3D integration (Game and Management)
  • Unreal Engine integration (Game and Management)
  • REST API to control the services (still in beta)
  • Tools and scripts for managing your local and remote clusters, with example scripts for AWS
  • Metrics feed (still in beta)
  • Load testing library
  • Extensive documentation
  • Multiple integration samples

More to come

Additionally, we are working on a full new feature pipeline to be released as soon as each is ready:

  • Remote management services for sharing your clusters with others.
  • SSL support for external APIs.
  • ACL support on Management APIs.
  • Hardware encoding.
  • Instant replay.
  • Better cluster-configuration management.
  • Many more improvements and features expositions in our UI (including the plugins).
  • Offline data-stream recording and playback.
  • Offline broadcast-session editing.
  • SDK Manager to help handling multiple SDK installations.

Major changes in this version

Cluster-API Runs in the Bastion

The cluster-API is now running in the bastion instead of the cluster. This means that this service can be available even if a cluster is down. You can also stop and restart this job from the bastion.

We also added a new ability to have a job by cluster. Those jobs run for each individual cluster inside the Bastion.

UE4 Genvid Module (Client/Server)

The Genvid Module now follows the Genvid SDK Client/Server architecture. The Genvid Module is still backward compatible with SDK version 1.12.0. You can find information on migrating to this version in the 1.13.0 release notes, or the Blueprint and Client/Server sections of the documentation.

New Health Page

A health page has been added to see the services’ health in both the Cluster UI and Bastion UI.

Improved Synchronization and Long-Term Stability with YouTube

We’ve made many improvements in our system:

  • We fixed a bug that was causing the compose service to use an increasing quantity of memory when having a network congestion.
  • We updated the code to follow the ASIO specification.
  • We added a reference clock in the compose service and Genvid SDK.
  • Better accuracy for missing frames detection.
  • Avoid a crash when gvencode receives an end of composition.
  • Fixed crash which occurred in the compose service when gvencode was ready to start a new job.
  • Fixed a bug where gvencode stopped after receiving a bad NTP response.
  • More accurate data synchronization. Now the sync is based on sending time.

Minor changes and other fixes

  • [sdk] Fixed a bug that was causing the compose service to use an increasing quantity of memory when having a network congestion.
  • [sdk] Updated code to follow the ASIO specification.
  • [sdk] Fixed several data race conditions.
  • [sdk] Now dropping frames that have the same frame numbers.
  • [sdk] Any message with an invalid stream type will now be dropped upon arrival in the SDK.
  • [bastion-api] Fixed the possibility to terminate a terraform command.
  • [consul] Fixed a high cpu load problem when a Consul request returned an error.
  • [cluster-api] We don’t renew the Vault’s token when running consul-template on a job anymore.
  • [ami] The Genvid Python Toolbox was added within the Genvid AMIs. You can still update it by setting the toolbox_location variable to a path accessible by the Genvid Bastion.
  • [ami] Ensure the wingame AMI has the latest Windows Update installed.
  • [toolbox] Added new delete command in genvid-ami.
  • [toolbox] Allow passing the arguments list in a file, using the @file syntax. E.g. genvid-ami delete -n @todelete.txt.
  • [toolbox] Added the --region argument to the genvid-ami list command.
  • [toolbox] Fixed a race condition on services installation (like genvid-bastion install) where we try to initialize Vault before it accepts connections. It happens often after Consul has been killed by a reboot or the machine going to sleep.
  • [toolbox] The clean command in genvid-ami has better error handling.
  • [terraform] The three Genvid Terraform repositories (cluster, game and genvid) are now grouped under a single repository SDK-X.Y.Z.
  • [broadcast pipeline] Added reference clock in the compose service and Genvid SDK.
  • [services] Allow configuring the initial data streams cache. The settings are under genvid.dataStreams.
  • [composed] Log all missing frames. Not one log for each 1000 frames.
  • [composed] Better accuracy for missing frames detection.
  • [composed] Avoid flooding logs with missing frames messages.
  • [gvencode] Fixed corrupted fonts files in gvencode Docker image.
  • [gvencode] Avoid a crash when gvencode receives an end of composition.
  • [gvencode] Fixed crash which occurred in the compose service when gvencode was ready to start a new job.
  • [gvencode] Avoid a resource leak when the monitor of studio is connected.
  • [ntp] Change default ntp server to pool.ntp.org.
  • [ntp] Fixed a bug where gvencode stopped after receiving a bad NTP response.
  • [youtube player] More accurate data synchronization. Now the sync is based on sending time.
  • [standalone player] If the compose service crashes, the video playback will now resume by itself.
  • [statsd] Added a watch on the statsd URL to reconnect when the URL changes or a connection error occurs.
  • [statsd] Used long polling query when looking for statsd service and fixed a crash on termination.
  • [genvid-bastion] Added new option --jobs-only to the genvid-bastion stop and start command to only affect the jobs, not the services.
  • [linux] Upgraded our Linux server and images to Debian 9.4.
  • [linux] Adding stack frame in log when Linux raised a signal, and build with debugging information.
  • [cluster-ui - bastion-ui] Added access to the SDK documentation, forum page, and services version information from the Help button in the UI.
  • [cluster-ui - bastion-ui] Added the SDK version in the about prompt.
  • [cluster-ui] Fixed incorrect color displayed for a system job running properly and having multiple tasks running but having only one task count.
  • [bastion-ui] It is now possible to import a module on a non empty cluster.
  • [swagger-ui help] Added the ability to try the API calls from the Swagger UI.
  • [unity prefab] We removed the Camera capture type selection from the Genvid Video script. The Texture capture type is now supporting both Camera and Texture capture types.
  • [unity prefab] Modified the default values of the prefab to make the integration faster.
  • [unity prefab] Added better support for video capture via texture and camera to prevent issues where the video would be flipped.
  • [unity-plugin] Fixed an error occurring when a cluster selection is saved upon closing the Unity editor.
  • [ue4-plugin] Fixed problem with video streams and video capture destruction.
  • [ue4 plugin] Added compatibility with Unreal Engine 4.18 and 4.19.
  • [ue4 plugin] Added some Rest API validation to fix a potential crash when the response or request is not valid.
  • [ue4-plugin] Fixed compile errors when disabling PCH files.
  • [tutorial] Added the session time (in-game clock) to the debug overlay in addition to the streaming time (encoder clock).
  • [studio] Optimized the slider controllers to be touchscreen friendly.
  • [studio] Added push and cover video transitions.
  • [studio] Fixed a crash occurring when using the audio mixer sliders.
  • [studio] Fixed the monitor page that stopped working after changing page.
  • [studio] Fixed dashboard creation that wasn’t working anymore.
  • [studio] Avoid gvencode to crash when we select a source with no audio in the monitor view.
  • [documentation] Added more examples for the REST API.
  • [documentation - unity] Added a new step-by-step guide to make the local integration easier.
  • [documentation - unity] Added a list of best practices to follow for the Unity integration.
  • [documentation - cloud] Added a clarification about the public machine IP of the game machine.
  • [unity sample] Added a fullscreen button like the other samples.
  • [ut4-sample] Fixed the player selection highlight wrong color bug that can occur when a specific camera is used which could prevent the game from sending all the team data.

Known bugs

We weren’t able to fix some bugs in time for this release, but we intend to fix them shortly.

Compose window isn’t available if behind a proxy

Future versions of Bastion will have a remote server to allow access from different machines. The current version has limited support for this and is likely to encounter some problems if the Bastion host lives behind a cluster firewall (like on a Amazon EC2 machine). The workaround is creating VPN connections to the Bastion machine so that the local IP of the machine is accessible from the client machine.

The application doesn’t work properly after Windows comes back from sleep

Nomad has some difficulties with sleeping jobs, including itself. This is unlikely to get fixed in Nomad, but shouldn’t happen in a production environment. The best workaround at present is to not allow Windows to go to sleep when you are running the service, or simply to restart the service with a genvid-bastion reinstall. (Unfortunately, genvid-bastion restart is not sufficient).

The YouTube stream isn’t properly reset after a gvencode restart

If you stop and quickly restart the services, the YouTube streaming service considers it part of the same streaming session. Although this may be desirable most of the time, this could lead to showing up as the previous session due to the long latency between the services and the actual view which can create some delay in the stream. A future version will provide a proper way to request a new stream. Until then, you can either reset your stream key from the YouTube dashboard or simply wait a little longer (about 5 minutes should be enough) before restarting the service.

Audio captures microphone or infinitely loops

When using the WASAPI audio auto-capture mode, every sound going through the machine’s default audio-device gets captured. This includes system alerts and microphone input, as well as your web browser. When test-viewing your game stream using the same local machine running the game, the game will also capture its own audio stream with ~10s of latency. This yields some echo with progressively worse sound quality since it is compressed every time it is streamed.

You can disable audio in 2 ways:

  • Set settings.encode.input.silent to true in your configuration. (The default setting.)
  • Use our raw audio-capture, which is now the default setting in Unity.

Standalone player with Firefox

The readable streams must be enabled in Firefox for the standalone player to work properly. You must set dom.streams.enabled and javascript.options.streams preferences to true from the about:config URL.

Genvid Studio stops working when all streams are destroyed

Destroying and re-creating the audio/video stream while using Genvid Studio for an application that you are streaming with the Genvid SDK causes your audio/video stream to stop working until the stack is restarted.

The YouTube stream might stop after running UT4 for some time

We have observed the YouTube stream stopping after running the UT4 sample for several hours. We are actively investigating this issue.

Studio might crash when having only 1 source

In the monitor section of Studio, when there is not second instance of a game, clicking on Source-1 crashes the stream.