Genvid SDK 1.18.0

Welcome to Genvid Technologies SDK 1.18.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. A complete list of our Known Issues and Workarounds is available to you in our Forum. 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.
  • Video streaming to Twitch.
  • 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 exposed 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

Unity Streaming Waiver

Unity Streaming Restrictions will be waived for Unity Projects to the extent such Unity Projects initially use the Genvid SDK for Interactive Streaming from Sept 1, 2018 - Aug 30, 2019, and continue streaming such Unity Project throughout the Streaming Term (Aug 30, 2021). Unity has authorized Genvid to make reference of this Streaming Restriction waiver with Developers that benefit from it. In addition, Unity agrees to directly confirm upon request the existence of this waiver to Developers who would want to obtain such confirmation. All such requests will be addressed to Unity.

Terraform Integration Improvements

We have continued our improvements of Terraform support in the Bastion UI.

  • We now save the state of the Terraform working directory into Consul, allowing greater reliability and flexibility.
  • We added an option for cloning an existing cluster into a new one.
  • A new editor for Terraform variables now includes a description of variables, lists default values, and highlights globally-set variables while letting you override them.
  • You can also download values as a JSON file. You can drag and drop a JSON file into the Terraform variables editor to change multiple values at once.

Broadcast On air in Studio

Broadcasting can be enabled or disabled in the Studio interface with the new Broadcast Widget.

The user can set the default mode on startup with the broadcast/enable Genvid setting. The default (true) is to start broadcasting immediately.

Minor changes and other fixes

  • [sdk] Fixed a race condition in the Frameprocessor related to the Turbo JPEG compressor.
  • [sdk] Fixed a memory runaway in gvencode when starting the services with the game running at a sound level of zero.
  • [sdk] Fixed an error case occuring when submitting video data providing null parameters and no swapchain had been set.
  • [web-sdk] Re-added the genvidMath global symbol in browser distribution.
  • [web-sdk] Made the websocket timeout configurable through the IGenvidConfig class, and set the default value to 30 seconds instead of 1. This could help mitigate some socket disconnection while connecting through multiple proxies, VPN or long distances.
  • [web-sdk] Added the genvidFactory TypeScript definition files and repacked all modules using UMD.
  • [toolbox] Fixed the terraform_init method in the Toolbox (Clusters.terraform_init as well as the genvid-clusters terraform-init command) which was always applied to all clusters.
  • [terraform] Removed the NAT gateway creation from the basic cluster setup.
  • [ingest] Improved stability and decreased Ingest’s lag when there’s network congestion.
  • [bastion-api] bastion/terraform/instances/{instanceId}/tfvars/default now takes into account the Global Settings in the default values.
  • [bastion-ui] In the Terraform configuration command page, the buttons are now properly reflecting the commands.
  • [bastion-ui] In the Terraform configuration command page, the scroll bar of the module selection will not disappear anymore if you click on the down arrow.
  • [bastion-ui] In the Terraform page, other configurations now properly display their backend and status.
  • [unity build] Fixed a python script to copy a new folder created by the build system of Unity 2018.
  • [unity prefab] Added a checkbox to display more logs about the Genvid SDK in the console.
  • [ue4 rest api] Updated the UE4 Rest API to have more data available.
  • [studio] Fixed the problems freezing the video monitor.
  • [studio] Optimized composition for 1080p/60FPS.
  • [studio] Offset on sources now support a value between -10 and 10 seconds. Several optimizations have been made to be frame accurate on both audio and video.
  • [studio-ui] Navigation has been improved. When Studio-UI is restarted, the user will be directed to the last active dashboard.
  • [unity sample] Fixed the Admin page not showing up the data when using YouTube.
  • [tick sample] Made the download and setup commands of the TICK sample more verbose.
  • [statsd] The services will now dynamically reconnect to statsd when statsd changes its address.

Known bugs

Twitch Extension Developer Rig not working

The Twitch Extension Developer Rig doesn’t provide any real player or video stream to synchronize the data. For this reason, our web client isn’t able to playback any data.

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.

Auto-cut checkbox state is stored locally only

Studio only stores the state of the auto-cut checkbox in the Scene Widget locally. Clearing the browser cache will also clear any user input. If you turn auto-cut “on” before the Studio session ends, it resets to “off” when you start the Studio session again.

Studio can not take inputs of the same control from multiple windows

Opening Studio in multiple browser windows and receiving inputs to a single control from different sources causes the final value to bounce between the different inputs instead of updating it to the latest one. For example, in the Audio Mixer Widget, if a user changes the slider of Master Gain to 20db and another user then changes it to 0db, the slider handle bounces between 20db and 0db instead of being set to 0db. We recommend not assigning inputs from different windows to the same control until we resolve the issue.