Genvid Forum

Genvid Technologies

Genvid SDK 1.25.0

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

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

The module 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
Streams usage.

Data Submission is now split into multiple streams:

  • Names
  • Positions
  • Colors
  • Camera

In addition, we added the following improvements:

  • Popularity is now sent every second as notification.
  • RESET, SPEED, and DIRECTION events trigger notifications as
    a response to a change.
  • COLORS event 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
details.

Minor Changes and Other Fixes

  • [documentation] Improved the documentation quicksearch results by
    scoring down the release notes pages.
  • [documentation] Improved Genvid_Initialize and
    Genvid_Terminate documentation.
  • [documentation] Added missing definitions for genvid.webgateway
    metrics.
  • [documentation] Fixed an issue where rtmspMessageQueueCount,
    outputbufferlimit_us, and writeframe metrics under the
    genvid.gvencode-compose prefix were of the wrong type.
  • [documentation] Added metrics for GCL missing frames.
  • [documentation] Updated the metrics for DLL calls.
  • [sdk] Added metrics for framemissed key to the Metrics
    documentation.
  • [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 framesubmitted, framesizesubmitted,
    framesubmitteddropped, and framesizesubmittedropped metrics
    were not sent.
  • [sdk] Fixed an issue where audio-submit delta-metrics would not be
    sent.
  • [sdk] Fixed an issue where a crash can occur when using WASAPI
    audio capture.
  • [sdk] Fixed an issue where audio stream became choppy when A/V
    lags.
  • [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
    compensated.
  • [sdk] Fixed an issue where the FPS in the Remote GUI was miscomputed.
  • [sdk] Added logs showing Audio/Video frame statistics between Game
    and GVEncode.
  • [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
    remembered properly.
  • [studio] Fixed an issue where audio settings would not get
    applied.
  • [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
    exception occurs.
  • [composed] Fixed an issue where the data stream bandwidth
    abnormally increases.
  • [composed] Fixed an issue where composeD will not reconnect after
    a crash.
  • [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-
    data metrics.
  • [composed] Added compose-backend frame-discarded metrics.
  • [composed] Fixed an issue where streams would not always be
    recognized.
  • [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
    initialization.
  • [gvencode] Fixed an issue where disabling audio stream in Genvid
    Settings resulted in Audio/Video/Data desynchronization.
  • [gvencode] Fixed an issue causing rtmspMessageQueueCount metric
    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 timeout from error to warning.
  • [rootd] Fixed a bug where data frames were emitted with an invalid
    timestamp.
  • [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
    it wasn’t.
  • [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
    DirectX sample.
  • [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
    ignored.
  • [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 -v (--version) and -e (--envpath)
    flags.
  • [ue4 plugin] Fixed an issue where GenvidStreams crashed when
    using the SubmitNotification function.
  • [ue4 sample] Fixed an issue where logs cannot be accessed in
    Cluster UI.
  • [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
    information.
  • [ue4 sample] Fixed an issue where modified files are deleted when
    calling ue4.py prepare.
  • [ue4 sample] Added --quiet and --progress options to the
    ue4.py prepare command.
  • [ue4 sample] Fixed an issue where UE4 cube script ignores the
    environment command.
  • [ue4 sample] Fixed an issue where UE4 cube script sets default
    empty environment variables.
  • [ue4 sample] Fixed an issue where Blueprints using
    SubmitNotification are missing notification data link.
  • [ut4 sample] Added support for SSL streaming.
  • [ut4 sample] Updated BP_GenvidStreams to reflect the new
    SubmitNotification function location.
  • [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 -c option in genvid-clusters
    command would be ignored and apply to all clusters.
  • [toolbox] Removed requirement for a fixed version of the
    requests library.
  • [toolbox] Upgraded default Python version from 3.5 to 3.8.6.
  • [bastion-api] Added /isIPinCidr API endpoint to Bastion API.
  • [bastion-ui] Fixed an issue where the DELETE confirm dialog was
    disappearing.
  • [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
    trusted CIDR(s).
  • [bastion-ui] Added missing caret icon to the menu dropdown item
    called Monitor.
  • [bastion-ui] Added new setting web_health_check_path to
    basic_cluster_alb_ssl, minimal_cluster_alb_ssl, and
    azurerm_basic_cluster_alb_ssl.
  • [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
    values.
  • [bastion-ui] Fixed an issue where an Unsaved changes dialog on
    the Terraform settings page appeared when values haven’t been
    modified.
  • [cluster-ui] Fixed an issue where the broadcast settings section
    was disappearing when using Edge and Chrome.
  • [aws] Removed variables private_subnets and public_subnets
    from AWS cluster basic_cluster_alb_ssl.
  • [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
    us-east-1.
  • [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
    10.
  • [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 ami_version
    variable.
  • [aws] Fixed an issue where user cannot switch to another leaf
    connection when variables leaf_tg_stickiness_enabled,
    leaf_stickiness_ttl, web_tg_stickiness_enabled and
    web_stickiness_ttl are used in minimal_cluster_alb_ssl and
    basic_cluster_alb_ssl.
  • [aws] Added variables server_instance_profile_name,
    game_instance_profile_name, key_pair_private and
    key_pair_public in minimal_cluster_alb_ssl to be consistent
    with other minimal_* cluster modules.
  • [azure, aws] Disabled Windows Defender SmartScreen when creating wingame images to reduce CPU usage for non
    required processes.
  • [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
    (GCL).

Known Issues

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 dom.streams.enabled and
javascript.options.streams preferences to true from the about:config
URL.

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
and YouTube 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:

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

rebuilt.

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.

Limitations

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 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
pool.ntp.org.

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

AWS: Manually remove the subdomain NS record when updating the subdomain on

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