Genvid SDK 1.11.0

Welcome to Genvid SDK 1.11.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 of 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 edition 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:

  • A remote management services to share your clusters with others.
  • SSL support for external APIs.
  • ACL support on Management APIs.
  • Hardware encoding.
  • Instant replay.
  • Better management of cluster configurations.
  • Many more improvements and features expositions in our UI (including the plugins).
  • Offline recording and playback of data streams.
  • Offline broadcast session editing.
  • SDK Manager to help handling multiple SDKs installation

Major changes in this version

Genvid Studio Update

You can now customize the Genvid Studio UI using our new dashboard support. We also added new visual effects for dissolve and fade in/out video transitions with linear and accelerate-decelerate timed interpolators.

Experimental Support for Twitch

We added prototype support for Twitch and Twitch Extension. This implementation has several issues, including a lack of precision in the synchronization.

See “Streaming Services” section for more information.

New Unity Prefab Sample

Based on the feedback of our users, we decided to refresh our prefabs in the Unity Sample and removed the old ones. You should still be able to use the code from previous SDK but we hope that you will find the new approach more usable.

Minor changes and other fixes

  • [sdk] Fixed a lock that could sometimes lead to long video submission times.
  • [sdk] Fixed an exception when using the BGRA8 pixel format.
  • [sdk] Some fixes related to the tutorial raw capture sample.
  • [sdk c#] Fixed an error for converting a timecode value.
  • [sdk c#] Added the method SubmitVideoData to perform raw video capture and dxswapchain capture without the GenvidPlugin.dll.
  • [sdk c#] Downgraded the Newtonsoft.dll version to 8.0.3 to be compatible with the JSON .NET For Unity plugin.
  • [sdk c#] Add AssemblyInfo for both GenvidSDKCSharp and GenvidRESTCSharp DLL.
  • [web] Initialized the IGenvidClient.clientSteamMS in the constructor to avoid undefined variables.
  • [web] Fixed synchronization issue on genvid client. onDraw stopped to miss some data frames.
  • [web] Fixed an issue preventing the successive instantiation of GenvidClient using YouTube player.
  • [web] Fixed an issue where a wrong timecode was sent in the onDraw callback.
  • [cluster-api] Added help pages for the web API.
  • [cluster-api] Fixed the events json schema not accepting the $and and $or conditions.
  • [cluster-api] New API to start and stop all jobs. /v1/jobs/startall and /jobs/stopall.
  • [cluster-api] Disallow edition of the jobs definitions if a job is running.
  • [bastion-api] Fixed backend editable fields.
  • [bastion-api] Fixed support for Terraform S3 backend when state is empty.
  • [bastion-api] Added force parameter to terraform/init and terraform/importmodule to circumvent runtime errors during initialization.
  • [bastion-ui] Added busy indicators when loading content.
  • [toolbox] genvid-sdk upload-images and upload-images-sdk configuration (option -u) aren’t update correctly when used with custom bucket and path (-b and -p options).
  • [toolbox] New environment variable. GENVID_BASTION_URL can be used to connect to a remote bastion.
  • [toolbox] Method genvid.toolbox.Clusters.repository_update_repository is renamed repository_update to fit with genvid-clusters repository-update command.
  • [terraform] The scripts of the game/aws module now configure the services directory on the Z: drive.
  • [terraform modules] There is a new variable trusted_cidrs for security groups to allow more than one trusted IP range.
  • [services] Fixed a timecode overflow when its value is bigger then 2**31.
  • [services] Now the initial log level is set at the default log level for the compose and gvencode services.
  • [composed] Added log when a stream is ended.
  • [composed] Added stream type info in the health check status.
  • [gvencode] Added non stop to stream server filter. This fix a problem during inter-matches in the UT4 sample.
  • [gvencode] Fixed TS field format in burn-in timecode.
  • [gvencode] Fixed a video frame copy when their pitches are different.
  • [rtmsp] Fixed a problem with a partial header read.
  • [rootd] Added a missing field (SessionId) in the annotation stream
  • [leafd] Added preliminary support for WSS on the leafd.
  • [vault] Updated Vault to 0.9.1 to fix a memory leak in server.
  • [ui] Updated Cluster-UI, Bastion-UI and studio web sites to angular5.
  • [bugreport] Fixed a freeze when we create a bugreport and jobs run.
  • [ue4 plugin] Fixed a problem in the video capture (swapchain mode). it constantly reset the texture and can potentially cause trouble with the video stream.
  • [ue4 plugin] Added a command line option to override the GenvidStreamer tick rate.
  • [ue4 plugin] Added a stream report on skipped stream data
  • [samples] Fixed the web scripts for building so they can run outside the installation directory.
  • [tutorial] Outdated raw capture sample fixed.
  • [ut4 sample] Removed unused variables in ut4_engage.ts (fixing a ts_lint error).
  • [ut4 sample] Fixed a crash when the player state is null.
  • [ut4 sample] Fixed a crash when a character has no capsule component.
  • [ut4 sample] Filled new information in the Player info structure (Health, WeaponName, IsDead).
  • [ut4 sample] Updated Player location error handling.
  • [ut4 sample] Fixed a problem with the game data update rate.
  • [ut4 sample] Fixed a rare crash when a match has started.
  • [documentation] Audio format enum values explicited in the list of the main stream parameters. in GenvidStreamer class.

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 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 restart of gvencode

If the services are stopped and restarted shortly thereafter, the YouTube streaming service will consider it as 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, 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, yielding 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.

Service cannot discover the statsd service

Unless you are using the GENVID_STATSD_URL variable, the statsd service must be available before starting it. This is an oversight on our side and will be fixed in the next version.

Standalone player with Firefox

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

Genvid Studio stops working when all streams are destroyed

When using Genvid Studio for an application that you are streaming with the Genvid SDK, if you are destroying and re-creating the audio/video stream, it will cause your video/audio stream to stop working until the stack is restarted.

Genvid Studio UI layout is not saved between sessions

The layout saved is associated with the IP and port of the current Genvid Studio instance. We are working on a future solution that will persist the layouts between sessions.