sidaigle avatar image
sidaigle posted

Genvid SDK 1.30.0

Major Fixes and Changes

New Framerate Value in Cluster Settings

We added a framerate value to the cluster settings output section. It lets you

define the framerate of the video stream sent to the streaming provider

independently from the input framerate.

Documentation being updated for improved flow.

In preparation for some major changes coming to the SDK documentation, we've

reduced the number of main sections and moved some content around. The updates

in 1.30.0 reorganize the existing documentation into sections that better

represent what they cover. In particular:

  • Information on updating installed samples is now in both the Samples and Release & Upgrade Notes sections.
  • The Introduction now includes information on the architecture of the Genvid SDK and how it works. (Formerly in Quick Tour, which we removed.)
  • Information about the various tools included in the Genvid SDK is now in the new "Genvid Tools Integrations" section. (Formerly found in both the Samples and Reference section.)

Minor Changes and Other Fixes

  • [documentation] Added information to the YouTube section about privacy options, latency options, and data cache relationship.
  • [documentation] Removed known issue for Firefox being out of sync with standalone player.
  • [documentation] Fixed an issue where the type of the genvid.compose-gameframes.framesize metric was incorrect.
  • [documentation] Added missing entries for genvid.gvencode-compose framereceivedfps and framesentfps were missing.
  • [documentation] Updated copyright information.
  • [documentation] Corrected links to the Python official documentation that didn't point to Python 3.8.
  • [documentation] Updated doc folder hierarchy in preparation for major refactoring.
  • [sdk] Added information in `GenvidSDKCSharp.cs` about `StatusFailed()` responses.
  • [sdk] Fixed an issue where several frames are sent at the same time.
  • [sdk] Updated LICENSE in the installer to revised version 07/30/2021.
  • [sdk] Fixed a crash when the parameter key of `Genvid_GetParameterPointer` is null.
  • [unity-plugin] Replaced NewtonSoft.JSON dependencies with JsonUtility usage.
  • [toolbox] Added new `PackageArchiver` class in `genvid.toolbox` with an interface that is easier to use.
  • [toolbox] Deprecated DockerPackage in favor of DockerTool.update_image. See the Upgrade Notes for more information.
  • [toolbox] Deprecated PackageFactory in favor of PackageArchiver. See the Upgrade Notes for more information.
  • [toolbox] Fixed the checksum of the nats-windows archive. It's no longer affected by the time of the download--only by the content of the archives.
  • [toolbox] Improved the `genvid-sdk package` command to always use a checksum based on the archive file's name and content.
  • [toolbox] Deprecated the `SDK.update_archive` command in favor of the PackageArchiver.
  • [toolbox] Added support for environment variables VAULT_TOKEN_FILE and VAULT_KEYS_FILE by toolbox CLIs.
  • [toolbox] Added new method `load_config_folder` that replicates `SDK.load_config` without modifying the Consul configuration.
  • [toolbox] Improved reusability of `load_nomad_template_job` by moving it down to `ProjectTool`.
  • [toolbox] Improved `RuntimeTool` and `SDK` classes by derivating them from `ProjectTool` instead of `ConsulTemplateTool`.
  • [toolbox] Fixed an issue where the toolbox would not use the GENVID_DEFAULT_IP environment variable to set CONSUL_HTTP_ADDR for the services. This caused `bastion-api` to crash if CONSUL_HTTP_ADDR was not explicitly set along with GENVID_DEFAULT_IP.
  • [toolbox] `ProjectTool.LOGS` is deprecated. See the Upgrade Notes for more information.
  • [toolbox] Fixed the `genvid-bastion log` command that was returning an error for local services.
  • [toolbox] Added support for all registered logs in `genvid-bastion log` command.
  • [toolbox] Added ability to list all logs in `genvid-sdk log` and `genvid-bastion log`.
  • [toolbox] Deprecated `BastionTool.SETUP_LOGS` because it's no longer used.
  • [toolbox] Fixed an issue where the `chardet` module dependency was missing.
  • [toolbox] Fixed an issue where the `genvid-sdk` commands also need to access Consul when `GENVID_BASTION_URL` is set.
  • [toolbox] Fixed the base URL for the Swagger UI when the swagger is used behind an SSL proxy.
  • [installer] Fixed the default installation folder and registry to match the actual product name. The installation folder is now called `Genvid Technologies\\Genvid SDK X.Y.Z.W` and the registry key is under `SOFTWARE\\Genvid Technologies\\Genvid SDK X.Y.Z.W`.
  • [composed] Fixed an issue where the program composition will not be remembered after restarting composeD.
  • [composed] Added a number of discarded RTMSP messages to logs and metrics when the stream bus is full and messages are discarded.
  • [composed] Added the ability to clear data frame and delayed A/V frame caches within Composed when its connection with GVEncode is no longer active.
  • [gvencode] Fixed an issue where audio can desynchronize when the composition is on and the game is restarted.
  • [gvencode] Fixed an issue where an ended source does not correctly destroy the decoder.
  • [gvencode] Fixed an issue where audio packets in the Sink filter would accumulate over a long streaming session.
  • [gvencode] Fixed an issue where duplicated video frames were not correctly reported in logs.
  • [gvencode] Fixed an audio/video desync that occurred when video frame compensations happen.
  • [gvencode] Fixed a resource leak when video compensation happens.
  • [samples] Improved local SSL management by using the SSL certificates generated from the toolbox.
  • [studio] Removed transitions from scenes. They are now global and applied to the next scene being cut.
  • [studio] Added automatic reconnection of monitor to the stream when gvencode is down.
  • [ingest] Fixed an issue where the Ingest job would be restarted when the composeD job is restarted.
  • [remotegui] Fixed an issue where RemoteGUI was not showing the duplicated frames.
  • [loadtester] Corrected documentation where `loadtest` was used as a prefix instead of `loadtester`.
  • [metrics] Corrected missing text in some metrics tags stating that the value diaplayed is the stream type.
  • [genvid-ami] Updated game machines to use Python 3.8.6 and PIP 21.1.
  • [aws] Added the `modify-permissions` and `describe-permissions` commands to `genvid-ami`. See the Managing the AMI section for more information.
  • [aws] Added the ability to set the AMI owner(s) on both the game and server AMI for all our sample clusters. See our documentation and the Upgrade Notes for more information.
  • [nats] Upgraded nats-server on Windows and Linux from 2.0.4 to 2.2.6.
  • [tick] Upgraded the apps used with the Tick Sample to their latest versions. The Chronograf dashboards were updated accordingly.
  • [cluster-api] Fixed an issue where when logs for a service were not available--we were returning a 500 status code instead of a 404 not found.
  • [gvencode, ingest] Fixed an issue where consecutive start/stop of OBS with a different video mode results in displaying a black frame.
  • [sdk, composed, gvencode] Improved Genvid clock accuracy by using a monotonic clock.
  • [web sample] Improved design by only displaying overlay if the video player is ready.
  • [web sample] Improved visibility of the output framerate option by adding it in the web sample.

