Welcome to Genvid Technologies SDK 1.25.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
email@example.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.
Major Fixes and Changes
Azure Multi-AZ Load Balancing
We’ve added the ability to deploy in multiple availability zones (AZs). This
introduces a new variable in the settings tab called
azs and brings it on
par with AWS support. For more details, see the Azure-terraform-settings
section of the Azure Cloud documentation.
Azure SSL-enabled clusters
azurerm_basic_cluster_alb_ssl allows the deployment of SSL-
enabled clusters. This module allows you to manage certificates, DNS, and uses
Application Gateway for your cluster. This is important for building Twitch
Extensions and other platforms which require using SSL clusters.
Cube Samples Data Streams Refactoring
We refactored the Cube samples in accordance with best practices of Data
Data Submission is now split into multiple streams:
In addition, we added the following improvements:
- Popularity is now sent every second as notification.
DIRECTIONevents trigger notifications as
a response to a change.
COLORSevent triggers an annotation as a response to a change.
- The Twitch Extension now shows a visual notification upon
reception of color changes.
- The Web sample now displays a countdown popup for color changes.
- The Web sample now displays a green popup for responses to events.
Studio as a Service
We converted the Studio sample to a standard service, so the standalone Studio
sample no longer exists. See the upgrade notes for
Minor Changes and Other Fixes
- [documentation] Improved the documentation quicksearch results by
scoring down the release notes pages.
- [documentation] Improved
- [documentation] Added missing definitions for
- [documentation] Fixed an issue where
writeframemetrics under the
genvid.gvencode-composeprefix were of the wrong type.
- [documentation] Added metrics for GCL missing frames.
- [documentation] Updated the metrics for DLL calls.
- [sdk] Added metrics for
framemissedkey to the Metrics
- [sdk] Added GCL metrics to tick and composed.
- [sdk] Added metrics for audio/video information. Also available in
Remote GUI .
- [sdk] Added metrics for time spent in Genvid DLL calls.
- [sdk] Improved logs by only reporting the number of duplicated and
dropped frames every 30s, rather than in real time.
- [sdk] Fixed an issue where
were not sent.
- [sdk] Fixed an issue where audio-submit delta-metrics would not be
- [sdk] Fixed an issue where a crash can occur when using WASAPI
- [sdk] Fixed an issue where audio stream became choppy when A/V
- [sdk] Fixed an issue where annotations fail to submit after first
one is sent.
- [sdk] Fixed an issue where audio framerate uses the default value
instead of the configured one.
- [sdk] Fixed an issue where the system over compensates for frames
already in the submit list.
- [sdk] Fixed an issue where missing submits would not be
- [sdk] Fixed an issue where the FPS in the Remote GUI was miscomputed.
- [sdk] Added logs showing Audio/Video frame statistics between Game
- [sdk] Fixed a bug where the output buffer size of an HTTP response
would appear as too big.
- [sdk] Fixed a bug preventing the game data from synchronizing.
- [sdk} Fixed an issue where games streaming with a framerate lower
than 1 FPS was locking the stream.
- [sdk] Fixed missing exception handling not activated in libraries.
- [web-sdk] Added missing TypeScript description files to Web SDK.
- [studio] Fixed an issue where Studio crashed the browser if the
user didn’t press play.
- [studio] Fixed an issue where Studio wasn’t starting when using
the UT4 sample.
- [studio] Fixed an issue where the stream stops when using CUT.
- [studio] Fixed an issue where streaming fails when disabling
Studio after it was enabled once.
- [studio] Fixed an issue where Studio was not opening in the
monitor tab when opening it for the first time.
- [studio] Fixed an issue where the chosen settings would not be
- [studio] Fixed an issue where audio settings would not get
- [composed] Improved composeD backend composition state preventing
mismatch between backend and Studio UI by storing state in binsD.
- [composed] Fixed an issue where composeD cannot reconnect after an
- [composed] Fixed an issue where the data stream bandwidth
- [composed] Fixed an issue where composeD will not reconnect after
- [composed] Fixed an issue where memory grows when the connection
between composeD and GVEncode is lost.
- [composed] Fixed an issue where the frontend fails to send game-
- [composed] Added compose-backend frame-discarded metrics.
- [composed] Fixed an issue where streams would not always be
- [composed] Fixed an issue where composeD would not send game data
when connection with GVEncode is offline.
- [gvencode] Fixed an issue where GVEncode would crash on
- [gvencode] Fixed an issue where disabling audio stream in Genvid
Settings resulted in Audio/Video/Data desynchronization.
- [gvencode] Fixed an issue causing
to not contain separate Audio and Video fields.
- [gvencode] Fixed an issue where the service crashes when resources
are not flushed during a connection error.
- [gvencode] All filters metrics are now activated by default in
local and cloud templates.
- [gvencode] Fixed a bug with composition commands that could lead
to a crash in gvencode.
- [gvencode] Fixed a bug that would lead gvencode to run out of
memory when ingest was receiving a stream.
- [rootd] Changed log level of
Session: read error: read tcp : i/o timeoutfrom error to warning.
- [rootd] Fixed a bug where data frames were emitted with an invalid
- [leafd/rootd] Fixed an issue where rootD and leafD can crash when
no annotation is submitted for a stream.
- [cube sample] Fixed an issue where the cube halo would not switch
color when the cube changed color.
- [cube sample] Fixed an issue where the reset notification sent by
the UE4. Cube sample would say it was triggered by admin even if
- [cube sample] Fixed an issue where resetting a cube in the UE4
Cube sample would make it change direction, orientation, velocity,
and color instead of location only.
- [cube sample] Removed an unused configuration file from Cube
- [cube sample] Fixed an issue where cube positions and color format
couldn’t be set when the region setting on the instance was not
set to US/English.
- [unity plugin] Fixed an issue where the stream FPS parameter was
- [unity plugin] Fixed an issue where data fails to be submitted.
- [unity plugin] Fixed an issue where the audio stream parameters
are set every time audio is submitted.
- [unity plugin] Updated Genvid Video Prefab with a new field in the
Unity UI letting users set the video framerate.
- [unity plugin] Fixed Audio/Video/Data Streams destroy function
that was not called correctly.
- [ue4 plugin] Updated the plugin to be compatible with the current
Unreal LTS version 4.25.4.
- [ue4 plugin] Added support for UE 4.22 version build when it is
installed with both
- [ue4 plugin] Fixed an issue where
- [ue4 sample] Fixed an issue where logs cannot be accessed in
- [ue4 sample] Moved the manifest file for transfered UE4 plugin
files to the application folder. See the GenvidPlugin installation
documentation <Unreal Engine 4 Genvid Installation> for more
- [ue4 sample] Fixed an issue where modified files are deleted when
- [ue4 sample] Added
--progressoptions to the
- [ue4 sample] Fixed an issue where UE4 cube script ignores the
- [ue4 sample] Fixed an issue where UE4 cube script sets default
empty environment variables.
- [ue4 sample] Fixed an issue where Blueprints using
SubmitNotificationare missing notification data link.
- [ut4 sample] Added support for SSL streaming.
- [ut4 sample] Updated
BP_GenvidStreamsto reflect the new
- [youtube] Fixed an issue where the embedded YouTube player won’t
connect when using channel name. Connections now use the video ID.
- [toolbox] Fixed an issue where
command would be ignored and apply to all clusters.
- [toolbox] Removed requirement for a fixed version of the
- [toolbox] Upgraded default Python version from 3.5 to 3.8.6.
- [bastion-api] Added
/isIPinCidrAPI endpoint to Bastion API.
- [bastion-ui] Fixed an issue where the
DELETEconfirm dialog was
- [bastion-ui] Added a visual flag on the Terraform configuration
page to let the user know if current Bastion IP is not a part of
- [bastion-ui] Added missing caret icon to the menu dropdown item
- [bastion-ui] Added new setting
- [bastion-ui] Improved UI by showing the correct status while
dealing with the module import on multiple clusters.
- [bastion-ui] Improved display of Terraform settings with very long
- [bastion-ui] Fixed an issue where an
Unsaved changesdialog on
the Terraform settings page appeared when values haven’t been
- [cluster-ui] Fixed an issue where the broadcast settings section
was disappearing when using Edge and Chrome.
- [aws] Removed variables
from AWS cluster
- [aws] Added support for default AWS authentication provider which
enables the use of Organizational Units (OUs).
- [aws] Added support for S3 bucket creation for regions outside of
- [aws] Added support of encrypted local storage for new clusters.
(Can be disabled for upgrades.)
- [aws] Upgraded server instances from Debian version 9 to version
- [aws] Renamed some Terraform variables and outputs and removed
others from AWS clusters. See the upgrade notes for more information.
- [aws] Added support for changing the subdomain in AWS after
creating a cluster. The NS record needs to be manually deleted.
- [aws] Fixed an issue where Terraform picks an AMI with a version
suffix when the suffix is unspecified in the
- [aws] Fixed an issue where user cannot switch to another leaf
connection when variables
web_stickiness_ttlare used in
- [aws] Added variables
minimal_cluster_alb_sslto be consistent
- [azure, aws] Disabled Windows Defender SmartScreen when creating wingame images to reduce CPU usage for non
- [consul] Upgraded Consul to version 1.8.6
- [consul] Added support for auto-join in Azure cluster.
- [nomad] Upgraded Nomad Server and Client to version 0.12.1.
- [tick] Added a dashboard for monitoring the Genvid Connect Library
AWS reports errors when upgrading cluster from 1.24.0 to 1.25.0.
When upgrading an AWS cluster from Genvid SDK version 1.24.0 to 1.25.0, you
may see the same error reported twice when you select
Plan apply -> Apply on
the Commands page:
Error creating IAM instance profile [cluster-name]-xxxx-xxxx: EntityAlreadyExists: Instance Profile [cluster-name]-xxxx-xxxx already exists.
This is due to a bug in Terraform. As a workaround, try running
Plan apply -> Apply a second time.
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).
As a workaround, you can create VPN connections to the Bastion machine so the
local IP of the machine is accessible from the client machine.
Standalone player with Firefox not working.
The readable streams must be enabled in Firefox for the standalone player to
work properly. You must set
true from the
Auto-cut checkbox state is stored locally only.
In Studio, the state of the auto-cut checkbox in Scene Widget is only stored
in local storage. (Clearing the browser cache will also clear user input.)
Also, if auto-cut is turned “on” before the Studio session ends, it will be
set back to “off” by default when you start the Studio session again.
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
You can disable audio in 2 ways:
configuration. (The default setting.)
- Use our raw audio-capture, which is now the default setting in
Only one application with the Genvid SDK integrated may run at a time if
not launched using Nomad.
If an application using the Genvid SDK is launched without Nomad, a default
session name is assigned to it. This is useful when testing your application
in the Unity engine, Unreal engine, or booting your application manually.
Currently, the Genvid SDK is unable to support multiple applications launched
this way unless you change the environment variable GENVID_SESSION_NAME to a
unique name. You can also launch your applications via Nomad to avoid this
We will fix this in a future release.
Twitch and YouTube Synchronization Advisory
During testing, we’ve found some synchronization issues when broadcasting via
both Twitch and YouTube. See the Twitch
and YouTube sections for details and workarounds
Azure reports requested instance size not available.
On Azure, we are using a compute instance type Standard_NV6 for the game
machine. For some accounts, only the promo version of this instance type is
When doing the Terraform setup on the Azure module, you may encounter the
The requested size for resource 'XXXX-game-1' is currently not available in location 'XXXX'
As a workaround, go to your Terraform Settings page and change the
instance_game_type to Standard_NV6_Promo, then go to the Commands page and try
Plan apply -> Apply again.
iPhone issues with Twitch
Since the Twitch API doesn’t return any values for the attributes of the
getPlaybackStats() call on iOS devices, you will encounter imprecise or
inconsistent synchronization performance.
Internet connection slowdown can cause the game data to desynchronize when
Ingest is running.
When running Studio with Ingest, the game data may desynchronize from the
video stream when the Internet connection experiences a slowdown. Once the
slowdown clears up, the game data will resynchronize with the video stream.
Azure doesn’t allow bastion names that have more than 5 characters.
While working with Azure, you need to choose a compact name for your bastion
because there is a maximum limit of 5 characters.
RemoteGUI: GUI links for a local cluster are disabled.
When using RemoteGUI for a local cluster, opening a tab by clicking a link
from the Composition, Encoding, or SDK GUI buttons disables the link
(indicated by it turning from blue to red). The link will be re-enabled when
you close the corresponding tab.
Azure: When changing Availability Zones, resources need to be destroyed and
It is possible during this step for deleting the Public IP to fail due to it
not being detached from the virtual machine. This is a bug in the Terraform
provider (see this issue for more information). As a workaround, manually
detach the offending Public IPs from the virtual machines in the Azure portal.
Loading Configurations in incorrect order can overwrite values.
Whether you’re using SSL on a cloud or a local cluster, if you load
youtube.sample.hcl before loading the web sample, the web sample will
overwrite the value associated with the
embed_ssl from the
Large NTP time offsets will prevent the stream from playing.
If you encounter large NTP time offsets, your stream may stop playing. As a
workaround, make sure that the game machine is configured to update its clock
automatically. For local configurations, replace the AWS IP address with
See the AWS configuration section for more information.
Studio can’t take inputs of the same control from multiple windows.
If Studio is opened in more than one browser window and inputs are received
from different sources to one control, the final value will then bounce
between the different inputs instead of updating it to the latest one. For
example, in Audio Mixer Widget, if a user changes the slider of Master Gain to
20 db and another user then changes it to 0 db, the slider handle will bounce
between 20 db and 0 db instead of being set to 0 db.
Sending input from multiple Studio windows to one control is not recommended
until we resolve the issue.
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
genvid-bastion reinstall. (Unfortunately,
genvid-bastion restart is not
AWS: Manually remove the subdomain NS record when updating the subdomain on
an existing cluster.
When creating an AWS cluster using
minimal_cluster_alb_ssl, the domain and subdomain are provided. When
updating an existing cluster’s subdomain, the Route 53 NS record for the
previous subdomain needs to be removed manually from the main domain. This is
due to how the NS record is handled within our Terraform.
The SDK clamps framerates under 1.0.
To prevent issues, we raised the lower limit for the framerate to 1.0 for any
stream. The SDK will clamp the value to 1.0 FPS if it’s less than 1.0.