Known Issues

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 an 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.

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 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.

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 issue.

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 <configuring twitch live streaming> and YouTube <configuring live streaming> sections for details and workarounds for each.

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 available (Standard_NV6_Promo).

When doing the Terraform setup on the Azure module, you may encounter the error:

System Message: WARNING/2 (`releases_upgrades/releases/release-1.30.0.rst`, line 326)

Cannot analyze code. No Pygments lexer found for "none".

       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.

Streaming to an iOS device with the Standalone player is currently not functional.

Streaming to an iOS device (iPhones and iPads) with the Standalone player is currently not functional. This issue will be fixed in a future release.

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.

Links for a local cluster are disabled in RemoteGUI interface.

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.

When changing Availability Zones in Azure, resources need to be destroyed and rebuilt.

When changing AZs in Azure, deleting the public IP might fail due to it not being detached from the virtual machine. This is a bug in the Terraform provider. See the issue on the Hashicorp Github for more information.

As a workaround, manually detach the offending public IPs from the virtual machines in the Azure portal.

Toolbox is not fully compatible with Python 3.9.x.

The Genvid Toolbox is not fully compatible with Python 3.9.x at this time. To avoid problems using our toolbox, we recommend you downgrade Python to version 3.8.x.

`genvid-sdk upload-images-sdk` command fails to upload the Docker image on Azure Cloud.

Some Docker images can't be uploaded to Azure Cloud using the `genvid-sdk upload-images-sdk` command due to large sizes. (You will get an SSL error and a `Max retries exceeded` message.)

As a workaround:

1. Open the Azure UI.

2. Upload your image manually.

3. Run `genvid-sdk upload-images-sdk` again.

Performance issue when using the Chroma Key Filter.

When using the Chroma Key Filter, we recommend using a c5.4xlarge or better for the encoding machine. Less powerful instances may force the system to accumulate some frames in memory, leading to out-of-memory conditions.

The amount of frames accumulating depends on many factors--the encoding parameters, the source FPS, the amount of variation between the source images content, the richness of their content, etc. For more information on monitoring the memory usage of `GVEncode`, see the Hashicorp documentation.

Required to manually remove the subdomain NS record when updating the subdomain on an existing AWS cluster.

When creating an AWS cluster using `basic_cluster_alb_ssl` or `minimal_cluster_alb_ssl`, the domain and subdomain are provided. When updating an existing cluster's subdomain, the route53 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.

Unable to delete subnets in cluster `basic_cluster_alb_ssl` using AWS.

When changing `subnet_cidr_block_size` in `basic_cluster_alb_ssl`, decreasing the number of AZs, or reordering existing AZs, the cluster will get stuck trying to delete the subnets.

Reapplying the configuration won't resolve the issue.

Workaround: delete and recreate the cluster.

Bastion cluster Settings page modal window not closing.

In the Bastion **Settings** page for a cluster, the **Properties** modal window for custom tags doesn't close when you click outside of it.

As a workaround, click on **Properties** again to close the modal window.

Terraform upgrade leads to 'Error: Failed to query available provider packages'.

When upgrading an existing cluster to Terraform 0.14, it's possible to receive Error: Failed to query available provider packages. You can be resolved by deleting the Terraform lock file from %USERPROFILE%.genvidterraformworkdir{cluster name}tf and then reinitializing the cluster.


Loading configurations in the 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 `web.hcl` file.

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 <aws time source> 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 a `genvid-bastion reinstall`. (Unfortunately, `genvid-bastion restart` is not sufficient.)

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.

Default value for an Azure resource group name may be too long.

If no values are provided for the variable `resource_group_name`, the value is set to a combination of `{bastionid}-{clustername}`. This can yield names longer than 64 characters, which is the maximum number of characters allowed for an Azure resource group name.

To avoid this problem, always provide a value of 64 characters or less for the variable `resource_group_name`.

See the Azure Github for more information on Azure naming conventions.

AWS clusters subnet collision error.

If you reduce the `subnet_cidr_block_size` and increase the number of AZs for an AWS cluster at the same time, it causes a subnet collision error.

If you encounter this issue, reapply the configuration to resolve it.

No new tags on Azure disk when updating a cluster.

When applying new tags to Azure clusters, tags will not be applied to `disk` unless the virtual machine instance that owns the disk gets recreated during the `apply` process.

As a workaround, delete and recreate the cluster to resolve the issue.

Cluster names are limited to 64 characters.

Cluster names are limited to 64 characters due to limitations with the file system in Windows. Things like the system's username and cluster name factor into the max number of characters of the file directory.

While it is technically possible to go above 64 characters, the results can be unpredictable.

Release NotesSDK 1.30
10 |600

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.



GenvidExpert contributed to this article sidaigle contributed to this article