SSIMPLUS® VOD Monitor Technical Documentation
Introduction

VOD Monitor is a highly available and scalable solution to measure viewer experience of file based content from creation to consumption. Our two-time Emmy® award-winning solution uses the most accurate, complete and advanced technologies to mimic human perception of video content in the form of a SSIMPLUS® score. The score traces viewer experiences across a VOD workflow to measure drops at various stages. The solution empowers users to make critical decisions when viewer experience does not meet expectations of key stakeholders, including end-viewers. The result is a reduced mean time to resolution by an order of magnitude.

Other capabilities include:

  • Pinpoints issues at various stages of a VOD workflow
  • Detailed understanding of preservation of creative intent
  • Flexible reports and APIs to consume actionable data
  • Plug and play implementation of pass/fail approaches
  • Consistent performance across all content types and impairments
  • An order of magnitude faster than competing technologies
  • Support for advanced High Dynamic Range (HDR) workflows
  • Comparison across content providers on library, asset, and scene basis
  • Comparison across encoders and playback implementations
  • Quality Checks for various video, audio, and close caption anomalies
Architecture Overview

The following diagram illustrates a conceptual, high-level architecture for the SSIMPLUS® VOD Monitor product:

The SSIMPLUS® Analyzer Cluster is primarily responsible for analyzing video files and is intended to be deployed into a Kubernetes container management system where it is designed to elastically scale thereby allowing it to handle very large volumes of assets as quickly as the underlying hardware will support. The public interfaces to this part of the product are provided through a REST API and Web UI, both of which can be used for submitting everything from source validation no-reference analyses to full-reference encoding ladder comparisons.

As assets are analyzed, the resulting video frame scores and metrics are securely streamed to SSIMWAVE’S Insights data platform, which encapsulates the analytics and viewer intelligence algorithms necessary to produce meaningful and actionable data based on asset quality. Leveraging the power of a popular business intelligence tool, Insights allows SSIMWAVE to offer any manner of data manipulation and/or transformation, customized to the customer’s needs, which can then be consumed in any number of output formats, including visual (i.e. Web/GUI, PDF), API (i.e. JSON) and third-party product integrations (i.e. Excel). The public interfaces to Insights are provided through a REST API and a Web UI. The Insights Data Platform section below is considered mandatory reading for any successful adoption of the SSIMPLUS® VOD Monitor product.

SSIMWAVE supports five deployment models for the VOD Monitor product, each one belonging to one of three deployment types:

Production deployments:

Trial/Lab deployments:

Alternative/Custom deployment:

Each model is described in its own section below and represents some variation on the conceptual model above, with its own requirements and advantages. One constant across all deployment models is that Insights is a multi-tenant data platform that is hosted by SSIMWAVE in its own virtual private cloud (VPC).

For more details on any given model and help in understanding which one is right for you, please contact your SSIMWAVE representative.

SSIMPLUS® Analyzer Cluster - AWS Managed Service

This production deployment model is combination of a software-as-a-service (SaaS) and the SSIMPLUS® Analyzer Cluster - VPC deployment models. The architecture follows the VPC model in that both the SSIMPLUS® Analyzer Cluster and all customer video assets are kept within the customer’s AWS account but, as with a traditional SaaS offering, the AWS resources and services required to support the SSIMPLUS® Analyzer Cluster are all provisioned and configured by SSIMWAVE, with only minimal interaction required on the customer’s part. This hands-off or turnkey approach applies equally to the deploying, managing, monitoring and upgrading of the SSIMPLUS® software as well. This solution is recommended for those AWS customers that are not interested in the work of maintaining a production EKS cluster.

In reference to the AWS architecture diagram above, please note the following:

  • Customer Deployer is an AWS-knowledgeable customer representative who is responsible for executing the CloudFormation templates that are authored and maintained by SSIMWAVE. These templates are executed as part of the system’s deployment instructions and exist in order to prepare and configure the customer’s AWS account for the successful installation, functioning and on-going maintenance of the SSIMPLUS® Analyzer Cluster. From a security perspective, let’s take a closer look at the IAM roles and policies created by SSIMWAVE’s CloudFormation templates:

    • The ssimplus-vod-monitor-managed-service-deployment-prerequisites template is responsible for creating the following IAM policies and role:

      • ssimplus-vod-monitor-managed-service-policy

        This policy is the minimum set of permissions required in order to create and update the SSIMPLUS® Analyzer Cluster as an AWS EKS cluster. SSIMWAVE uses Weaveworks eksctl to install and configure the cluster.

      • ssimplus-vod-monitor-managed-service-role

        This role realizes the ssimplus-vod-monitor-managed-service-policy above and exists solely to establish a trust relationship with the customer-management-role in SSIMWAVE’s VPC (see diagram above). Because SSIMWAVE is responsible for the creation, maintenance and upgrading of the EKS cluster, this role is required in order to give SSIMWAVE the necessary permissions within the customer’s VPC.

        Important

        Please take note that the ssimplus-vod-monitor-managed-service-role and the ssimplus-vod-monitor-managed-service-policy do not have permission to access any customer video assets stored in Amazon S3.

      • AmazonEKS_EFS_CSI_Driver_Policy

        This policy is minimum set of permissions required in order to install the Amazon EFS CSI driver, which is used solely by the SSIMPLUS® Analyzer Cluster in order to create an EFS filesystem to store the frames and maps generated as part of an analysis (see diagram above).

    • The ssimplus-vod-monitor-managed-service-s3-read-only-role template is responsible for creating the following IAM role:

      • ssimplus-vod-monitor-managed-service-s3-read-only-role

        This role exists for two reasons:

        1. to realize all of the individual read-only S3 bucket policies created by the ssimplus-vod-monitor-managed-service-add-s3-bucket template and
        2. to bind to the SSIMPLUS® Analyzer Cluster’s OIDC, which uses AWS STS to provide the cluster with read-only access to the S3 buckets holding customer video assets (see diagram above).

        Important

        Please take note that the ssimplus-vod-monitor-managed-service-s3-read-only-role does not have any trust relationship with the ssimplus-vod-monitor-managed-service-role and, as such, read-only access to customer S3 assets is not provided to anything outside of the customer’s VPC.

    • The ssimplus-vod-monitor-managed-service-add-s3-bucket template is executed for every S3 bucket that the customer wishes to use with the SSIMPLUS® Analyzer Cluster. Each execution of the templates produces an IAM policy (i.e. ssimplus-vod-monitor-managed-service-s3-policy-<bucket_name>) that allows for read-only access to the given S3 bucket and then attaches that policy to the ssimplus-vod-monitor-managed-service-s3-read-only-role discussed above (see diagram).

  • SSIMWAVE Support is an AWS and VOD Monitor knowledgeable SSIMWAVE representative who is responsible for creating, configuring, managing and upgrading the SSIMPLUS® Analyzer Cluster. In order to effectively achieve these tasks, SSIMWAVE Support assumes a role within the SSIMWAVE VPC that is unique and specific to the customer (i.e. customer-management-role in the diagram above). This role, in turn, is configured to assume the ssimplus-vod-monitor-managed-service-role, created by the Customer Deployer when executing the CloudFormation scripts.

  • The architecture above is specifically designed to ensure that customer video assets never leave the customer’s VPC, either in whole or in part. Read-only access to customer assets is provided on a per-S3 bucket basis and granted only to the SSIMPLUS® Analyzer Cluster, itself. Frames and maps generated as part of in-depth inspection are stored in an encrypted Amazon EFS filesystem within the customer’s VPC.

  • SSIMPLUS metrics and metadata are the only encrypted data that leave the customer VPC for SSIMWAVE’s Insights platform. Since Insights is also hosted on Amazon AWS, the architecture above uses AWS VPC Endpoint services to ensure that the data streamed to Insights stays wholly within the AWS infrastructure and is never sent over the Internet.

    Note

    Upon request, SSIMWAVE will provide examples of the metrics and metadata streamed to Insights.

Please refer to the SSIMPLUS® Analyzer Cluster - AWS Managed Service for deployment details.

Important

This deployment model is offered only for AWS customers.

SSIMPLUS® Analyzer Cluster - VPC

In this production deployment model, SSIMWAVE makes available the software components that comprise the SSIMPLUS® Analyzer Cluster so that they can be deployed into a virtual private cloud (VPC) controlled by the customer (see SSIMPLUS® Analyzer Cluster - VPC deployment guide). The Analyzer Cluster makes use of industry standard containerization and platform technologies, such as Docker and Kubernetes, to facilitate deployment into any compatible on-prem or private cloud environment. This approach is recommended for those non-AWS customers that have both the human and computing resources necessary to support the SSIMPLUS® Analyzer Cluster. As with the most other deployment models, access to the SSIMPLUS® Analyzer Cluster is achieved via the provided REST API.

Note

With this deployment model, the customer assumes the responsibility for provisioning the required on-prem/cloud-based computing resources and deploying, managing, monitoring and upgrading any software services related to the SSIMPLUS® Analyzer cluster (see SSIMPLUS® Analyzer Cluster - VPC deployment guide). Customers are encouraged to contact their SSIMWAVE representative for more details regarding the resources needed to successfully adopt this approach.

AWS customers are strongly encouraged to consider the SSIMPLUS® Analyzer Cluster - AWS Managed Service deployment model instead.

SSIMPLUS® Analyzer - AMI

Some customers may wish to deploy the SSIMPLUS® Analyzer into an AWS Elastic Cloud Compute (EC2) instance. Typically, this deployment strategy is used for trials or lab usage of the product where the customer is also an AWS customer and their video assets are already stored in S3 buckets. To support this usage scenario, SSIMWAVE provides an Amazon Machine Image (AMI) which contains a full deployment of SSIMPLUS® VOD Monitor that can be deployed to the customer’s AWS account by following a short number of installation instructions. The caveat to this deployment model is that the system is constrained in its ability to scale by the hardware resources allocated to the given EC2 instance. For trial usage, however, concurrent, high-volume processing of video assets isn’t usually a priority.

To deploy the SSIMPLUS® Analyzer virtual machine, please follow the deployment instructions here.

SSIMPLUS® Analyzer - Virtual Machine

Some customers may wish to deploy the SSIMPLUS® Analyzer to a bare metal server or on-prem virtual machine orchestrator (i.e. VMWare EsXI). Typically, this deployment strategy is used for trials of the product or lab installations where the goal is to stand up an instance of SSIMPLUS® VOD Monitor quickly and with a minimum of effort. The caveat to this deployment model is that the system is constrained in its ability to scale and achieve high availability by the hardware resources of the hosting machine. For trials and lab usage, however, concurrent, high-volume processing of video assets in a 24/7 environment isn’t usually a priority.

SSIMWAVE can provide a virtual machine in the form of an Open Virtual Appliance (OVA) or a QEMU (QCOW2) container which contains a full deployment of SSIMPLUS® VOD Monitor that is pre-configured to work with only a few steps of additional installation instructions.

To deploy the SSIMPLUS® Analyzer virtual machine, please follow the deployment instructions here.

SSIMPLUS® Analyzer - Docker Image

Some customers may have specific deployment needs or concerns that do not align with the AWS, virtual machine or Kubernetes-based deployment models described herein. Consider these scenarios:

  • A customer is using a proprietary container management system that is incompatible with the Kubernetes design supported in the VPC model and would like to integrate the SSIMPLUS® Analyzer technology into this alternative environment while still benefiting from the power of the Insights data platform.

  • A customer is using a vendor that offers an alternative and/or proprietary container management system, for value-added reasons, and would like SSIMWAVE to work with the vendor to deploy into this environment.

Still other customers may want to “kick the tires” on the VOD Monitor Product and don’t yet have a need for the volume processing available with the SSIMPLUS® Analyzer cluster. For all such cases described above, SSIMWAVE provides access to a Docker image of the SSIMPLUS® Analyzer, which can be pulled and pushed into any local Docker registry and invoked from a CLI or other compatible tooling.

Customers that would like to create a SSIMPLUS® Analyzer cluster in a proprietary/alternative container management system are encouraged to contact their SSIMWAVE representative directly in order to discuss how to design a custom deployment that meets their needs. Because SSIMWAVE is a 100% software solution, we have the flexibility to support both custom and industry-standard container management systems.

To deploy the SSIMPLUS® Analyzer as a Docker image, please follow the deployment instructions here.

Deployment Guides

The following sections represent the various deployment guides for the customer-deployed portion of the SSIMPLUS® VOD Monitor product, otherwise referred to as the SSIMPLUS® Analyzer (Cluster). This is the portion of the system that acts as the “eyes” of the system and is installed with read-only access to your video assets and whose purpose is to analyze/score the content and securely stream the results to Insights. Please consult the Architecture Overview section for your deployment model to see more details.

The guides are divided into three sections:

  1. Production deployments

    These deployments are for those customers that are ready to deploy the product into their production workflow, having leveraged the SSIMPLUS® Analyzer and Insights REST APIs to achieve the desired level of integration. The SSIMPLUS® Analyzer Cluster is installed in such a manner as to take full-advantage of all features expected of a production system (i.e. high availability, elastic scalability).

  2. Trial/Lab deployments

    These deployments are for those customers that are trialing the SSIMPLUS® VOD Monitor product or have deployed the system for light/ad-hoc workloads where production-level features such as high availability and elastic scalability are unnecessary.

  3. Alternative/Custom deployments

    These deployments are reserved for customers that have custom or restrictive deployment needs that do not align with the preferred AWS, virtual machine or Kubernetes-based deployment models described herein.

Production Deployments

These deployments are for those customers that are ready to deploy the product into their production workflow, having leveraged the SSIMPLUS® Analyzer and Insights REST APIs to achieve the desired level of integration. The SSIMPLUS® Analyzer Cluster is installed in such a manner as to take full-advantage of all features expected of a production system (i.e. high availability, elastic scalability).

SSIMPLUS® Analyzer Cluster - AWS Managed Service

The following deployment guide identifies the actions required to deploy SSIMPLUS® VOD Monitor as managed service within a target AWS account. As a managed service, SSIMWAVE is responsible for deploying, managing, monitoring and upgrading SSIMPLUS® VOD Monitor and the customer is responsible for providing the AWS account that will act as the infrastructure to support the system. An architecture diagram of the AWS managed service is available here.

In order to facilitate a smooth deployment experience, SSIMWAVE has created instructions that require a minimum of manual steps by relying on a curated set of CloudFormation templates to add and configure the necessary AWS resources and services. As you will read below, to execute these templates, you need to create a CloudFormation stack for a given template, supply the required template parameters and then execute the stack. These tasks can be done using either the AWS web console or the CLI. These instructions herein walk you through the process using the AWS web console supplementing when useful with screen captures.

The following 30 minute companion video walks through the installation prerequisites and post-installation steps below:

Important

It is strongly recommended that someone with at least a basic understanding of the following concepts and AWS services perform the installation:

  • CloudFormation (creating and configuring stacks),
  • IAM (policy, roles),
  • basic networking (Route 53, CIDR blocks, hostnames, DNS A and CNAME records) and
  • Amazon S3 buckets.
Installation Prerequisites (~ 20 mins)
  1. Create your SSIMWAVE Insights account.

    If you have not done so already, create your account in SSIMWAVE’s Insights cloud data platform by sending your preferred email address(es) to your SSIMWAVE representative using Slack/email or the SSIMWAVE Help Center. Feel free at this time to pass along the email addresses of the users you expect to need access to SSIMPLUS® VOD Monitor system. Each user will be registered and receive a welcome email with instructions.

  2. Login to the AWS console and pick your target region.

    Important

    It is strongly recommended that you use an AWS user/role that has the AWS::AdminstratorAccess policy so that you have all of the permissions required to execute the CloudFormation scripts in later steps.

    Use the AWS region selector in the web console to select the target region into which you want to install the SSIMPLUS® Analyzer Cluster.

    Important

    In order to avoid egress data costs, you are strongly encouraged to choose the same region as the S3 bucket(s) holding the video assets you will want to use with SSIMPLUS® VOD Monitor.

  3. Create the ssimplus-vod-monitor-managed-service-deployment-prerequisites CloudFormation stack

    From the Search field beside the Services button in the menu bar, launch the CloudFormation service, and click the Create stack button to create a new stack. Choose the Template is ready and Amazon S3 URL options. The SSIMPLUS® CloudFormation template for the deployment prerequisites can be found at the S3 URL:
    https://ssimwave-public.s3.amazonaws.com/cloud-formation-templates/SSIMPLUS+VOD+Monitor+Managed+Service+Deployment+Prerequisites.yaml.

    This first CloudFormation template will establish the resources required for the SSIMWAVE to successfully deploy the SSIMPLUS® Analyzer Cluster in your AWS account. Specifically, the template creates the following resources:

    • IAM policies
    • IAM role: ssimplus-vod-monitor-managed-service-role (used for creating/managing the SSIMPLUS® Analyzer Cluster)
    • KMS encryption keys (for the encryption/decryption of secrets and filesystems with the SSIMPLUS® Analyzer Cluster)
    • TLS certificate (for encrypted access to the SSIMPLUS® Analyzer Cluster)

    Refer to the deployment architecture for more details.

  4. Specify stack details

    • Name the stack ssimplus-vod-monitor-managed-service-deployment-prerequisites.

    • The SSIMPLUS Analyzer Cluster hostname parameter is the hostname for your SSIMPLUS® Analyzer Cluster.

      The hostname should be a fully-qualified domain name (FQDN) that you can use to directly access your SSIMPLUS® Analyzer Cluster (i.e. the part of the SSIMPLUS® VOD Monitor system deployed your private cloud/on-prem infrastructure). Typically, the hostname will be a subdomain of a parent domain that your company already owns and may even be managed as a hosted zone within AWS Route 53.

      CompanyX, for example, might own companyx.com and thus a logical hostname for the SSIMPLUS® Analyzer Cluster may be vodmonitor.companyx.com. Regardless of your choice of hostname, in later steps, you will need the permissions to add DNS A and CNAME records to the parent domain so traffic can be routed to the SIMPLUS® Analyzer Cluster.

    • The SSIMPLUS Analyzer Cluster access (CIDR blocks) parameter is the comma-delimited list of IPs that are allowed access to your SSIMPLUS® Analyzer Cluster.

      In order to secure access to your SSIMPLUS® Analyzer Cluster, you are encouraged to identify CIDR blocks that encompass the full range of IP addresses that are allowed access to the system.

    • The SSIMPLUS Analyzer Cluster availability zone (AZ1/AZ2) parameters are the availability zones to use for the SSIMPLUS® Analyzer Cluster deployment.

      The SSIMPLUS® Analyzer Cluster is deployed across multiple availability zones in order to support higher availability. If you don’t have or specify valid preferences here, SSIMWAVE will select two on your behalf.

    • The SSIMWAVE Managed Service AWS IAM role ARN parameter is provided to you by your SSIMWAVE representative through Slack/e-mail or the SSIMWAVE Help Center.

      This value represents the Amazon resource name (ARN) for the SSIMWAVE IAM role that you agree to grant access to your account for the purposes of deploying, configuring, managing and monitoring your SSIMPLUS® VOD Monitor system. This role is created by SSIMWAVE specifically for your managed instance and access to it is tightly controlled and monitored.

  5. Configure stack options.

    Feel free to add a tag here to mark all resources that the are created by the CloudFormation script, as shown below:

    You should be able to accept all the default options but pay particular attention to the IAM role. If the AWS user/role that you are using to build and execute your CloudFormation stack does not have administrative privileges (i.e. AWS::AdminstratorAccess policy) in your AWS account then you must either grant them to your user/role or pick an IAM role name from the dropdown illustrated below that does have the AWS::AdminstratorAccess policy.

  6. Review and submit stack.

    The only work to do on the review page is to select the checkbox that acknowledges that the CloudFormation script will be creating IAM resources, as shown below:

  7. Create a CNAME record for your TLS certificate.

    Once you submit your stack, the AWS console will show you the stack progress as a table of events. At the point where the script creates your TLS certificate (i.e. SSIMPLUSVODMonitorCertificate), the script will pause and output a DNS record in the Status reason column that looks something like the following:

    Content of DNS Record is: {Name: _3ae0bc74e5128840e8c895b5aa3e28d8.vodmonitor.companyx.com.,Type: CNAME,Value: _bddcde8107a82addacbcb8b10dd9cc69.wrpxpmnjfs.acm-validations.aws.}

    Important

    At this point, you need to create a CNAME record in your hostname’s parent domain using the name and value displayed.
    The stack will remain paused until this record has been successfully added and it can validate the TLS certificate
    .

    Please note that it can take a few minutes after adding the CNAME record for it to propagate and be recognized.
    If you take too long to create the CNAME record, the stack may time out in which case you will have to delete the stack and start again from step 3.

    If you see any errors in the stack progress, feel free to contact your SSIMWAVE representative if you are unsure how to determine and/or fix the root cause. Errors when running the stack can often be attributed to a lack of permissions to perform the actions in the template. Please refer to step 5 above.

  8. Contact your SSIMWAVE representative upon successful completion.

    Once the stack has successfully completed, please inform your SSIMWAVE representative that the installation prerequisites have been completed using the SSIMWAVE Help Center. At this point, SSIMWAVE has what it needs to install the SSIMPLUS® Analyzer Cluster as a managed service in your account and you should be notified via your support ticket as to the target date for installation completion. If you’re are interested, please refer to section Managed Service Installation Details below for some high-level information on what AWS resources and services are created as part of the installation.

Managed Service Installation Details

The following is a list of various AWS resources and services that are created as part of installing the SSIMPLUS® Analyzer Cluster. Please refer to the deployment architecture diagram for additional details:

  • EKS cluster with 2 dynamically scalable node groups:

    • vod-monitor-control-nodes - This node group hosts the control plane for your SSIMPLUS® Analyzer Cluster and supports the REST APIs and various system services for communicating with Kubernetes, Amazon S3 and the SSIMWAVE Insights cloud data platform. The number of nodes elastically scales (i.e. grows and shrinks) to meet demand and both the minimum and preferred node count here is 2 while the maximum is 10. Most usages of the system would rarely require more than 2 nodes running concurrently. By default, each node created in this group is a c5.2xlarge on-demand EC2 instance and, due to the minimum count of 2, you can be guaranteed that at least two of the aforementioned EC2 instances will be running at all times (24/7/365). Since at least 2 nodes in this group should be available at all times, it is not recommended to use spot instances for this group.

    • vod-monitor-data-nodes - This node group hosts the data plane for your SSIMPLUS® Analyzer Cluster and supports the pods/processes used for the probing and analyzing of video assets and the streaming of their scores and metadata to SSIMWAVE Insights. The number of nodes elastically scales (i.e. grows and shrinks) to meet demand and both the minimum and preferred node count here is 0 while the maximum 30. By default, each node created in this group is a c5.4xlarge spot EC2 instance. Spot instances are considerably cheaper to operate but, if they are reclaimed, the SSIMPLUS® VOD Analyzer Cluster will need to (automatically) restart the affected probe or analysis. If your organization uses AWS reserved instance pricing or has a savings plan and you would like to use instead of spot instances, please inform your SSIMWAVE representative.

  • Auto-scaler that controls the elastic scaling within the node groups.

  • Amazon EFS system to store any frames and SSIMWAVE maps (quality, banding, color volume difference) when detailed inspection is requested.

  • AWS VPC endpoint to ensure that all of the encrypted data streamed to the SSIMWAVE Insights cloud data platform stays within AWS and never travels over the Internet.

  • Various other AWS resources such as a VPC, Subnets, Elastic IPs, EC2 instances, LoadBalancer, Prometheus agents and logging support.

    Note

    All application logs for the SSIMPLUS® Analyzer Cluster are configured to stream to SSIMWAVE’s Insights platform where they can be accessed via an ELK stack by SSIMWAVE Support.

Post Installation (~ 20 mins)
Important

The following sections should be completed only after the SSIMPLUS® Analyzer Cluster has been deployed and you have received such notification from your SSIMWAVE representative.

DNS Records

After the SSIMPLUS® Analyzer Cluster managed service has been deployed, your SSIMWAVE representative will update your support ticket with the following DNS record information (record name and value will differ from example below):

DNS Record Type Name Value
A vodmonitor.companyx.com a012c3d440fd94c3c8fabfeb1ead3645-66809327.us-east-1.elb.amazonaws.com.

The A record above associates the hostname you chose for your SSIMPLUS® Analyzer Cluster with the IP address of the AWS LoadBalancer that manages external HTTPS access to the system.

  1. At this point, you will need to add this DNS record to your parent domain (i.e. companyx.com in the example above) using the tooling/processes appropriate for your organization. If you use AWS Route 53 for your parent domain, for example, you would navigate to its associated hosted zone and add the records there.

  2. Once you’ve added the DNS A record, visit the Host page in your Insights account. You should see that your license is ACTIVE and your system health is ONLINE. If this is not the case, please check that you have added the DNS records above properly and waited 5-10 minutes for the values to propagate. If your system is still showing problems, please reach out to your SSIMWAVE representative.

SSIMPLUS® Analyzer Cluster namespace

Along with the DNS record information above, your SSIMWAVE representative will update your support ticket with the SSIMPLUS® Analyzer Cluster namespace. This string value represents the Kubernetes namespace used to hold all the Kubernetes pods for the various software components that comprise the SSIMPLUS® Analyzer Cluster. The value will be named according to the organization-site pattern. CompanyX with a site of VOD Monitor Production, for example, would use a namespace of companyx-vod-monitor-production. For now, you need only be aware that you will need this namespace value when providing access to the S3 buckets holding your video assets below.

Providing access to video assets in S3

Now that the SSIMPLUS® Analyzer Cluster is operational and reachable, you are ready to provide read-only access to the S3 bucket(s) that contain the video assets you wish to analyze. In order to facilitate a frictionless experience, SSIMWAVE has again curated a set of CloudFormation templates to create the AWS IAM policies and roles required to provide this read-only access.

  1. Create the ssimplus-vod-monitor-managed-service-s3-read-only-role CloudFormation stack.

    Using the CloudFormation service, click the Create stack button to create a new stack. Choose the Template is ready and Amazon S3 URL options. The SSIMPLUS® CloudFormation template to create the IAM role for read-only access to your S3 bucket(s) can be found at the S3 URL: https://ssimwave-public.s3.amazonaws.com/cloud-formation-templates/SSIMPLUS+VOD+Monitor+Managed+Service+S3+Read-Only+Role.yaml.

    This CloudFormation template will create an IAM role (ssimplus-vod-monitor-managed-service-s3-read-only-role) that will serve as an aggregation point for all the S3 bucket read-only IAM policies that you will create in subsequent steps.

  2. Specify stack details.

    • Name the stack ssimplus-vod-monitor-managed-service-s3-read-only-role.

    • The SSIMPLUS Analyzer EKS cluster name parameter is the name of your SSIMPLUS® Analyzer Cluster. The default value of SSIMPLUS-VOD-Monitor should always be sufficient here but your SSIMWAVE representative will inform you as part of the post-installation handoff if it needs to change.

  3. Proceed to configure the stack options, review and submit the stack and monitor the stack progress.

    Follow steps 5 and 6, respectively, from the Installation Prequisites section above.

Important

Complete/repeat steps 4, 5 and 6 below for each S3 bucket that you wish to use with the SSIMPLUS® Analyzer Cluster.

  1. Create the ssimplus-vod-monitor-managed-service-add-s3-bucket CloudFormation stack.

    Using the CloudFormation service, click the Create stack button to create a new stack. Choose the Template is ready and Amazon S3 URL options.

    The SSIMPLUS® CloudFormation template for adding an S3 bucket can be found at the S3 URL: https://ssimwave-public.s3.amazonaws.com/cloud-formation-templates/SSIMPLUS+VOD+Monitor+Managed+Service+Add+S3+Bucket.yaml.

    This CloudFormation template will create an IAM policy that will permit read-only access to the S3 bucket in question. The policy will be attached to the IAM role created above (i.e. ssimplus-vod-monitor-managed-service-s3-read-only-role), thereby permitting your EKS cluster to read from the S3 bucket.

  2. Specify stack details.

    • Name the stack in a way that identifies the specific bucket, such as ssimplus-vod-monitor-managed-service-s3-<bucket_name>. For a bucket called ssimwave-videos you might use ssimplus-vod-monitor-managed-service-s3-ssimwave-videos.

    • The S3 bucket name parameter is the name of your S3 bucket. Use only the name here and not the ARN.

  3. Proceed to configure the stack options, review and submit the stack and monitor the stack progress.

    Follow steps 5 and 6, respectively, from the Installation Prequisites section above.

  4. Submit a test analysis.

    At this point, the SSIMPLUS® VOD Monitor is ready for use. Using the Analyze page, submit a no-reference analysis of a short asset from one of your S3 buckets. For help on how to submit an analysis, please read here.

Exercising explicit control of role-based access

As described in the deployment architecture, SSIMWAVE uses IAM role-based sharing (i.e. customer-management-role -> ssimplus-vod-monitor-managed-service-role) in order to create and update the SSIMPLUS® Analyzer Cluster in the customer’s VPC. While the permissions for the ssimplus-vod-monitor-managed-service-role are the minimum required for successful operation, some customers may want to exercise explicit control over when and how long this role-based sharing is available (i.e. limit to periods of creation, upgrade etc.). To disconnect the role-based sharing between the two VPCs, one can use the AWS Web console (or CLI) to update the trust relationship on the ssimplus-vod-monitor-managed-service-role to deny the sts:AssumeRole permission for the SSIMWAVE role, as shown in the example below:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::077383753319:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_companyx-vod-production_d28f75fb83bd9880"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

To re-enable the role-based sharing, you would change the "Effect": "Deny" line to read "Effect": "Allow".

Note

In the example above, the role ARN arn:aws:iam::077383753319:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_companyx-vod-production_d28f75fb83bd9880 is being used for example/illustrative purposes only. The ARN for your specific installation will be provided as part of the Installation Prerequisites.

Next Steps (~ 10 mins)

Now that the SSIMPLUS® Analyzer Cluster has been successfully deployed, you are ready to submit new analyses and inspect the results.

For new users or those that are most comfortable with a GUI, you are encouraged to use the Insights VOD Monitor app to submit a new analysis. This app allows you to submit any number of no-reference (NR) or full-reference (FR) analyses and inspect their results using the built-in Insights dashboards. Please look here, should you need some help using the UI.

For those that would prefer to use the CLI, the following example uses cURL to submit a no-reference (NR) analysis for a video asset in AWS S3:

curl -kvi -X POST \
  https://<cluster_hostname>/api/vod/v1/analyses \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "content": {
      "title": "Rocket Launch Analysis - S3 NR - Test"
    },
    "subjectAssets": [
        {
            "name": "rocket_launch_1080_h265_qp_31.mp4",
            "storageLocation": {
                "type": "S3",
                "name": "ssimwave-video-assets",
                "credentials": {
                  "useAssumedIAMRole": true
                }
            },
            "path": "royalty_free/rocket_launch/outputs"
        }
    ],
    "analyzerConfig": {
      "enableBandingDetection": true
    }
}'

For AWS EKS deployments, the <cluster_hostname> will be the hostname/FQDN of your SSIMPLUS® Analyzer Cluster (see Installation Prequisites for details).

Lastly, you are strongly encouraged to read Using SSIMPLUS VOD Monitor where you will be provided with a more detailed overview of the SSIMPLUS® VOD Monitor system and given specific steps for further product education.

Troubleshooting and Support

If you encounter trouble or have any questions about the installation prerequisites or post installation steps, please first consult the instructional video in the overview. If you still have issues, feel free to create a support ticket by using the SSIMWAVE Help Center or to reach out to your SSIMWAVE representative directly.

SSIMPLUS® Analyzer Cluster - VPC

The following sections provide instructions for deploying the SSIMPLUS® Analyzer Cluster into a supported Kubernetes environment, including bare-metal and virtual private clouds (VPC) like AWS Elastic Kubernetes Service (EKS). Some instructions may be specific to the target Kubernetes environment and will be denoted as such (i.e. AWS Elastic Kubernetes Service (EKS) and Bare-Metal/Other).

Important

For an EKS deployment, it is strongly encouraged that someone with strong working knowledge of the following concepts and AWS services perform the installation:

  • EKS (eksctl),
  • EFS (Elastic File System),
  • AWS CLI,
  • ECR (Elastic Container Registry),
  • Kubernetes (kubectl, deployment descriptors, YAML, pods, services),
  • CloudFormation (creating and configuring stacks),
  • IAM (policy, roles),
  • basic networking (CIDR blocks, hostnames, DNS A and CNAME records, TLS certificates),
  • Bash shell scripts and
  • Amazon S3 buckets.

For a deployment on bare-metal, it is strongly encouraged that someone with strong working knowledge of the following concepts perform the installation:

  • Kubernetes (kubectl, deployment descriptors, YAML, ingress, pods, services, persistent volumes/claims),
  • basic networking (CIDR blocks, hostnames, DNS A and CNAME records, TLS certificates) and
  • Bash shell scripts.
Installation Prerequisites

The SSIMPLUS® Analyzer Cluster is designed to be installed into any modern Kubernetes environment (v1.23+). The following steps are prerequisites for a successful deployment:

  1. From your SSIMWAVE representative, you should receive or request the following items:

    1. VOD Production features license file (features.lic) containing values for the following, according to your purchase agreement:

      • Alphanumeric license verification key
      • Audio loudness measurements
      • Banding detection scoring
      • Frame and map (banding, quality, color volume difference) generation
      • Color gamut and stats generation
      • Color volume difference map generation
      • Content complexity scoring
      • Expiration date (the day on which your license expires)
      • Frame level scoring
      • HDR10 & Dolby Vision support
      • Video, audio and quality check options
      • Insights data streaming credentials
      • Insights REST API (system-level) credentials
      • Insights customer organization and site names

    2. Google Cloud Repository (GCR) service account JSON key file providing temporary access to SSIMWAVE’s gcr.io/ssimwave-vodmonitor repository.

    3. A deployment archive containing the Kubernetes cluster, deployment and service descriptors for the SSIMPLUS® Analyzer Cluster, in YAML format. The archive is named according to following pattern:
      ssimwave-vodmonitor-production-MAJOR.MINOR.PATCH-BUILD.tar.gz
      where MAJOR, MINOR, PATCH and BUILD represent the major, minor, patch and build numbers of the purchased build.

  2. The machine you are using to deploy should use the Linux operating system.

    Please ensure that your host machine has installed the following common networking and filesystem packages:

    • openssh-server
    • nfs-common
    • nfs-utils
    • net-tools

  3. The machine you are using to deploy has the Docker engine installed.

  4. The machine you are using to deploy has the Helm binary installed.

  5. The machine you are using to deploy has HTTPS (port 443) access to SSIMWAVE’S Google Cloud Repository (GCR) at the following location:

    • gcr.io/ssimwave-vodmonitor

AWS EKS Deployment

  1. On the machine you are using to deploy, follow only the prerequisites identified here for installing kubectl and eksctl.

    After following the prerequisites, you should have installed and configured the kubectl and eksctl binaries and established IAM permissions for working with EKS clusters and nodes.
    Please ensure that you have installed v1.24.7+ of kubectl and v0.125.0+ of eksctl.

  2. Pick a target AWS region into which you want to install the SSIMPLUS® Analyzer Cluster.

    Important

    In order to avoid egress data costs, you are strongly encouraged to choose the same region as the S3 bucket(s) holding the video assets you will want to use with SSIMPLUS® VOD Monitor.

  3. Follow the steps in the Installation Prerequisites for SSIMPLUS® Analyzer Cluster - AWS Managed Service, skipping the last step (i.e. step 8).

    Important

    It is strongly recommended that you use an AWS user/role that has the AWS::AdminstratorAccess policy so that you have all of the permissions required to execute the installation.

  4. You’ve created an account in SSIMWAVE’s Insights cloud data platform for you and anyone that will want to access the SSIMPLUS® VOD Monitor system.

Bare-metal Deployment

  1. The machine you are using to deploy has kubectl installed.

  2. You have the following authorizations in your Kubernetes cluster and/or namespace:

    • get/list/watch/create/update/patch/delete on pods, services, deployments, daemonsets, jobs, ingresses, configmaps, persistent volumes and persistent volume claims

  3. Your kubectl executable has its context set to use your target namespace:

    • kubectl config set-context <context>.

  4. Your Kubernetes cluster must have outbound internet access on port 443 to the following hosts:

    Note

    The Installation section below will address how to account for environments where your Kubernetes node(s) must use an HTTP or SOCKS5 proxy to reach the hosts above.

  5. You’ve created an account in SSIMWAVE’s Insights cloud data platform for you and anyone that will want to access the SSIMPLUS® VOD Monitor system.

Installation

To simplify the process of installing and configuring the SSIMPLUS® Analyzer Cluster, separate sections have been created depending on your target Kubernetes environment. Deployments to AWS Elastic Kubernetes Service (EKS), for example, would follow the heading of the same name. As specific Kubernetes environments call for specialized procedures, new sections will be added. If you are unsure which instructions to use, please contact your SSIMWAVE representative or refer to steps in Bare-Metal/Other.

Important

Use only the section that applies to your situation.

AWS Elastic Kubernetes Service (~ 45 mins)

  1. Extract the SSIMPLUS® VOD Monitor archive, containing the Kubernetes cluster, deployment and service descriptors, to an empty folder using the following command:
    tar -zxf ssimwave-vodmonitor-production-MAJOR.MINOR.PATCH-BUILD.tar.gz
    where MAJOR, MINOR, PATCH and BUILD represent the major, minor, patch and build numbers of the desired build.

  2. Edit the YAML file cluster/eks/cluster.yaml and replace all lines that end in # REPLACE-ME with the substitutions from the table below:

    Placeholder Value
    <region> The AWS region you selected and used when creating your ssimplus-vod-monitor-managed-service-deployment-prerequisites CloudFormation stack in the Installation Prerequisites.

    Use the CloudFormation service to consult the stack Outputs tab and the SSIMPLUSAnalyzerClusterRegion value.
    <availability_zone_1> The first AWS availability zone you selected when creating your ssimplus-vod-monitor-managed-service-deployment-prerequisites CloudFormation stack in the Installation Prerequisites.

    Use the CloudFormation service to consult the stack Outputs tab and the SSIMPLUSAnalyzerClusterAZ1 value.
    <availability_zone_2> The second AWS availability zone you selected when creating your ssimplus-vod-monitor-managed-service-deployment-prerequisites CloudFormation stack in the Installation Prerequisites.

    Use the CloudFormation service to consult the stack Outputs tab and the SSIMPLUSAnalyzerClusterAZ2 value.
    <kms_key> The AWS KMS key ARN created as part of your ssimplus-vod-monitor-managed-service-deployment-prerequisites CloudFormation stack in the Installation Prerequisites.

    Use the CloudFormation service to consult the stack Outputs tab and the SSIMPLUSAnalyzerClusterKeyArn value.
    <cluster_access_cidr> The CIDR block for restricting administrative access to your EKS cluster. This should be limited to the machine(s) that need eksctl and kubectl access to the EKS cluster.

    These values will not affect user access to the SSIMPLUS® VOD Monitor itself. At the very least, you need to include the machine that you currently using to execute the installation.
    <control_plane_ec2_instance_type> The backing EC2 instance type for new nodes in the control-plane. The control-plane is used for the “always-on” pods and services, which include the Analyzer Cluster REST API.

    Instance type recommendation: c5.2xlarge/c5a.2xlarge
    <data_plane_ec2_instance_type> The backing EC2 instance type for new nodes in the data-plane. The data-plane is used for the estimation and analysis pods.

    Instance type recommendation: c5.4xlarge/c5a.4xlarge
  3. Create your Kubernetes cluster.

    eksctl create cluster -f ./cluster/eks/cluster.yaml
    
    Note

    This process can take 15-20 minutes and you may see repeated messages of “waiting for CloudFormation stack…”.

  4. Create a kubectl context for your cluster and apply it.

    aws eks --region=<region> update-kubeconfig --name=SSIMPLUS-VOD-Monitor
    kubectl config use-context arn:aws:eks:<region>:<accountID>:cluster/SSIMPLUS-VOD-Monitor
    

    where

  5. Install the cluster autoscaler.

    wget https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml
    

    Modify the YAML file (cluster-autoscaler-autodiscover.yaml) accordingly:

    • replace k8s.gcr.io/autoscaling/cluster-autoscaler:v1.22.2 with k8s.gcr.io/autoscaling/cluster-autoscaler:v1.24.0
    • replace <YOUR CLUSTER NAME> with SSIMPLUS-VOD-Monitor
    • add - --scale-up-from-zero to the bottom of the command list

    Next, apply the YAML with the following command:

    kubectl --context arn:aws:eks:<region>:<accountID>:cluster/SSIMPLUS-VOD-Monitor apply -f cluster-autoscaler-autodiscover.yaml
    

  6. Create the desired namespace for your SSIMPLUS® Analyzer Cluster.

    kubectl --context arn:aws:eks:<region>:<accountID>:cluster/SSIMPLUS-VOD-Monitor create namespace <NAMESPACE>
    
    Important

    Pick an all lowercase namespace that represents your organization and site, separated by dashes (refer to the organization and site names in your VOD Monitor feature license file).
    CompanyX with a site of VOD Monitor Production, for example, would use a namespace of companyx-vod-monitor-production.

  7. Edit the YAML file vodmonitor/vodmonitor.yaml and modify the http-reverse-proxy Service (approx. line 419) as shown below:

        - apiVersion: v1
          kind: Service
          metadata:
            name: http-reverse-proxy
            namespace: "{namespace}"
            annotations:
              service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
              service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "<tls_certificate_arn>"
              service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "http,probe"
              service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "600"
              service.beta.kubernetes.io/aws-load-balancer-name: "SSIMPLUS-VOD-Monitor"
            labels:
              name: http-reverse-proxy
              app: ssimwave.vodmonitor.restapi
              cluster: SSIMWAVE
              provider: SSIMWAVE
              version: v1
          spec:
            ports:
            - name: http
              port: 443
              protocol: TCP
              targetPort: 8080
            selector:
              httpReverseProxy: "true"
            loadBalancerSourceRanges:
            - "<load_balancer_source_cidr>"
            .
            .
            - "<load_balancer_source_cidr_n>"
            type: LoadBalancer
    

    where:

    • <tls_certificate_arn> represents the ARN of the TLS certificate that was created as part of your ssimplus-vod-monitor-managed-service-deployment-prerequisites CloudFormation stack in the Installation Prerequisites. Use the CloudFormation service to consult the stack Outputs tab and the SSIMPLUSVODMonitorCertificate value.
    • <load_balancer_source_cidr><load_balancer_source_cidr_n> represent one or more CIDRs for restricting access to the AWS Load balancer and, hence, the SSIMPLUS® Analyzer Cluster itself. These CIDR block values are the same ones entered as part of your ssimplus-vod-monitor-managed-service-deployment-prerequisites CloudFormation stack in the Installation Prerequisites. Use the CloudFormation service to consult the stack Outputs tab and the SSIMPLUSAnalyzerClusterAccessCIDR values.

    Important

    Make sure that the CIDR block(s) you use for restricting access to the http-reverse-proxy LoadBalancer service include all potential users/clients that may want to use the SSIMPLUS® VOD Monitor system.

    For reference, with the modifications above, you are:

    • adding annotations to the http-reverse-proxy AWS LoadBalancer service to use the ARN for your TLS certificate and configure various LoadBalancer properties,
    • changing the external port named http from 8080 to 443,
    • adding CIDR block restrictions to restrict access to the load balancer service and
    • changing the http-reverse-proxy Kubernetes Service type from ClusterIP to LoadBalancer.

  8. Edit the YAML file vodmonitor/vodmonitor.yaml (approx. line 999) and remove the vod-frameservices-cache-pv PersistentVolume completely (i.e. remove all of the following lines):

        - apiVersion: v1
          kind: PersistentVolume
          metadata:
            name: vod-frameservices-cache-pv
            namespace: "{namespace}"
            labels:
              app: vod-frameservices
              cluster: SSIMWAVE
              provider: SSIMWAVE
              type: local
              version: v1
          spec:
            accessModes:
            - ReadWriteOnce
            capacity:
              storage: 500Gi
            hostPath:
              path: /tmp
            storageClassName: image-cache
            volumeMode: Filesystem
    

  9. Edit the YAML file vodmonitor/vodmonitor.yaml (approx. line 999) and modify the vod-frameservices-cache-pvc PersistentVolumeClaim as shown below:

        - apiVersion: v1
          kind: PersistentVolumeClaim
          metadata:
            name: vod-frameservices-cache-pvc
            namespace: "{namespace}"
            labels:
              app: vod-frameservices
              cluster: SSIMWAVE
              provider: SSIMWAVE
              version: v1
          spec:
            resources:
              requests:
                storage: 500Gi
            accessModes:
            - ReadWriteMany
            storageClassName: efs-sc
    

  10. (Optional) SSIMPLUS® Analyzer is capable of producing device-adaptive scores for a multitude of devices. To choose a list of default devices that are used in absence of any per-analysis choices, edit the YAML file vodmonitor/vodmonitor.yaml and change the devices list under analyzer-config-map (approx. line 60) to suit your needs, an example of which is shown below:

       data:
         config.json: |-
           {
             "devices": [
               "ssimpluscore",
               "ipad2021pro12.9",
               "imac27inch",
               "macbookpro16.2inch",
               "iphone13promax",
               "oled65c9pua"
             ],
             "jpeg2000DecodeThreads": -1
           }
       kind: ConfigMap
         metadata:
           labels:
             app: ssimwave.vodmonitor.restapi
             provider: SSIMWAVE
           name: analyzer-config-map
    
    Note

    The example shown above uses commonly chosen devices that represent one device per category (i.e. tablet, monitor, laptop, smartphone, TV) and should be suitable for most customers. For details on all supported devices and their respective codes, please see the Scoring Devices section under SSIMPLUS® Analyzer Configuration of the REST API.

    Note that users can always choose to override the default devices used here and specify their own devices on a per-analysis basis by supplying them in the analyzer configuration of the request body (or using the Insights VOD Monitor App).

  11. Configure AWS Elastic File System (EFS).

    From a Linux CLI, execute the following commands below while performing the following substitutions:

    • Replace <region> with the AWS region you chose in Installation Prerequisites
    • Replace <region_repo> below with the value that matches your target AWS region (see here).
    • Replace <accountID> with your AWS accountID

    kubectl config use-context arn:aws:eks:<region>:<accountID>:cluster/SSIMPLUS-VOD-Monitor
    
    eksctl create iamserviceaccount \
        --cluster SSIMPLUS-VOD-Monitor \
        --namespace kube-system \
        --name efs-csi-controller-sa \
        --attach-policy-arn arn:aws:iam::<accountID>:policy/AmazonEKS_EFS_CSI_Driver_Policy \
        --approve \
        --region <region>
    
    helm repo add aws-efs-csi-driver https://kubernetes-sigs.github.io/aws-efs-csi-driver/
    
    helm repo update
    
    helm upgrade --kube-context arn:aws:eks:<region>:<accountID>:cluster/SSIMPLUS-VOD-Monitor \
        -i aws-efs-csi-driver aws-efs-csi-driver/aws-efs-csi-driver \
        --namespace kube-system \
        --set image.repository=<region_repo>/eks/aws-efs-csi-driver \
        --set controller.serviceAccount.create=false \
        --set controller.serviceAccount.name=efs-csi-controller-sa
    
    vpc_id=$(aws eks describe-cluster \
        --name SSIMPLUS-VOD-Monitor \
        --query "cluster.resourcesVpcConfig.vpcId" \
        --output text)
    
    cidr_range=$(aws ec2 describe-vpcs \
        --vpc-ids $vpc_id \
        --query "Vpcs[].CidrBlock" \
        --output text \
        --region <region>)
    
    security_group_id=$(aws ec2 create-security-group \
        --group-name EKSEfsSecurityGroup \
        --description "EKS EFS security group" \
        --vpc-id $vpc_id \
        --output text)
    
    aws ec2 authorize-security-group-ingress \
        --group-id $security_group_id \
        --protocol tcp \
        --port 2049 \
        --cidr $cidr_range
    
    file_system_id=$(aws efs create-file-system \
        --region <region> \
        --performance-mode generalPurpose \
        --query 'FileSystemId' \
        --output text)
    
    for subnet in $(aws ec2 describe-subnets --filters "Name=vpc-id,Values=$vpc_id" --query 'Subnets[*].{SubnetId: SubnetId}' --output text); \
        do aws efs create-mount-target --file-system-id $file_system_id --subnet-id $subnet --security-groups $security_group_id; \
        done
    
    curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-efs-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/storageclass.yaml
    
    sed -i "s/fileSystemId:.*/fileSystemId: $file_system_id/g" storageclass.yaml
    
    kubectl --context arn:aws:eks:<region>:<accountID>:cluster/SSIMPLUS-VOD-Monitor apply -f storageclass.yaml
    

  12. Create private repositories in AWS Elastic Container Registry (ECR) for the SSIMPLUS® Analyzer Cluster Docker images.

    The SSIMPLUS® Analyzer Cluster software is available as a series of Docker images stored in SSIMWAVE’s GCR Docker image repository (i.e. gcr.io/ssimwave-vodmonitor). The goal here is to create private repositories in AWS ECR for each Docker image required.

    To create the private repositories needed, execute the following from a Linux CLI:

    aws ecr create-repository --region <region> --repository-name vodmonitor/analyzer
    aws ecr create-repository --region <region> --repository-name vodmonitor/ssim-capture
    aws ecr create-repository --region <region> --repository-name vodmonitor/analyzer-resource-estimator
    aws ecr create-repository --region <region> --repository-name vodmonitor/analyzer-rest-api
    aws ecr create-repository --region <region> --repository-name vodmonitor/frame-services-rest-api
    

    where <region> is the AWS region you chose in Installation Prerequisites.

    From a Linux CLI, update your Docker instance with the login data for your AWS ECR:

    aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <aws_ecr_repository>
    

    where <aws_ecr_repository> is your AWS ECR repository and uses the format: <aws_account_id>.dkr.ecr.<region>.amazonaws.com.

  13. Import the SSIMPLUS® Analyzer Cluster Docker images into your AWS ECR.

    Using the JSON key you received in the Installation Prerequisites, you’re now ready to fetch the Docker images for the SSIMPLUS® Analyzer Cluster and store them in your AWS ECR. To aid you in this endeavor, SSIMWAVE has included a BASH script named setup-for-k8s.sh inside the deployment archive you exploded in step 1.

    From a Linux CLI, update your Docker runtime instance with the login data for SSIMWAVE’s GCR:

    cat <keyfile.json> | docker login -u _json_key --password-stdin https://gcr.io
    

    where <keyfile.json> is the GCR service account JSON key file you received from your SSIMWAVE representative.

    Note

    If you are using gcloud and your docker is configured to use credential helpers for gcr.io, you will likely need to execute the following command:
    gcloud auth activate-service-account --key-file=<keyfile.json>

    From within the directory where you exploded the deployment archive, issue the following command:

    ./setup-for-k8s.sh -d "<aws_ecr_repository>/vodmonitor" -n <NAMESPACE>
    

    where <aws_ecr_repository> is your AWS ECR repository and in the format: <aws_account_id>.dkr.ecr.<region>.amazonaws.com and <NAMESPACE> is the namespace you created in step 7 above.

    The script will pull all the SSIMPLUS® Analyzer Cluster Docker images from our GCR repository, tag them with the new ECR location (i.e. <aws_ecr_repository>/vodmonitor) and then push them up to your ECR. The script also modifies all the image references in the YAML (i.e. vodmonitor/vodmonitor.yaml) for these new ECR locations.

    If you have problems with the script or require further assistance, please contact your SSIMWAVE representative.

    Important

    For security reasons, your JSON key will only work for a limited time (i.e 2 weeks). If your key has expired, the script above will fail with connection errors. You can get a new JSON key by contacting your SSIMWAVE representative.

  14. Deploy the SSIMPLUS® Analyzer Cluster.

    From a CLI, execute the following command:

    kubectl --context arn:aws:eks:<region>:<accountID>:cluster/SSIMPLUS-VOD-Monitor apply -f ./vodmonitor/vodmonitor.yaml
    

    If you see errors on the CLI after applying the YAML descriptors or your pods appear to have errors (check using kubectl -n <NAMESPACE> get pods), please review the content for the following:

    • YAML is properly formatted
    • JSON you altered or added is properly formed (i.e. you didn’t forget to add a comma to a previous line when adding a new line, etc.)
    • Image location references (i.e. image: XXX) are properly pointing to your ECR
    • Your features license (features.lic) has been properly copied/applied in the YAML (spaces and formatting are accurate)

    Note

    Although the SSIMPLUS® Analyzer Cluster’s deployment descriptors, service descriptors and RBAC definitions follow Kubernetes conventions, some elements may cause incompatibilities with your target Kubernetes environment, depending on security constraints. If this proves to be the case, please contact your SSIMWAVE representative for help in resolving any such problems.

  15. Add the DNS A record.

    You will need to add a DNS A record to associate the hostname you chose for your SSIMPLUS® Analyzer Cluster with the hostname of your system’s AWS Load Balancer service. The system’s Load Balancer service name can be found by running the following command:

    kubectl --context arn:aws:eks:<region>:<accountID>:cluster/SSIMPLUS-VOD-Monitor -n <NAMESPACE> get services
    

    Take note of the value displayed in the EXTERNAL-IP column for the http-reverse-proxy service (e.g. a012c3d440fd94c3c8fabfeb1ead3645-66809327.us-east-1.elb.amazonaws.com).

    At this point you should have a DNS A record that is similar to the following:

    DNS Record Type Name Value
    A vodmonitor.companyx.com a012c3d440fd94c3c8fabfeb1ead3645-66809327.us-east-1.elb.amazonaws.com.

    If you use AWS Route 53 and have access to the hosted zone for your parent domain (i.e. companyx.com in the example above), you can add the DNS A directly to the hosted zone.

    If you do not use AWS Route 53, then you will need to add both records to your parent domain using the tooling/processes appropriate for your organization.

  16. Modify the VOD API Host setting in your Insights account.

    The VOD API Host value associated with your SSIMWAVE Insights account is used to redirect your browser to fetch frame images/maps as part of performing an in-depth inspection of a given result. For this functionality to work, you need to configure this value to match the hostname/FQDN associated with your SSIMPLUS® Analyzer Cluster.

    1. Login to your Insights Account.
    2. Click on the user icon in the top right corner of the UI and pick Account from the dropdown menu.
    3. Scroll down to the Additional Details section and change your VOD Api Host value to match the FQDN associated with your TLS certificate.
    4. Click Save.

    Important

    All users of SSIMPLUS® VOD Monitor will need to make this same adjustment to their VOD API Host setting under their Insights account.

  17. Upload your feature license.

    To finish the system configuration, you must now apply your feature license. Using your browser, navigate to the Host page in your Insights account, where you will be presented with the information on your current host. Here you will see the following:

    • under Host information, your Insights Status and Insights API Status are both NOT CONNECTED,
    • your License information section will show ERROR and details will say that your are “Unable to connect to the license server” and
    • your System health section will show OFFLINE.

    Under the License information section, click on Upload license and pick the license file you received from your SSIMWAVE representative. Shortly after successfully loading the license, the Host page should refresh and your license should show as ACTIVE and your system health as ONLINE. If this is the case for you, feel free to jump to the next section Acessing Video Assets.

    Important

    It may take a minute for all the services to fully recognize the new license. If your system health reports OFFLINE even after uploading your license, click the Test host connection button in the Host information panel once every 10s until your system reports ONILNE. If your system health remains OFFLINE for more than a few minutes, you should expand the section to see the services that are not configured or responding as expected and reach out to your SSIMWAVE representative for help.

    If you’re interested, you can expand the System health section and click on Show all services to verify that the services that were previously OFFLINE (i.e. NOT_READY) in the step above are now ONLINE (i.e. READY). Additionally, you can expand the License information section to verify that the details of your feature license match with your expectations.

Bare-Metal/Other (~ 25 mins)

  1. Extract the SSIMPLUS® VOD Monitor archive, containing the Kubernetes cluster, deployment and service descriptors, to an empty folder using the following command:
    tar -zxf ssimwave-vodmonitor-production-MAJOR.MINOR.PATCH-BUILD.tar.gz
    where MAJOR, MINOR, PATCH and BUILD represent the major, minor, patch and build numbers of the desired build.

  2. Create the desired installation namespace <NAMESPACE> in your SSIMWAVE cluster.

    kubectl create namespace <NAMESPACE>
    
    Important

    Pick an all lowercase namespace that represents your organization and site, separated by dashes (refer to the organization and site names in your VOD Monitor feature license file).
    CompanyX with a site of VOD Monitor Production, for example, would use a namespace of companyx-vod-monitor-production.

  3. (Optional) SSIMPLUS® Analyzer is capable of producing device-adaptive scores for a multitude of devices. To choose a list of default devices that are used in absence of any per-analysis choices, edit the YAML file vodmonitor/vodmonitor.yaml and change the devices list under analyzer-config-map to suit your needs, an example of which is shown below:

       kind: ConfigMap
       metadata:
         name: analyzer-config-map
         namespace: "{namespace}"
         labels:
           app: ssimwave.vodmonitor.restapi
           provider: SSIMWAVE
       data:
         config.json: |-
           {
             "devices": [
               "ssimpluscore",
               "ipad2021pro12.9",
               "imac27inch",
               "macbookpro16.2inch",
               "iphone13promax",
               "oled65c9pua"
             ],
             "jpeg2000DecodeThreads": -1
           }
    
    Note

    The example shown above uses commonly chosen devices that represent one device per category (i.e. tablet, monitor, laptop, smartphone, TV) and should be suitable for most customers. For details on all supported devices and their respective codes, please see the Scoring Devices section under SSIMPLUS® Analyzer Configuration of the REST API.

    Note that users can always choose to override the default devices used here and specify their own devices on a per-analysis basis by supplying them in the analyzer configuration of the request body (or using the Insights VOD Monitor App).

  4. Adjust your image cache to use a persistent volume (PV) of your choice.

    The Analyzer Cluster REST API creates and maintains a writable image cache to store the frames and/or maps created when using the frame capture endpoints. By default, the YAML shipped configures the cache using a local volume, as shown below:

        - apiVersion: v1
          kind: PersistentVolume
          metadata:
            name: vod-frameservices-cache-pv
            namespace: "{namespace}"
            labels:
              app: vod-frameservices
              cluster: SSIMWAVE
              provider: SSIMWAVE
              type: local
              version: v1
          spec:
            accessModes:
            - ReadWriteMany
            capacity:
              storage: 250Gi
            hostPath:
              path: /tmp
            storageClassName: image-cache
            volumeMode: Filesystem
        - apiVersion: v1
          kind: PersistentVolumeClaim
          metadata:
            name: vod-frameservices-cache-pvc
            namespace: "{namespace}"
            labels:
              app: vod-frameservices
              cluster: SSIMWAVE
              provider: SSIMWAVE
              version: v1
          spec:
            resources:
              requests:
                storage: 250Gi
            accessModes:
            - ReadWriteMany
            selector:
              matchLabels:
                app: vod-frameservices
                pv: vod-frameservices-cache-pv
            storageClassName: image-cache
            volumeMode: Filesystem
            volumeName: vod-frameservices-cache-pv
    

    Generally speaking, local volumes (i.e. using hostPath) are not advisable for multi-node clusters and you are strongly encouraged to change the vod-frameservices-cache-pv Kubernetes Persistent Volume (PV) and vod-frameservices-cache-pvc Kubernetes Persistent Volume Claim (PVC) to PV and PVC choices, respectively, that are better suited to multi-node clusters before deploying into a production environment. Refer here for an example on how to use a Network File System (NFS) share. Currently, the image cache must reside on a file system storage device, as opposed to object storage (i.e. S3). The SSIMPLUS® Analyzer Cluster should support any Kubernetes volume or filesystem that can be mounted and shared for multiple read and write (i.e. ReadWriteMany) across all nodes in the cluster.

  5. Add a Kubernetes Ingress.

    By default, the YAML shipped with the product configures the Analyzer Cluster REST API as a ClusterIP service. For a production deployment, it is preferred to use a Kubernetes Ingress to provide external access to the REST API service. Ingresses have the additional benefits of providing load balancing, SSL termination and name-based virtual hosting.

    To add a TLS-secured Kubernetes Ingress to your deployment using the nginx Ingress controller, you can do the following:

    1. Install the nginx Helm repository:

      helm repo add nginx-stable https://helm.nginx.com/stable
      
    2. Create a new namespace for the nginx controller and install it:

      kubectl create namespace nginx-ingress
      helm install vod-monitor-ingress nginx-stable/nginx-ingress -n nginx-ingress
      

    Now you can create your Kubernetes Ingress by copying the following into the new file vodmonitor/analyzer-ingress.yaml:

        apiVersion: networking.k8s.io/v1
        kind: Ingress
        metadata:
          name: analyzer-ingress
          annotations:
            nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
            nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
            nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
            nginx.ingress.kubernetes.io/client-header-timeout: "600"
            nginx.ingress.kubernetes.io/client-body-timeout: "600"
            nginx.ingress.kubernetes.io/keep-alive: "600"
            nginx.ingress.kubernetes.io/enable-cors: "true"
            nginx.ingress.kubernetes.io/cors-allow-origin: "*"
            nginx.ingress.kubernetes.io/cors-allow-methods: "GET, PUT, POST, PATCH, OPTIONS, DELETE"
            nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,X-CustomHeader,X-LANG,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Api-Key,X-Device-Id,Access-Control-Allow-Origin"
            kubernetes.io/ingress.class: nginx 
        spec:
          tls:
          - hosts:
              - <ingress_hostname>
            secretName: analyzer-ingress-secret
          rules:
            - host: <ingress_hostname>
              http:
                paths:
                  - path: "/"
                    pathType: Prefix
                    backend:
                      service:
                        name: http-reverse-proxy
                        port:
                          name: http-rev-proxy
                  - path: "/api/vod"
                    pathType: Prefix
                    backend:
                      service:
                        name: vod-analyzer-rest-api
                        port:
                          number: http
    

    where <ingress_hostname> is the fully-qualified domain name you wish to assign your Ingress.

    To secure the Analyzer REST API service using TLS and a self-signed certificate, follow the instructions below:

    1. Obtain your identity certificate or create a self-signed certificate:
      openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ingress.key -out ./ingress.crt -subj "/CN=<ingress_hostname>/O=<ingress_hostname>"
      

    2. Create a Kubernetes TLS secret from the the (public) certificate and (private) key values created above:
      kubectl create secret tls analyzer-ingress-secret --key=./ingress.key --cert=./ingress.crt
      

    Finally you can apply the Kubernetes Ingress using the command below:

    kubectl apply -n <NAMESPACE> -f ./vodmonitor/analyzer-ingress.yaml
    

  6. Import the SSIMPLUS® Analyzer Cluster Docker images to your local Docker registry.

    For security reasons, many, if not most, customer on-prem/VPC Kubernetes clusters will not have open-ended access to SSIMWAVE’s GCR Docker image repository (i.e. gcr.io/ssimwave-vodmonitor). Instead, you will be looking to perform a docker pull/tag/push combination in order to fetch and store the SSIMPLUS® Analyzer cluster Docker images in your own private/local Docker registry. To aid you in this endeavor, SSIMWAVE has included a BASH script named setup-for-k8s.sh inside the deployment archive you exploded in step 1. To use the script, you must be working from a machine that has both HTTPS (port 443) access to gcr.io/ssimwave-vodmonitor as well HTTP/HTTPS access to your on-prem/VPC container registry.

    From a Linux CLI, update your Docker instance with the login data for SSIMWAVE’s GCR:

    cat <keyfile.json> | docker login -u _json_key --password-stdin https://gcr.io
    

    where <keyfile.json> is the SSIMWAVE GCR service account JSON key file you received as part of the Installation Prerequisites.

    Note

    If you are using gcloud and your docker is configured to use credential helpers for gcr.io, you will likely need to execute the following command:
    gcloud auth activate-service-account --key-file=<keyfile.json>

    From within the directory where you exploded the deployment archive, issue the following command:

    ./setup-for-k8s.sh -d "<your_repo/vodmonitor>" -n <NAMESPACE>
    

    where <your_repo/vodmonitor> is the location of your on-prem/VPC Docker registry that will serve as the target for the images and <NAMESPACE> is the namespace to install into.

    The script will automatically pull all the SSIMPLUS® Analyzer Cluster Docker images from the SSIMWAVE GCR repository, tag them with the new location (i.e. <your_repo/vodmonitor>) and then push them up to your on-prem/VPC Docker registry. The script also modifies all the image references in the YAML (i.e. vodmonitor/vodmonitor.yaml) for these new locations.

    If you have problems with the script or require further assistance, please contact your SSIMWAVE representative.

    Important

    For security reasons, your JSON key will only work for a limited time (i.e 2 weeks). If your key has expired, the script above will fail with connection errors. You can get a new JSON key by contacting your SSIMWAVE representative.

  7. Deploy the SSIMPLUS® Analyzer cluster by executing the following command:
    kubectl apply -f ./vodmonitor/vodmonitor.yaml

    If you see errors on the CLI after applying the YAML descriptors or your pods appear to have errors (check using kubectl get pods), please review the content for the following:

    • YAML is properly formatted
    • JSON you altered or added is properly formed (i.e. you didn’t forget to add a comma to a previous line when adding a new line, etc.)
    • Image location references (i.e. image: XXX) are properly pointing to your local Docker repository
    • Your features license (features.lic) has been properly copied/applied in the YAML (spaces and formatting are accurate)
    • Your image cache PV and PVC are properly configured
    • Required role-based access (RBAC) specifications are allowed in your Kubernetes cluster (see RBAC in vodmonitor/vodmonitor.yaml)

  8. Modify the VOD API Host setting in your Insights account.

    The VOD API Host value associated with your SSIMWAVE Insights account is used to redirect your browser to fetch frame images/maps as part of performing an in-depth inspection of a given result. For this functionality to work, you need to configure this value to match the hostname/FQDN associated with your SSIMPLUS® Analyzer Cluster which will be the same as your <ingress_hostname> in this deployment scenario (see step 5).

    1. Login to your Insights Account.
    2. Click on the user icon in the top right corner of the UI and pick Account from the dropdown menu.
    3. Scroll down to the Additional Details section and change your VOD Api Host value to match the FQDN associated with your ingress (i.e. <ingress_hostname>).
    4. Click Save.

    Important

    All users of SSIMPLUS® VOD Monitor will need to make this same adjustment to their VOD API Host setting under their Insights account.

  9. Upload your feature license.

    To finish the system configuration, you must now apply your feature license. Using your browser, navigate to the Host page in your Insights account, where you will be presented with the information on your current host. Here you will see the following:

    • under Host information, your Insights Status and Insights API Status are both NOT CONNECTED,
    • your License information section will show ERROR and details will say that your are “Unable to connect to the license server” and
    • your System health section will show OFFLINE.

    Under the License information section, click on Upload license and pick the license file you received from your SSIMWAVE representative. Shortly after successfully loading the license, the Host page should refresh and your license should show as ACTIVE and your system health as ONLINE. If this is the case for you, feel free to jump to the next section Acessing Video Assets.

    Important

    It may take a minute for all the services to fully recognize the new license. If your system health reports OFFLINE even after uploading your license, click the Test host connection button in the Host information panel once every 10s until your system reports ONILNE. If your system health remains OFFLINE for more than a few minutes, you should expand the section to see the services that are not configured or responding as expected and reach out to your SSIMWAVE representative for help.

    If you’re interested, you can expand the System health section and click on Show all services to verify that the services that were previously OFFLINE (i.e. NOT_READY) in the step above are now ONLINE (i.e. READY). Additionally, you can expand the License information section to verify that the details of your feature license match with your expectations.

Accessing Video Assets

The SSIMPLUS® Analyzer Cluster can work with video assets exposed in any one of the three following ways:

  1. AWS Simple Storage Service (S3)
  2. Kubernetes Persistent Volume (PV)
  3. HTTP Live Streaming (HLS)

Assets in AWS S3

There are three ways to access assets in an S3 bucket via the SSIMPLUS® Analyzer REST API:

  1. Client/Secret

    Requires that the S3 bucket key id and access key be passed in clear text to the REST API.

  2. Kubernetes Secret

    Requires creating a Kubernetes secret with field values for the bucket name, key id and access key and whose name follows the pattern s3secret-<s3_bucket_name>, where <s3_bucket_name> is the name of the S3 bucket. You should use the /s3AccessSecret endpoint on the SSIMPLUS® Analyzer REST API to create a conformant secret.

  3. Assumed AWS Identity and Access Management (IAM) Role

    Requires creating an AWS IAM role, which is assigned the necessary read-only privileges to the S3 bucket, and then associating it with a Kubernetes service account.

Tip

Where possible, one should look to use option 3 (Assumed IAM role) as it is the most secure and an accepted AWS best practice.

Adding S3 Buckets to EKS using IAM (~ 15 mins)

  1. Follow the instructions in Providing access to video assets in S3 under the Post Installation section of the AWS Managed Service deployment guide.

  2. Using the ARN of the created IAM ssimplus-vod-monitor-managed-service-s3-read-only-role role, annotate the default service account as follows:

    kubectl --context arn:aws:eks:<region>:<accountID>:cluster/SSIMPLUS-VOD-Monitor \
        -n <namespace> annotate sa default \
        eks.amazonaws.com/role-arn=arn:aws:iam::<accountID>:role/ssimplus-vod-monitor-managed-service-s3-read-only-role
    

    where:
    <region> is the target region for your EKS cluster,
    <accountID> is the target AWS account ID and
    <namespace> is the namespace into which you deployed the SSIMPLUS® Analyzer Cluster.

    At this point, your SSIMPLUS® Analyzer Cluster should be able to read video assets from your S3 bucket(s).

Assets in a Persistent Volume (PV) (~ 5 mins)

To use a storage device represented by a Kubernetes Persistent Volume (PV), both the PV and the Persistent Volume Claim (PVC) must be first applied to the Kubernetes cluster. The name applied to the PVC will be required when submitting analyses via the SSIMPLUS® Analyzer REST API.

NFS Example

Here are examples of an NFS PV and corresponding PVC:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: video-files-pv
spec:
  capacity:
    storage: 200Gi
  accessModes:
    - ReadOnlyMany
  nfs:
    server: nfs-server.default.svc.cluster.local
    path: "/"

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: video-files-pvc
  labels:
    app: video-files
spec:
  accessModes:
    - ReadOnlyMany
  volumeName: video-files-pv
  storageClassName: "video-files"
  resources:
    requests:
      storage: 200Gi
  selector:
    matchLabels:
      app: video-files

With regards to the SSIMPLUS® Analyzer Cluster itself, there is no additional setup or configuration required to use assets in HLS.

Next steps (~ 10 mins)

Now that the SSIMPLUS® VOD Monitor system is running, you are ready to submit new analyses and inspect the results.

For new users or those that are most comfortable with a GUI, you are encouraged to use the Insights VOD Monitor app to submit a new analysis. This app allows you to submit any number of no-reference (NR) or full-reference (FR) analyses and inspect their results using the built-in Insights dashboards. Please look here, should you need some help using the UI.

For those that would prefer to use the CLI, the following example uses cURL to submit a no-reference (NR) analysis for a video asset in AWS S3:

curl -kvi -X POST \
  https://<cluster_hostname>/api/vod/v1/analyses \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "content": {
      "title": "Rocket Launch Analysis - S3 NR - Test"
    },
    "subjectAssets": [
        {
            "name": "rocket_launch_1080_h265_qp_31.mp4",
            "storageLocation": {
                "type": "S3",
                "name": "ssimwave-video-assets",
                "credentials": {
                  "useAssumedIAMRole": true
                }
            },
            "path": "royalty_free/rocket_launch/outputs"
        }
    ],
    "analyzerConfig": {
      "enableBandingDetection": true
    }
}'

For bare-metal/other deployments, <cluster_hostname> will the same as your <ingress_hostname>.
For AWS EKS deployments, the <cluster_hostname> will be the FQDN established in your AWS Route 53.

Lastly, you are strongly encouraged to read Using SSIMPLUS VOD Monitor where you will be provided with a more detailed overview of the SSIMPLUS® VOD Monitor system and given specific steps for further product education.

Trial/Lab Deployments

These deployments are for those customers that are trialing the SSIMPLUS® VOD Monitor product or have deployed the system for light/ad-hoc workloads where production-level features such as high availability and elastic scalability are unnecessary.

SSIMPLUS® Analyzer Cluster - AMI

This deployment model addresses those customers wishing to deploy SSIMPLUS® VOD Monitor into an AWS Elastic Cloud Compute (EC2) instance for trial/lab usage. The preferred solution here is to use an Amazon Machine Image (AMI) which contains a full deployment of SSIMPLUS® VOD Monitor that can be deployed to the customer’s AWS account.

Important

It is strongly encouraged that someone with at least a basic understanding of the following AWS concepts and services perform the installation:

  • EC2 (launching, configuring, instance profiles, security groups),
  • IAM (policy creation) and
  • S3 buckets.
Cost Model

An AMI deployment has some madatory costs, as described below:

  • EC2 instance

    This is the cost of Amazon EC2 instance that launches the AMI described herein. The cost here varies depending on the EC2 instance type you choose and whether you are using spot instances or have a savings plan with Amazon. For more information and current prices, please refer to Amazon’s EC2 On-Demaind Instance Pricing.

  • SSIMPLUS® VOD Monitor minute usage fees

    These fees are the charges per minute of output video analysis charged by SSIMWAVE. For those that deploy the product through AWS Marketplace, there is pricing information available on the site. SSIMWAVE does support private offerings via AWS Marketplace and access to the AMI outside of AWS Marketplace. Please contact your SSIMWAVE represenative for details.

Installation Prerequisites

The following steps are prerequisites for a successful deployment:

  1. Provide your SSIMWAVE representative with the AWS account number and region that you will be using to import the SSIMPLUS® VOD Monitor AMI.
    SSIMWAVE needs your account number and region in order to share the AMI with the appropriate account. Your SSIMWAVE representative will let you know once this has been done.

    Important

    You are strongly encouraged to use the same region as the S3 buckets holding your video assets, otherwise you may be subject to data transfer costs.

    Note

    This step can be skipped if purchasing through AWS Marketplace.

  2. Your AWS user account has permission to:

    • create/launch EC2 instances,
    • create security groups,
    • modify network ACLs on a VPC and
    • create IAM policies and roles.

  3. Your video assets are stored in Amazon S3.

  4. Your AWS user account allows for the creation of EC2 instances with the following minimum/preferred list of hardware resources:

    1. 96GiB/128GiB memory
    2. 48/64 vCPU
    3. 250G of SSD disk space


    The minimum/preferred requirements above would dictate using a c5.12xlarge/c5.18xlarge or c5a.12xlarge/c5a.16xlarge instance type with a 250GB attached EBS volume (General Purpose SSD - gp3). Selecting the larger/preferred EC2 instance type, will allow your instance to process more content simultaneously and analyses that are more complex to decode (i.e. 4K, Dolby Vision, ProRes, JPEG 2000) may complete faster. If you have questions about alternative EC2 instance types, please contact your SSIMWAVE representative.

    Note

    Your EC2 instance can be configured to use a spot instance with a persistent request, to save on costs. Note that in-progress analyses will need to be resubmitted if the backing spot instance is destroyed and, as a result, you may see partially complete data for those interrupted jobs within Insights.

  5. The network ACL associated with your VPC and the security group associated with your EC2 instance must allow outbound internet access on port 443 to the following hosts:

  6. You’ve created an account to access your results within SSIMWAVE’s Insights data platform.

  7. You’ve received a SSIMPLUS® VOD Monitor feature license from your SSIMWAVE representative containing values for the following, according to your purchase/trial agreement:

    • Alphanumeric license verification key
    • Audio loudness measurements
    • Banding detection scoring
    • Frame and map (banding, quality, color volume difference) generation
    • Color gamut and stats generation
    • Color volume difference map generation
    • Content complexity scoring
    • Expiration date (the day on which your license expires)
    • Frame level scoring
    • HDR10 & Dolby Vision support
    • Video, audio and quality check options
    • Insights data streaming credentials
    • Insights REST API (system-level) credentials
    • Insights customer organization and site names
Installation (~ 25 mins)

The following steps and examples will use the AWS Web Console. Please contact your SSIMWAVE representative if you have any questions.

  1. Login to your AWS account using the AWS Web Console.

  2. Choose Services -> Security, Identity & Compliance -> IAM.

  3. Create a new IAM role for read-only access to the S3 bucket(s) that contain your video assets.

    • Use AWS service as the trusted entity

    • Use EC2 - Allows EC2 instances to call AWS services on your behalf as the use case.

    • Create a new policy with the following details:

      • Service: S3
      • Actions: ListBucket, GetObject and GetBucketLocation
      • Resources:
        • bucket: use the ARN for your S3 bucket (e.g. arn:aws:s3:::ssimwave-video-assets)
        • object: use the ARN for your S3 bucket and allow any object (e.g. arn:aws:s3:::ssimwave-video-assets/*)


      The JSON for your policy should look similar to the following:

      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Sid": "VODReadOnly",
            "Effect": "Allow",
            "Action": [
              "s3:GetObject",
              "s3:ListBucket",
              "s3:GetBucketLocation"
            ],
            "Resource": [
              "arn:aws:s3:::ssimwave-video-assets",
              "arn:aws:s3:::ssimwave-video-assets/*"
            ]
          }
        ]
      }
      

      Important

      Be careful to assign the permissions above only to the resources (i.e. S3 buckets) that contain the video assets you wish to use with SSIMPLUS® VOD Monitor.

      If your S3 bucket is using a custom AWS KMS key to encrypt your video assets at rest within your S3 bucket(s), then you will need to allow the role you create here to also use the key to decrypt the contents by editing the policy associated with the key as shown below:

      {
        "Statement": [
          {
            "Sid": "VODKeyAccess",
            "Effect": "Allow",
            "Action": [
              "kms:Decrypt",
              "kms:GenerateDataKey"
            ],
            "Principal": {
              "AWS": "arn:aws:iam::<accountId>:role/<role_name>"
            },
            "Resource": "*"
          }
        ]
      }
      

      where <accountId> and <role_name> match your AWS account ID and the role name you are creating in this step.

  4. From the AWS UI console, choose Services -> Compute -> EC2.

  5. Create a new Security Group (Network & Security -> Security Groups) with the following inbound and outbound rules:

    Inbound Rules

    Type Protocol Port range Source Description
    SSH TCP 22 <customer_ip_range> SSH access for deployment/troubleshooting
    HTTPS TCP 443 <customer_ip_range> HTTPS access for SSIMPLUS® VOD Monitor

    where <customer_ip_range> is the public IP address for the single machine in your company’s network (i.e. #.#.#.#/32) or range of machines in your subnet (i.e. #.#.#.#/24), depending on who will need access to the SSIMPLUS® VOD Monitor system. If your company uses a single external IP address/range for all outbound Internet access (very common), you may find it convenient to specify this IP address/range here, knowing that this should cover all users on your local network.

    All users of SSIMPLUS® VOD Monitor need HTTPS access to the instance but only a single individual/administrator should need SSH access (i.e. SSH access is used only for deploying and troubleshooting). If you are unable to isolate a single IP address for this administrator role and/or you would like to exercise a higher level of security, you are encouraged to remove the SSH inbound rule above from the security group (and optionally from the NACL associated with the VPN) after deployment and add it back only when you have additional deployment or troubleshooting activities to perform.

    Outbound Rules

    Type Protocol Port range Destination Description
    HTTPS TCP 443 All (0.0.0.0/0) SSIMWAVE Insights and SSIMWAVE Insights REST API
    HTTPS TCP 443 <region_prefix_list> S3 prefix list (for accessing your video assets)

    where <region_prefix_list> is the AWS-managed prefix list for accessing S3 buckets in your region.
    You can look up the S3 prefix list for your region by navigating to Services -> Network & Content Delivery -> VPC -> Managed Prefix Lists.
    The prefix list for us-east-1, for example, is pl-63a5400a.

    Note that the first rule allows outbound traffic on port 443 to any IP address, even though it is only needed to ingest-gateway.us-east.insights.ssimwave.com and insights.ssimwave.com. The rule is structured in this fashion because, at this time, the IP addresses that resolves insights.ssimwave.com is not fixed. This rule may change to be more restrictive in future releases.

    Important

    You will need to ensure that the network access control list (ACL) associated with your target VPC also allows the inbound and outbound rules above.

  6. Navigate to the list of available AMIs (Images -> AMIs).

  7. Find the SSIMPLUS® VOD Monitor AMI under the list of Private Images.

    The AMI will be named according to the following pattern: ssimplus-vod-monitor_<version>_MM-DD-YYYY_HH-MM

  8. Select the AMI and click on the Launch instance from AMI button to load the Launch an instance page.

  9. Name the instance accordingly (i.e. SSIMPLUS VOD Monitor <version>).

  10. Select the EC2 instance type desired.

    The recommended instance type is c5.18xlarge/c5a.16xlarge.

    Note

    Your EC2 instance can be configured to use a spot instance with a persistent request, to save on costs. Note that in-progress analyses will need to be resubmitted if the backing spot instance is destroyed and, as a result, you may see partially complete data for those interrupted jobs within Insights.

  11. Select/Create a key pair for secure SSH access to the EC2 instance.

    Important

    Make sure to save a copy of the key (.pem file) as the system’s administrator will need this value in order to SSH into the instance for any future deployment/troubleshooting activities.

  12. Configure the Network Settings as follows:

    1. Auto-assign public IP -> Enable
    2. Security group -> Select existing security group -> select the Security Group that you created earlier (step 5)

  13. Add a 250GB general purpose SSD (gp3) EBS volume.

    This storage volume is used to cache any frame captures, banding, quality and/or color volume difference maps generated as part of your usage. As this device will be used for storing frames of potentially proprietary/sensitive content, you should feel free to add at-rest encryption to this volume.

  14. Configure the Advanced Details section as follows:

    1. IAM instance profile -> Choose the IAM role you created above (step 3) that provides read permission to the S3 bucket containing your video assets.

  15. Click the Launch instance button from the Summary panel to the right of the page.

  16. Click on the instance link provided on the completion page or navigate to the list of all your EC2 instances.

  17. Select the EC2 instance that you launched for the SSIMPLUS® VOD Monitor AMI from the list.

  18. Modify your VOD API Host setting in Insights.

    The VOD API Host value associated with your SSIMWAVE Insights account is used to redirect your browser to fetch frame images/maps when performing an in-depth inspection of a given result. For this functionality to work, you need to configure this value to match the public IPv4 DNS (or IP) value of your EC2 instance.

    Note

    The public IPv4 DNS value for your EC2 instance should be visible from the Details section at the bottom of the screen and should have the following pattern: ec2-<public_ip_address>.compute-#.amazonaws.com. You may also use the public IP address, if you wish.

    1. Login to your Insights Account.
    2. Click on the user icon in the top right corner of the UI and pick Account from the dropdown menu.
    3. Scroll down to the Additional Details section and change your VOD Api Host value to match the public IPv4 DNS (or IP) value of your EC2 instance.
    4. Click Save.

    Tip

    Your EC2 instance will get a new public IPv4 DNS (and IP) value every time it is (re)started. One option that avoids having to repeat this step on each restart is to use the AWS Elastic IPs service to associate an elastic IP address with your EC2 instance.

    Important

    All users of SSIMPLUS® VOD Monitor with their own Insights account, will need to make this same adjustment to their VOD API Host setting under their Insights account.

  19. Verify that your SSIMPLUS® VOD Monitor instance is operational.

    To verify the system status, load the following URL: https://<ec2_public_dns>/status into your web browser, where <ec2_public_dns> is the public host name of your EC2 instance.

    The page displayed is a system status page for all the SSIMPLUS® VOD Monitor services. At this point, all services should show as READY except for the following which will be NOT_READY, in addition to the final outcome:

    • FilebeatConfigurationService
    • InsightsClientService
    • InsightsKafkaService

    The services above are NOT_READY because they directly depend on a valid feature license, which we will upload in the next step.

    Important

    The system provides TLS through the use of self-signed certificates and, as such, your browser will likely flag the site as a potential security risk. Please tell your browser to accept the certificate and proceed to the site.

    Each user of the SSIMPLUS® VOD Monitor system will need to accept this certificate so please direct everyone to load https://<ec2_public_dns>/status into their browsers once.

    Note

    It takes several minutes for the virtual machine to initialize and load the SSIMPLUS® VOD Monitor system. During this time, you may not get a response from the https://<ssimplus-vod-monitor>/status URL or you may see 503 (Service Unavailable), 500 (Proxy Error) pages or 404 (Not Found); this is expected. Simply refresh your browser every 30s until you see the correct content.

  20. Upload your feature license.

    To finish the system configuration and address the services that are still NOT_READY, you must now apply your feature license. Using your browser, navigate to the Host page in your Insights account, where you will be presented with the information on your current host. Here you will see the following:

    • under Host information, your Insights Status and Insights API Status are both NOT CONNECTED,
    • your License information section will show ERROR and details will say that your are “Unable to connect to the license server” and
    • your System health section will show OFFLINE.

    Under the License information section, click on Upload license and pick the license file you received from your SSIMWAVE representative. Shortly after successfully loading the license, the Host page should refresh and your license should show as ACTIVE and your system health as ONLINE. If this is the case for you, feel free to jump to the next section Next steps.

    Important

    It may take a minute for all the services to fully recognize the new license. If your system health reports OFFLINE even after uploading your license, click the Test host connection button in the Host information panel once every 10s until your system reports ONILNE. If your system health remains OFFLINE for more than a few minutes, you should expand the section to see the services that are not configured or responding as expected and consult the Troubleshooting section below.

    If you’re interested, you can expand the System health section and click on Show all services to verify that the services that were previously OFFLINE (i.e. NOT_READY) in the step above are now ONLINE (i.e. READY). You can also revisit https://<ec2_public_dns>/status where all services and the final outcome should show as READY.

    Additionally, you can expand the License information section to verify that the details of your feature license match with your expectations.

    Feel free to return to the Host page at any time in the future to both manage your feature license and assess the health of your system and its constituent services.

Upgrading Versions (~ 25 mins)

Upgrading to a new version of the SSIMPLUS® VOD Monitor AMI is simply a matter of terminating/destroying your existing instance and installing the new one by repeating the Installation steps above for the new AMI.

  1. Login to your AWS account using the AWS Web Console.

  2. From the AWS UI console, choose Services -> Compute -> EC2.

  3. Select the EC2 instance that is hosting your current SSIMPLUS® VOD Monitor instance.

  4. Choose Instance state -> Terminate instance from the dropdown menu.

  5. Follow the Installation instructions above for the new SSIMPLUS® VOD Monitor AMI.
Next steps (~ 10 mins)

Once the SSIMPLUS® VOD Monitor system is running, you are ready to submit new analyses and inspect the results.

For new users or those that are most comfortable with a GUI, you are encouraged to use the Insights VOD Monitor app to submit a new analysis. This app allows you to submit any number of no-reference (NR) or full-reference (FR) analyses and inspect their results using the built-in Insights dashboards. Please look here, should you need some help using the UI.

Important

SSIMPLUS® VOD Monitor provides TLS through the use of self-signed certificates. As a first step towards using the GUI, you need to direct your browser to accept the certificate. One way to do this is to load https://<ec2_public_dns>/status into your browser, where <ec2_public_dns> represents the public IPv4 DNS value for your EC2 instance. Your browser will likely flag the site as a potential security risk. Please tell your browser to accept the certificate and proceed to the site. Each user of the SSIMPLUS® VOD Monitor system will need to accept this certificate into their browsers once.

For those that would prefer to use the CLI, the following example uses cURL to submit a no-reference (NR) analysis for a video asset in AWS S3:

curl -kvi -X POST \
  https://<ec2_public_dns>/api/vod/v1/analyses \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "content": {
      "title": "Rocket Launch Analysis - S3 NR - Test"
    },
    "subjectAssets": [
        {
            "name": "rocket_launch_1080_h265_qp_31.mp4",
            "storageLocation": {
                "type": "S3",
                "name": "ssimwave-video-assets",
                "credentials": {
                  "useAssumedIAMRole": true
                }
            },
            "path": "royalty_free/rocket_launch/outputs"
        }
    ],
    "analyzerConfig": {
      "enableBandingDetection": true
    }
}'
Important

Take care to edit the URL used in the example above so that <ec2_public_dns> is the public IPv4 hostname (or IP) of your EC2 instance.

Once you have successfully deployed and verfied that your SSIMPLUS® VOD Monitor AMI is working, you are strongly encouraged to read Using SSIMPLUS VOD Monitor where you will be provided with a more detailed overview of the SSIMPLUS® VOD Monitor system and given specific steps for further product education.

Troubleshooting and Support

If you encounter trouble or have any questions about installing/launching your SSIMPLUS® VOD Monitor AMI, please create a support ticket by using the SSIMWAVE Help Center or feel free to reach out to your SSIMWAVE representative directly.

Enabling the Kubernetes Dashboard

For trial/lab deployments of SSIMPLUS® VOD Monitor in AWS, you can optionally (and temporarily) enable the Kubernetes Dashboard. The dashboard provides a Web UI for interacting with Kubernetes which can be especially useful in troubleshooting sessions with SSIMWAVE support. To enable the Kubernetes Dashboard, please follow the steps below:

  1. Deploy and configure the Kubernetes Dashboard

    From a CLI, run the following command:

    ssh -i key.pem ubuntu@<ec2_public_dns> "~/startKubernetesDashboard.sh"
    

    where key.pem is the key file you created in step 11 of the Installation.

    Important

    The SSIMPLUS® VOD Monitor virtual machine provides SSH access using the following credentials user: ubuntu, password: ubuntu.
    If you chose to disable the SSH inbound rule in your security group and/or NACL, you will need to add it back in order to execute the command above (see step 5 of the Installation).

    You should see output similar to the following:

    Starting and configuring the Kubernetes Dashboard...
    namespace/kubernetes-dashboard created
    serviceaccount/kubernetes-dashboard created
    service/kubernetes-dashboard created
    secret/kubernetes-dashboard-certs created
    secret/kubernetes-dashboard-csrf created
    secret/kubernetes-dashboard-key-holder created
    configmap/kubernetes-dashboard-settings created
    role.rbac.authorization.k8s.io/kubernetes-dashboard created
    clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
    rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
    clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
    deployment.apps/kubernetes-dashboard created
    service/dashboard-metrics-scraper created
    deployment.apps/dashboard-metrics-scraper created
    secret "kubernetes-dashboard-certs" deleted
    secret/kubernetes-dashboard-certs created
    deployment.apps/kubernetes-dashboard patched
    clusterrolebinding.rbac.authorization.k8s.io "kubernetes-dashboard" deleted
    
    Deploying Kubernetes Dashboard ingress and cluster-admin role binding...
    clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
    ingress.networking.k8s.io/dashboard-ingress created
    
    Creating Kubernetes Dashboard token...
    secret/kubernetes-dashboard-token created
    
    Kubernetes Dashboard login token:
    yJhbGciOiJSUzI1NiIsImtpZCI6ImdDaldoR3E4bEowN1JmOGpwM0FLQ2pDVjhJMGNNMGxVRlpiMnlZcjVuNHcifQ.eyJpc3MiOi
    JrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm
    5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2
    hib2FyZC10b2tlbi02YzJnYyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdW
    Jlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjU2Mj
    X2SQBwGnXaRap89koCipxAJarjYZRCJyOLEbXhdzf-6oHxLySXX3S5FwRvzaAbFyE5wdhweYJaHsrhwQ
    
    Finished!
    

  2. Login to the Kubernetes Dashboard using the login token.

    At this point, your Kubernetes Dashboard should be accessible from a browser at the URL: https://ec2_public_dns>/dashboard

    Use the Kubernetes Dashboard login token in the command output from the step above to log in to the Kubernetes Dashboard.

Disabling the Kubernetes Dashboard

Although access to the Kubernetes Dashboard is secured through the use of a private token, it is generally recommended that, after you have completed your troubleshooting effort, you should disable the Kubernetes Dashboard by removing it from the deployment.

From a CLI run the following command:

ssh -i key.pem ubuntu@<ec2_public_dns> "~/stopKubernetesDashboard.sh"

where key.pem is the key file you created in step 11 of the Installation.

Important

The SSIMPLUS® VOD Monitor virtual machine provides SSH access using the following credentials user: ubuntu, password: ubuntu.
If you chose to disable the SSH inbound rule in your security group and/or NACL, you will need to add it back in order to execute the command above (see step 5 of the Installation).

You should see output similar to the following:

Stopping the Kubernetes Dashboard...
namespace "kubernetes-dashboard" deleted
serviceaccount "kubernetes-dashboard" deleted
service "kubernetes-dashboard" deleted
secret "kubernetes-dashboard-certs" deleted
secret "kubernetes-dashboard-csrf" deleted
secret "kubernetes-dashboard-key-holder" deleted
configmap "kubernetes-dashboard-settings" deleted
role.rbac.authorization.k8s.io "kubernetes-dashboard" deleted
clusterrole.rbac.authorization.k8s.io "kubernetes-dashboard" deleted
rolebinding.rbac.authorization.k8s.io "kubernetes-dashboard" deleted
clusterrolebinding.rbac.authorization.k8s.io "kubernetes-dashboard" deleted
deployment.apps "kubernetes-dashboard" deleted
service "dashboard-metrics-scraper" deleted
deployment.apps "dashboard-metrics-scraper" deleted

Removing Kubernetes Dashboard ingress and cluster-admin role binding...

Finished!
SSIMPLUS® Analyzer Cluster - Virtual Machine

This deployment model delivers SSIMPLUS® VOD Monitor as a virtual machine file and is meant for those customers wishing to deploy the product on to a bare metal server for trial and/or lab usage purposes. The solution options here are to use either an Open Virtual Appliance (OVA) or an open-source Quick Emulator (QEMU) container with KVM acceleration, both of which contain a full deployment of SSIMPLUS® VOD Monitor that is configured to work in environments with modest hardware capabilities, where the benefit of elastic scaling available in a cloud environment is unnecessary or unavailable.

The OVA solution has the advantage of working with several of the most common virtualization players and, as such, has good cross-platform support, including the Windows platform. Our OVA solution has been verified to work with both Oracle’s VirtualBox and VMware ESXi.

The QEMU container runs on any Linux-based systems and has been verified to work with tools such as VirtManager and oVirt.

Important

It is recommended that someone with basic working knowledge of the following concepts perform the installation:

  • Linux CLI basics (SSH) and
  • basic networking (bridge and/or NAT adapters, HTTP/S proxy, IP addresses, hostnames).

For OVA deployments, knowledge or experience with VirtualBox is useful.
For QEMU deployments, knowledge of VirtManager is useful.

Installation Prerequisites

The following steps are prerequisites for a successful deployment:

  1. From your SSIMWAVE representative, you should receive or request the following items:

    1. VOD Production features license file (features.lic) containing values for the following, according to your purchase/trial agreement:

      • Alphanumeric license verification key
      • Audio loudness measurements
      • Banding detection scoring
      • Frame and map (banding, quality, color volume difference) generation
      • Color gamut and stats generation
      • Color volume difference map generation
      • Content complexity scoring
      • Expiration date (the day on which your license expires)
      • Frame level scoring
      • HDR10 & Dolby Vision support
      • Video, audio and quality check options
      • Insights data streaming credentials
      • Insights REST API (system-level) credentials
      • Insights customer organization and site names

    2. The OVA/QEMU that has been built for your trial/lab.

      The OVA/QEMU will be large in size (approximately 3GB) and named according to the following pattern:
      ssimplus-vod-monitor_MAJOR.MINOR.PATCH-BUILD_MM-DD-YYYY_HH-MM.ova/qcow2
      where MAJOR, MINOR, PATCH and BUILD represent the major, minor, patch and build numbers of the target build and YYYY, HH and MM are the year, hour and date of the virtual machine’s creation.

  2. The physical/virtual host machine must have the following minimum hardware resources that can be dedicated to the SSIMPLUS® VOD Monitor virtual machine:

    1. 24G RAM (32G RAM preferred)
    2. 24 CPU cores (32 cores preferred)
    3. 25G of free disk space (100G preferred)

    Note

    You are strongly encouraged to use the preferred values above, when possible.

  3. The physical/virtual host machine should, ideally, use a 64-bit Linux operating system.

    Please ensure that your host machine has installed the following common networking and filesystem packages:

    • openssh-server
    • nfs-common
    • nfs-utils (may not be available for all Linux distros)
    • net-tools
    • bridge-utils

    Note

    You may use an alternative operating system (i.e. Windows/MacOS) provided that your virtualization player can host our supported virtual machine container (i.e. OVA or QEMU). Instructions in this guide, however, will assume the preferred Linux-based host operating system.

  4. The physical/virtual host machine should have installed a virtualization player that can support your chosen virtual machine container (i.e. Open Virtualization Format (OVF) or QEMU) along with hardware-assisted virtualization (i.e. Intel VT-x or AMD-V).

    For OVA files, one of the more popular virtualization players is Oracle’s VirtualBox.
    For QEMU files, VirtManager is a common option. See here for instructions on how to install VirtManager and KVM on Ubuntu 20.04.

    On a Linux host machine, a positive value for the following command indicates that you have hardware-assisted virtualization enabled:

    grep -Eoc '(vmx|svm)' /proc/cpuinfo
    

  5. The video assets you wish to process must be either:

    1. mounted on the host machine in a folder that can be shared with SSIMPLUS® VOD Monitor virtual machine through the virtualization player,
    2. mountable as a Linux file system within the SSIMPLUS® VOD Monitor virtual machine (you can SSH into the instance and install drivers as needed),
    3. available via a Network File System (NFS),
    4. and/or available via AWS S3.

    In the case of NFS, the exported folder(s) must allow for read-only access to the assets without needing any specific user/group permissions and/or credentials.

    In the case of S3, you must have the following details available:

    • bucket name
    • access key id
    • access key

  6. Your local network must allow outbound internet access on port 443 to the following hosts:

    Note

    The SSIMPLUS® VOD Monitor virtual machine supports using SOCKS5 and HTTP/S forward proxies, if required. Please see the Installation section below for configuration details.

  7. You’ve created an account to access your results within SSIMWAVE’s Insights data platform.

Installation

The following sections illustrate the installation instructions for OVA and QEMU virtual machine images, respectively. Pick the section that applies to your offering.

OVA (~ 30 mins)

The following steps illustrate installing SSIMPLUS® VOD Monitor as an OVA container named simplus-vod-monitor_2.21.0-25_09-07-2023_19-16.ova, using VirtualBox as the virtualization player and a CLI. You should replace simplus-vod-monitor_2.21.0-25_09-07-2023_19-16.ova with the image filename for your release. Similar steps should apply to other virtualization player products, many of which have GUIs to achieve the same operations. Please contact your SSIMWAVE representative if you have any questions.

  1. Import the SSIMPLUS® VOD Monitor OVA into your virtualization player.

    vboxmanage import simplus-vod-monitor_2.21.0-25_09-07-2023_19-16.ova
    

    Please wait 5 minutes for the virtual machine to successfully import and stand up the all the services inside.

  2. Verify your virtual machine import.

    vboxmanage list vms
    

    You should see your VM name in this list (in this case simplus-vod-monitor_2.21.0-25_09-07-2023_19-16)

  3. Configure your virtual machine network settings.

    You will need the SSIMPLUS® VOD Monitor virtual machine to be accessible on your local network. Similarly, the virtual machine must be able to connect to the internet (i.e. on port 443 to the Insights hosts discussed in the Insights Prerequisites). There are two documented approaches below: Bridge Adapter and NAT.

    Bridged Adapter
    If the local network, on which your host machine resides, has a DHCP server then the simplest and preferred approach is to configure your virtual machine with a bridge adapter that is bound to your host machine’s physical network interface. This will ensure that, once the virtual machine is started, it will get its own IP address from your DHCP server and would then be directly accessible from any machine on your local network. The caveat here is that if you don’t want the IP address to change when the host or virtual machine is rebooted, you may need to modify your DHCP server to allow static assignment based on the interface’s MAC address or provide some alternative DNS solution.

    vboxmanage modifyvm "simplus-vod-monitor_2.21.0-25_09-07-2023_19-16" \
    --nic1 bridged --bridgeadapter1 $(route | grep '^default' | grep -o '[^ ]*$' | head -n 1)
    

    Notice in the example above route | grep '^default' | grep -o '[^ ]*$' | head -n 1 is automated way of determining the default adapter on your host machine. If you’d prefer, you can substitute that logic with the name of the appropriate adapter (e.g. eth0).

    Network Address Translation - NAT
    If you don’t have a DHCP server available, you can use Network Address Translation (NAT) and port forwarding to provide access to your virtual machine via your host machine. The following steps can be used with VirtualBox:

    vboxmanage modifyvm "simplus-vod-monitor_2.21.0-25_09-07-2023_19-16" \
    --nic1 nat --natpf1 "vodmonitorhttps,tcp,,8443,,443" --natpf1 "vodmonitorssh,tcp,,2222,,22"
    

    Here we instruct VirtualBox to forward all packets that come to the host machine on port 8443 to port 443 (HTTPS) on the virtual machine. The same is done for port 2222 and the standard SSH port, 22. Using this approach you can access the SSIMPLUS® Analyzer REST API using the hostname/IP of your host machine and the 8443 port. The following examples are common URLs used to interact with the SSIMPLUS® Analyzer REST API, modified to account for NAT and the port forwarding example above:

    • https://<hostmachine>:8443/status (System Status)
    • https://<hostmachine>:8443/api/vod/v1/analyses (Analysis submission endpoint)

    For more details on VirtualBox networking options, please take a look here.

  4. (Optional, OVA and VirtualBox only) Share the host folders containing your video assets with the SSIMPLUS® VOD Monitor virtual machine.

    vboxmanage sharedfolder add "simplus-vod-monitor_2.21.0-25_09-07-2023_19-16" --name videos --hostpath /mnt/videos --readonly --automount
    

    If you have one or more folders mounted on your host that contain video assets you wish to use, you can set them up as shared folders in the SSIMPLUS® VOD Monitor virtual machine. In the example above, the folder you wish to share with the virtual machine is mounted on the host at /mnt/videos.

    Important

    Please ensure that host folder names use only alphanumeric characters, dashes (-) and/or underscores (_) in their names.

  5. Start the SSIMPLUS® VOD Monitor virtual machine, choosing a headless mode, if available.

    vboxmanage startvm "simplus-vod-monitor_2.21.0-25_09-07-2023_19-16" --type headless
    

    It may take several minutes for the virtual machine to fully start and all networking services to become available.

  6. (Bridged Adapter) If you used the bridged adapter in the network configuration step above, once the virtual machine is up and running, record the IP address it was assigned from the command below:

    vboxmanage guestproperty get "simplus-vod-monitor_2.21.0-25_09-07-2023_19-16" "/VirtualBox/GuestInfo/Net/0/V4/IP"
    

    If the IP address is not yet available you will see a message similar to the following: No value set!. In this case, simply keep trying.
    If you used NAT, this step does not apply to you and you will see an internal address here (most likely on the 10.0.2.x network) which you can ignore.

  7. Verify that your SSIMPLUS® VOD Monitor instance can connect to our Insights cloud data platform.

    From a CLI, run the following command:

    ssh ubuntu@<ssimplus-vod-monitor> "~/testInsightsConnections.sh"
    

    where <ssimplus-vod-monitor> is the IP address (or FQDN) associated with your virtual machine.
    If you are are using the Bridged Adapter above, the IP address to use here will be the one you recorded in the previous step (assigned to your virtual machine by your network DHCP server). If you are using NAT, the IP address (or FQDN) to use will be that of the host machine, including the port (e.g. https://<host_machine_ip>:8443).

    Important

    The SSIMPLUS® VOD Monitor virtual machine provides SSH access using the following credentials user: ubuntu, password: ubuntu. If you are using Network Address Translation (NAT) to access your SSIMPLUS® VOD Monitor, take care to add the SSH forwarding port to the command above.

    If the instance can successfully connect to Insights, you should see output like the following:

    Creating Insights connection testing pod...
    job.batch/check-insights-connectivity created
    
    Checking for Insights connection tester pod to be COMPLETED...
    Checking for Insights connection tester pod to be COMPLETED...
    
    ingest-gateway.us-east.insights.ssimwave.com:443 -> Good.
    insighs.ssimwave.com:443 -> Good.
    
    job.batch "check-insights-connectivity" deleted
    

    If you see failures in the connection attempts above, please make sure that your local network allows outbound access on port 443 to the addresses listed in the Installation Prerequisites. If your network requires use of a proxy, please consult the appropriate section below.

    HTTP Proxy
    Similarly, an HTTP proxy can be configured as follows:

    ssh ubuntu@<ssimplus-vod-monitor> "~/configureInsightsProxy.sh --http-proxy <IP>:<PORT>"
    

    If your HTTP proxy server requires credentials, you can add them as follows:

    ssh ubuntu@<ssimplus-vod-monitor> "~/configureInsightsProxy.sh --http-proxy <IP>:<PORT> --http-proxy-user <USER> --http-proxy-password <PASSWORD>"
    

    where <ssimplus-vod-monitor> is the IP address/FQDN of your SSIMPLUS® VOD Monitor virtual machine instance (adjusting for any port forwarding that applies).

    SOCKS Proxy
    If your network requires the use of a SOCKS5 or HTTP forward proxy in order to connect to external hosts, you can configure the SSIMPLUS® VOD Monitor virtual machine to use a SOCKS5 proxy server as follows:

    ssh ubuntu@<ssimplus-vod-monitor> "~/configureInsightsProxy.sh --socks5-proxy <IP>:<PORT>"
    

    If your SOCKS5 proxy server requires credentials, you can add them as follows:

    ssh ubuntu@<ssimplus-vod-monitor> "~/configureInsightsProxy.sh --socks5-proxy <IP>:<PORT> --socks5-proxy-user <USER> --socks5-proxy-password <PASSWORD>"
    

    where <ssimplus-vod-monitor> is the IP address/FQDN of your SSIMPLUS® VOD Monitor virtual machine instance (adjusting for any port forwarding that applies).

  8. Modify your VOD API Host setting in Insights.

    The VOD API Host value associated with your SSIMWAVE Insights account is used to redirect your browser to fetch frame images/maps when performing an in-depth inspection of a given result. For this functionality to work, you need to configure this value to match the IP address (or FQDN) associated with your virtual machine.

    Note

    You can use either the IP address or the equivalent FQDN when specifying the VOD API Host name. If you use a FQDN, you must make sure that all users of the SIMPLUS® VOD Monitor virtual machine will be able to resolve the name (i.e. either through a shared/network DNS server or local modification of /etc/hosts).

    1. From your machine (i.e. not the host machine for the VM), login to your Insights Account.
    2. Click on the user icon in the top right corner of the UI and pick Account from the dropdown menu.
    3. Scroll down to the Additional Details section and change your VOD Api Host value to match your virtual machine’s IP/FQDN.
    4. Click Save.

    Important

    Each user of the SSIMPLUS® VOD Monitor system will need to use the same value for their VOD API Host in their Insights account..

  9. Verify that your SSIMPLUS® VOD Monitor virtual machine is operational.

    To verify the system status, use your machine (i.e. not the host machine for the VM) to load the following URL: https://<ssimplus-vod-monitor>/status into a web browser, where <ssimplus-vod-monitor> is the IP address or FQDN associated with the virtual machine, adjusting as necessary for any NAT port forwarding that applies.

    The page displayed is a system status page for all the SSIMPLUS® VOD Monitor services. At this point, all services should show as READY except for the following which will be NOT_READY, in addition to the final outcome:

    • FilebeatConfigurationService
    • InsightsClientService
    • InsightsKafkaService

    The services above are NOT_READY because they directly depend on a valid feature license, which we will upload in the next step.

    Important

    The system provides TLS through the use of self-signed certificates and, as such, your browser will likely flag the site as a potential security risk. Please tell your browser to accept the certificate and proceed to the site.

    Each user of the SSIMPLUS® VOD Monitor system will need to accept this certificate so please direct everyone to load https://<ssimplus-vod-monitor>/status into their browsers once.

    Note

    It takes several minutes for the virtual machine to initialize and load the SSIMPLUS® VOD Monitor system. During this time, you may not get a response from the https://<ssimplus-vod-monitor>/status URL or you may see 503 (Service Unavailable), 500 (Proxy Error) pages or 404 (Not Found); this is expected. Simply refresh your browser every 30s until you see the correct content.

  10. Upload your feature license.

    To finish the system configuration and address the services that are still NOT_READY, you must now apply your feature license. Using a browser on your machine (i.e. not the host machine for the VM), navigate to the Host page in your Insights account, where you will be presented with the information on your current host. Here you will see the following:

    • under Host information, your Insights Status and Insights API Status are both NOT CONNECTED,
    • your License information section will show ERROR and details will say that your are “Unable to connect to the license server” and
    • your System health section will show OFFLINE.

    Under the License information section, click on Upload license and pick the license file you received from your SSIMWAVE representative. Shortly after successfully loading the license, the Host page should refresh and your license should show as ACTIVE and your system health as ONLINE. If this is the case for you, feel free to jump to the next section Acessing Video Assets.

    Important

    It may take a minute for all the services to fully recognize the new license. If your system health reports OFFLINE even after uploading your license, click the Test host connection button in the Host information panel once every 10s until your system reports ONILNE. If your system health remains OFFLINE for more than a few minutes, you should expand the section to see the services that are not configured or responding as expected and reach out to your SSIMWAVE representative for help.

    If you’re interested, you can expand the System health section and click on Show all services to verify that the services that were previously OFFLINE (i.e. NOT_READY) in the step above are now ONLINE (i.e. READY). You can also revisit https://<ssimplus-vod-monitor>/status where all services and the final outcome should show as READY.

    Additionally, you can expand the License information section to verify that the details of your feature license match with your expectations.

Upgrading Versions (~ 30 mins)

Upgrading to a new version of the SSIMPLUS® VOD Monitor virtual machine is simply a matter of powering off your existing instance and installing the new one by repeating the Installation steps above for the new file.

  1. Power off your existing SSIMPLUS® VOD Monitor virtual machine

    vboxmanage controlvm "simplus-vod-monitor_2.21.0-25_09-07-2023_19-16" poweroff
    

  2. (Optional) Unregister and, optionally, remove your existing SSIMPLUS® VOD Monitor virtual machine

    vboxmanage unregistervm "simplus-vod-monitor_2.21.0-25_09-07-2023_19-16" --delete
    

    The --delete switch is optional and will completely remove the OVA from your host system.

  3. Follow Installation instructions for your new SSIMPLUS® VOD Monitor virtual machine/OVA, using the same choices as before.

Upgrading VM Hardware (~ 5 mins)

Allocating more CPU cores and/or memory to your SSIMPLUS® VOD Monitor virtual machine will allow you to process more analyses concurrently. To add hardware resources, simply power off your virtual machine, alter the CPU/RAM to the desired levels and restart. The following procedure illustrates how to do this using VirtualBox as the virtualization player:

  1. Power off your existing SSIMPLUS® VOD Monitor virtual machine

    vboxmanage controlvm "simplus-vod-monitor_2.21.0-25_09-07-2023_19-16" poweroff
    

  2. Modify the CPU and/or RAM allocated to your SSIMPLUS® VOD Monitor virtual machine

    vboxmanage modifyvm "simplus-vod-monitor_2.21.0-25_09-07-2023_19-16" --memory 32000
    vboxmanage modifyvm "simplus-vod-monitor_2.21.0-25_09-07-2023_19-16" --cpus 32
    

    In the examples above, we set the memory to 32GB and the number of cores/cpus to 32.

  3. Start the SSIMPLUS® VOD Monitor virtual machine, choosing a headless mode, if available.

    vboxmanage startvm "simplus-vod-monitor_2.21.0-25_09-07-2023_19-16" --type headless
    

    Please wait 5 minutes for the virtual machine to successfully import and stand up all the services inside.

  4. At this point, your SSIMPLUS® VOD Monitor virtual machine should be up and running. Load the URL https://<ssimplus-vod-monitor>/status in your browser, where <ssimplus-vod-monitor> is the IP address or FQDN associated with the virtual machine, adjusting as necessary for any NAT port forwarding. Verify that all services and the final outcome at the bottom of the page show as READY.

    Note

    It takes several minutes for the virtual machine to initialize and load the SSIMPLUS® VOD Monitor system. During this time, you may not get a response from the https://<ssimplus-vod-monitor>/status URL or you may see 503 (Service Unavailable), 500 (Proxy Error) pages or 404 (Not Found); this is expected. Simply refresh your browser every 30s until you see the correct content.

QEMU (~ 30 mins)

The following steps illustrate installing SSIMPLUS® VOD Monitor as a QEMU container named ssimplus-vod-monitor_2.21.0-25_09-07-2023_20-20.qcow2, using VirtManager as the virtualization player and a CLI. You should replace ssimplus-vod-monitor_2.21.0-25_09-07-2023_20-20.qcow2 with the image filename for your release. Similar steps should apply to other virtualization player products, many of which have GUIs to achieve the same operations. Please contact your SSIMWAVE representative if you have any questions.

  1. If you are not using root, make sure you’ve add your user to the libvirt and kvm groups and then logout and back in.

    sudo usermod -aG libvirt $(whoami)
    sudo usermod -aG kvm $(whoami)
    logout
    

  2. Configure your virtual machine network settings.

    You will need the SSIMPLUS® VOD Monitor virtual machine to be accessible on your local network. Similarly, the virtual machine must be able to connect to the internet (i.e. on port 443 to the Insights hosts discussed in the Insights Prerequisites). There are two documented approaches below: Bridge Adapter and NAT.

    Bridged Adapter
    If the local network, on which your host machine resides, has a DHCP server then the simplest and preferred approach is to configure your virtual machine with a bridge adapter that is bound to your host machine’s physical network interface. This will ensure that, once the virtual machine is started, it will get its own IP address from your DHCP server and would then be directly accessible from any machine on your local network. The caveat here is that if you don’t want the IP address to change when the host or virtual machine is rebooted, you may need to modify your DHCP server to allow static assignment based on the interface’s MAC address or provide some alternative DNS solution.

    Assuming your host is Linux and you are using the NetworkManager service to manage your network, you can do the following to establish a bridge network:

    sudo nmcli con add ifname br0 type bridge con-name br0
    sudo nmcli con add type bridge-slave ifname $(route | grep '^default' | grep -o '[^ ]*$' | head -n 1) master br0
    sudo nmcli con modify br0 bridge.stp no
    sudo reboot
    

    Notice in the example above route | grep '^default' | grep -o '[^ ]*$' | head -n 1 is automated way of determining the default adapter on your host machine. If you’d prefer, you can substitute that logic with the name of the appropriate adapter (e.g. eth0), if you know it.

    Note

    Depending on the Linux variant on your host machine and what service you are using to manage your networking, your solution to creating a bridge network may be different. Moreover, your local network may not have a DHCP server from which new local IP addresses can be obtained. Consult instructions for your Linux variant and networking policies and make adjustments to the above as necessary.

    Next, we add the bridge network to VirtManager by creating a file called bridge.xml somewhere on your host machine with the following contents:

    <network>
      <name>bridge</name>
      <forward mode="bridge"/>
      <bridge name="bridge" />
    </network>
    

    Add the network to VirtManager by executing the following:

    virsh net-define bridge.xml
    virsh net-start bridge
    virsh net-autostart bridge
    

    Verify that the bridge network is active by executing the following:

    virsh net-list
    

    Network Address Translation - NAT
    If you don’t have a DHCP server available on your local network and your host machine’s IP/hostname is static, you can use Network Address Translation (NAT) and port forwarding to provide access to your virtual machine via your host machine.

    First, let’s modify the default network to assign the same local IP address to your SSIMPLUS® VOD Monitor virtual machine:

    virsh net-edit default
    

    Modify the default network’s <ip> element as shown below:

    .
    .
    .
    <ip address='192.168.122.1' netmask='255.255.255.0'>
      <dhcp>
        <range start='192.168.122.2' end='192.168.122.254'/>
          <host mac='52:54:00:8f:7f:a5' name='ssimplus-vod-monitor' ip='192.168.122.2'/>
      </dhcp>
    </ip>
    

    Create and edit a QEMU hook file for libvirt as follows:

    sudo touch /etc/libvirt/hooks/qemu
    sudo chmod a+rx /etc/libvirt/hooks/qemu
    

    Use the following contents for the /etc/libvirt/hooks/qemu file:

    #!/bin/bash
    
    # IMPORTANT: Change the "VM NAME" string to match your actual VM Name.
    # In order to create rules to other VMs, just duplicate the below block and configure
    # it accordingly.
    if [ "${1}" = "ssimplus-vod-monitor" ]; then
    
       # Update the following variables to fit your setup
       GUEST_IP=192.168.122.2
       GUEST_PORT=443
       HOST_PORT=8443
    
       if [ "${2}" = "stopped" ] || [ "${2}" = "reconnect" ]; then
    	/sbin/iptables -D FORWARD -o virbr0 -p tcp -d $GUEST_IP --dport $GUEST_PORT -j ACCEPT
    	/sbin/iptables -t nat -D PREROUTING -p tcp --dport $HOST_PORT -j DNAT --to $GUEST_IP:$GUEST_PORT
       fi
       if [ "${2}" = "start" ] || [ "${2}" = "reconnect" ]; then
    	/sbin/iptables -I FORWARD -o virbr0 -p tcp -d $GUEST_IP --dport $GUEST_PORT -j ACCEPT
    	/sbin/iptables -t nat -I PREROUTING -p tcp --dport $HOST_PORT -j DNAT --to $GUEST_IP:$GUEST_PORT
       fi
    fi
    

    Restart the default network and the libvirtd service:

    virsh net-destroy default
    virsh net-start default
    sudo systemctl restart libvirtd
    

    The steps above ensure that a private IP address of 192.168.122.2 will always be assigned to the SSIMPLUS® VOD Monitor virtual machine and that the host machine will provide NAT services on behalf of the virtual machine, mapping port 8443->443.

  3. Install the SSIMPLUS® VOD Monitor QEMU into VirtManager.

    If you are using the bridged adapter, run the following:

    virt-install --virt-type kvm --name ssimplus-vod-monitor --memory 32768 --vcpus 32 \
        --graphics none --os-type Linux --os-variant ubuntu22.04 --disk <qemu_path> \
        --import --noautoconsole --autostart --network bridge
    

    If you are using NAT, run the following:

    virt-install --virt-type kvm --name ssimplus-vod-monitor --memory 32768 --vcpus 32 \
        --graphics none --os-type Linux --os-variant ubuntu22.04 --disk <qemu_path> 
        --import --noautoconsole --autostart --network=default,model=virtio,mac=52:54:00:8f:7f:a5
    

    where <qemu_path> is the absolute path on disk where you copied the SSIMPLUS® VOD Monitor QEMU container (e.g. /home/userX/ssimplus-vod-monitor_2.21.0-25_09-07-2023_20-20.qcow2).

    Please wait 5 minutes for the virtual machine to successfully import and stand up all the services inside.

    Note

    Note that the command above gives the virtual machine 32G of RAM and 32 vCPUs. You may alter these to suit your underlying hardware but you should not use anything less than the minimum specification presented in the Installation Prerequisites.

  4. Verify your virtual machine import.

    virsh list --all
    

    You should see your VM name in this list (in this case ssimplus-vod-monitor) and the state should be running.

  5. (Bridged Adapter) Once the virtual machine is up and running, record the IP address it was assigned from the command below:

    virsh domifaddr --source agent ssimplus-vod-monitor 2> /dev/null | grep eth0 | awk -F " " '{print $4}' | cut -d"/" -f1
    

    This IP address should be local to the network on which your host machine sits and will be furnished by the DHCP server on your local network.

    Note

    If you don’t see an IP address immediately, keep retrying the command. It may take 5 minutes for the virtual machine to successfully import and stand up all the services inside.

    If you are using NAT, this step does not apply to you.

  6. (Network Address Translation - NAT) Update SSIMPLUS® VOD Monitor to use the IP address of the host machine.

    In order to support NAT, the SSIMPLUS® VOD Monitor instance within the virtual machine needs to know about the local IP address of the host machine so it doesn’t ignore requests that come from that address. Run the following from a host machine CLI:

    hostIP=$(ip a | grep ' '$(route | grep '^default' | grep -o '[^ ]*$' | head -n 1) | grep inet | awk -F " " '{print $2}' | cut -d"/" -f1) 
    ssh ubuntu@192.168.122.2 "sed -i 's=nginx.ingress.kubernetes.io/server-alias: \"=nginx.ingress.kubernetes.io/server-alias: \"'$hostIP',=' ~/analyzer-ingress.yaml" 
    ssh ubuntu@192.168.122.2 "kubectl apply -f ~/analyzer-ingress.yaml"
    
    Important

    The SSIMPLUS® VOD Monitor virtual machine provides SSH access using the following credentials user: ubuntu, password: ubuntu.

    Note that when sending commands via SSH to the SSIMPLUS® VOD Monitor virtual machine from the host machine, we use the fixed, private IP 192.168.122.2. Using this IP to reach the SSIMPLUS® VOD Monitor virtual machine is only valid from within the host machine and not from anywhere else on your local network.

  7. Verify that your SSIMPLUS® VOD Monitor instance can connect to our Insights cloud data platform.

    From a CLI, run the following command:

    ssh ubuntu@<ssimplus-vod-monitor> "~/testInsightsConnections.sh"
    

    where <ssimplus-vod-monitor> is the IP address of your SSIMPLUS® VOD Monitor virtual machine instance (i.e. assigned by your network DHCP server if you’re using the bridged adapter or 192.168.122.2 if you’re using NAT).

    Important

    The SSIMPLUS® VOD Monitor virtual machine provides SSH access using the following credentials user: ubuntu, password: ubuntu.

    If the instance can successfully connect to Insights, you should see output like the following:

    Creating Insights connection testing pod...
    job.batch/check-insights-connectivity created
    
    Checking for Insights connection tester pod to be COMPLETED...
    Checking for Insights connection tester pod to be COMPLETED...
    
    ingest-gateway.us-east.insights.ssimwave.com:443 -> Good.
    insighs.ssimwave.com:443 -> Good.
    
    job.batch "check-insights-connectivity" deleted
    

    If you see failures in the connection attempts above, please make sure that your local network allows outbound access on port 443 to the addresses listed in the Installation Prerequisites. If your network requires use of a proxy, please consult the appropriate section below.

    HTTP Proxy
    Similarly, an HTTP proxy can be configured as follows:

    ssh ubuntu@<ssimplus-vod-monitor> "~/configureInsightsProxy.sh --http-proxy <IP>:<PORT>"
    

    If your HTTP proxy server requires credentials, you can add them as follows:

    ssh ubuntu@<ssimplus-vod-monitor> "~/configureInsightsProxy.sh --http-proxy <IP>:<PORT> --http-proxy-user <USER> --http-proxy-password <PASSWORD>"
    

    where <ssimplus-vod-monitor> is the IP address of your SSIMPLUS® VOD Monitor virtual machine instance (i.e. assigned by your network DHCP server if you’re using the bridged adapter or 192.168.122.2 if you’re using NAT).

    SOCKS Proxy
    If your network requires the use of a SOCKS5 or HTTP forward proxy in order to connect to external hosts, you can configure the SSIMPLUS® VOD Monitor virtual machine to use a SOCKS5 proxy server as follows:

    ssh ubuntu@<ssimplus-vod-monitor> "~/configureInsightsProxy.sh --socks5-proxy <IP>:<PORT>"
    

    If your SOCKS5 proxy server requires credentials, you can add them as follows:

    ssh ubuntu@<ssimplus-vod-monitor> "~/configureInsightsProxy.sh --socks5-proxy <IP>:<PORT> --socks5-proxy-user <USER> --socks5-proxy-password <PASSWORD>"
    

    where <ssimplus-vod-monitor> is the IP address of your SSIMPLUS® VOD Monitor virtual machine instance (i.e. assigned by your network DHCP server if you’re using the bridged adapter or 192.168.122.2 if you’re using NAT).

  8. Modify your VOD API Host setting in Insights.

    The VOD API Host value associated with your SSIMWAVE Insights account is used to redirect your browser to fetch frame images/maps when performing an in-depth inspection of a given result. For this functionality to work, you need to configure this value to match the local IP address associated with your SSIMPLUS® VOD Monitor virtual machine. If you used the bridged adapter above, then this local IP address will the one you recorded in step 5. If you are using NAT, the local IP address will be that of the host machine along with the 8443 port forward value (e.g. 172.31.68.50:8443). Be careful to not use the private IP 192.168.122.2 that was used in the steps above when executing various commands on the SSIMPLUS® VOD Monitor virtual machine from the host machie via SSH.

    1. From your machine (i.e. not the host machine for the VM), login to your Insights Account.
    2. Click on the user icon in the top right corner of the UI and pick Account from the dropdown menu.
    3. Scroll down to the Additional Details section and change your VOD Api Host value to match your virtual machine’s IP/FQDN.
    4. Click Save.

    Important

    Each user of the SSIMPLUS® VOD Monitor system will need to use the same value for their VOD API Host in their Insights account..

  9. Verify that your SSIMPLUS® VOD Monitor virtual machine is operational.

    To verify the system status, use your machine (i.e. not the host machine for the VM) to load the following URL: https://<ssimplus-vod-monitor>/status into a web browser, where <ssimplus-vod-monitor> is the IP address of your SSIMPLUS® VOD Monitor virtual machine. If you are using the bridged adapter, <ssimplus-vod-monitor> will be the IP assigned by your network DHCP server and recorded in step 5. If you are using NAT, <ssimplus-vod-monitor> will be the local IP address of your host machine along with the 8443 port forward value (e.g. 172.31.68.50:8443), which is the same value as you used in step 8 above.

    The page displayed is a system status page for all the SSIMPLUS® VOD Monitor services. At this point, all services should show as READY except for the following which will be NOT_READY, in addition to the final outcome:

    • FilebeatConfigurationService
    • InsightsClientService
    • InsightsKafkaService

    The services above are NOT_READY because they directly depend on a valid feature license, which we will upload in the next step.

    Important

    The system provides TLS through the use of self-signed certificates and, as such, your browser will likely flag the site as a potential security risk. Please tell your browser to accept the certificate and proceed to the site.

    Each user of the SSIMPLUS® VOD Monitor system will need to accept this certificate so please direct everyone to load https://<ssimplus-vod-monitor>/status into their browsers once.

    Note

    It takes several minutes for the virtual machine to initialize and load the SSIMPLUS® VOD Monitor system. During this time, you may not get a response from the https://<ssimplus-vod-monitor>/status URL or you may see 503 (Service Unavailable), 500 (Proxy Error) pages or 404 (Not Found); this is expected. Simply refresh your browser every 30s until you see the correct content.

  10. Upload your feature license.

    To finish the system configuration and address the services that are still NOT_READY, you must now apply your feature license. Using a browser on your machine (i.e. not the host machine for the VM), navigate to the Host page in your Insights account, where you will be presented with the information on your current host. Here you will see the following:

    • under Host information, your Insights Status and Insights API Status are both NOT CONNECTED,
    • your License information section will show ERROR and details will say that your are “Unable to connect to the license server” and
    • your System health section will show OFFLINE.

    Under the License information section, click on Upload license and pick the license file you received from your SSIMWAVE representative. Shortly after successfully loading the license, the Host page should refresh and your license should show as ACTIVE and your system health as ONLINE. If this is the case for you, feel free to jump to the next section Acessing Video Assets.

    Important

    It may take a minute for all the services to fully recognize the new license. If your system health reports OFFLINE even after uploading your license, click the Test host connection button in the Host information panel once every 10s until your system reports ONILNE. If your system health remains OFFLINE for more than a few minutes, you should expand the section to see the services that are not configured or responding as expected and reach out to your SSIMWAVE representative for help.

    If you’re interested, you can expand the System health section and click on Show all services to verify that the services that were previously OFFLINE (i.e. NOT_READY) in the step above are now ONLINE (i.e. READY). You can also revisit https://<ssimplus-vod-monitor>/status where all services and the final outcome should show as READY.

    Additionally, you can expand the License information section to verify that the details of your feature license match with your expectations.

Upgrading Versions (~ 30 mins)

Upgrading to a new version of the SSIMPLUS® VOD Monitor virtual machine is simply a matter of powering off your existing instance and installing the new one by repeating the Installation steps above for the new file.

  1. Power off your existing SSIMPLUS® VOD Monitor virtual machine.

    virsh shutdown "ssimplus-vod-monitor"
    

  2. Undefine and, optionally, remove your existing SSIMPLUS® VOD Monitor virtual machine.

    virsh undefine "ssimplus-vod-monitor" --remove-all-storage
    

    The --remove-all-storage switch is optional and will completely remove the QEMU image from your host system.

  3. Follow Installation instructions for your new SSIMPLUS® VOD Monitor virtual machine/QEMU, using the same choices as before.

Upgrading VM Hardware (~ 5 mins)

Allocating more CPU cores and/or memory to your SSIMPLUS® VOD Monitor virtual machine will allow you to process more analyses concurrently. To add hardware resources, simply power off your virtual machine, alter the CPU/RAM to the desired levels and restart.

  1. Power off your existing SSIMPLUS® VOD Monitor virtual machine.

    virsh shutdown "ssimplus-vod-monitor"
    

  2. Modify the CPU and/or RAM allocated to your SSIMPLUS® VOD Monitor virtual machine.

    virsh edit "ssimplus-vod-monitor"
    

    Use the editor to change your values for memory and vcpu.

  3. Start the SSIMPLUS® VOD Monitor virtual machine.

    virsh start "ssimplus-vod-monitor"
    

    Please wait 5 minutes for the virtual machine to successfully import and stand up all the services inside.

  4. At this point, your SSIMPLUS® VOD Monitor virtual machine should be up and running. Load the URL https://<ssimplus-vod-monitor>/status in your browser, where <ssimplus-vod-monitor> is the IP address or FQDN associated with the virtual machine, adjusting as necessary for any NAT port forwarding. Verify that all services and the final outcome at the bottom of the page show as READY.

    Note

    It takes several minutes for the virtual machine to initialize and load the SSIMPLUS® VOD Monitor system. During this time, you may not get a response from the https://<ssimplus-vod-monitor>/status URL or you may see 503 (Service Unavailable), 500 (Proxy Error) pages or 404 (Not Found); this is expected. Simply refresh your browser every 30s until you see the correct content.

Accessing Video Assets

As mentioned in the Installation Prerequisites, the SSIMPLUS® VOD Monitor virtual machine can access any video assets that are:

  1. mounted on the host machine in a folder that is then shared with SSIMPLUS® VOD Monitor virtual machine through the virtualization player,
  2. mountable as a Linux file system within the SSIMPLUS® VOD Monitor virtual machine (you can SSH into the instance and install drivers as needed),
  3. available via a Network File System (NFS),
  4. and/or available via AWS S3.

Shared Host Folders (OVA, VirtualBox only)

If you shared one or more folders on the host machine with the SSIMPLUS® VOD Monitor virtual machine using VirtualBox (see step 4 from Installation), each folder will be automatically mounted as a subfolder under /media and named according to the following pattern: sf_<share_name>, where sf stands for shared folder and <share_name> is the name you choose for your share. To access assets in these folders within SSIMPLUS® VOD Monitor, you will want to use the PVC storage type and the PVC name virtual-box-shares which will put you at the root of /media where you can then build the remainder of the path to your asset.

For example, if you shared the folder /mnt/videos from the host machine as videos using the following command:

vboxmanage sharedfolder "ssimplus-vod-monitor_2.21.0-25_09-07-2023_19-16" --name videos --hostpath /mnt/videos --readonly --automount

your assets would be mounted in virtual machine under /media/sf_videos and you would use the virtual-box-shares PVC along with the remainder of the path from the /media folder, as shown in the following JSON snippet:

{
    "name": "rocket_launch.mp4",
    "storageLocation": {
        "type": "PVC",
        "name": "virtual-box-shares"
    },
    "path": "sf_videos/royalty_free/rocket_launch/source"
}
Note

The JSON snippet above presupposes accessing the SSIMPLUS® VOD Monitor using the REST API. However, the approach and values above apply equally to the Insights VOD Monitor app from the Insights Web UI.

Mounted File System in Virtual Machine

The SSIMPLUS® VOD Monitor provides a PVC called local-media which can be used to access any folder in the virtual machine. As such, you can SSH into the virtual machine and mount any file system for which dirvers/support is available for Ubuntu 22.04. The local-media PVC is configured to resolve to the root of the virtual machien (i.e. /) and, as such, the paths you supply must be absolute, as demonstrated in the JSON snippet below:

{
    "name": "rocket_launch.mp4",
    "storageLocation": {
        "type": "PVC",
        "name": "local-media"
    },
    "path": "/media/sf_videos/royalty_free/rocket_launch/source"
}
Note

The JSON snippet above presupposes accessing the SSIMPLUS® VOD Monitor using the REST API. However, the approach and values above apply equally to the Insights VOD Monitor app from the Insights Web UI.

Important

Any mounted file system or folder in the virtual machine that you wish to access using the local-media PVC must support read-only access by the ubuntu user and group (i.e. uid=1000(ubuntu) gid=1000(ubuntu)).

NFS

Inside the SSIMPLUS® VOD Monitor virtual machine is a small script that facilitates mounting an existing NFS server and exported folder. From a CLI, you can execute the following:

ssh ubuntu@<ssimplus-vod-monitor> "~/loadNFS.sh -s <NFS_SERVER> -p <READ_ONLY_FOLDER> -n <PVC_NAME>"

where:

  • <ssimplus-vod-monitor> is the IP address/FQDN of your SSIMPLUS® VOD Monitor virtual machine instance (adjusting for any port forwarding that applies)
  • <NFS_SERVER> is the NFS server host/IP (e.g. nas.ssimwave.lan),
  • <READ_ONLY_FOLDER> is the read-only folder path (e.g. /Public) and
  • <PVC_NAME> is the prefix for the Kubernetes Persistent Volume Claim (PVC) name to use (e.g. video-files).
Important

The NFS folder path must be accessible without needing any specific user/group permissions and/or credentials.

Note

The SSIMPLUS® VOD Monitor virtual machine has SSH access using the following credentials user: ubuntu, password: ubuntu. Take care to adjust for any port forwarding or hostname changes, if applicable.

Before you run the command above, it is important to make sure that you have the exported NFS folder paths correctly specified and that they have been configured to allow access from the SSIMPLUS® VOD Monitor virtual machine. On your Linux host machine, you can run the following command to see the list of exported NFS folders (assuming you have NFS utils installed):

showmount -e <NFS_SERVER>
Export list for <NFS_SERVER>:
/mnt/temp_hdd3/videos 172.31.0.0/16

In the example above, /mnt/temp_hdd3/videos is the only exported folder path and it is available to any machine on the 172.31 network. Assuming that is correct for your environment (i.e. your SSIMPLUS® VOD Monitor virtual machine has an IP on the 172.31 network), then you would run the following command to create a PVC for the NFS mount:

ssh ubuntu@<ssimplus-vod-monitor> "~/loadNFS.sh -s <NFS_SERVER> -p /mnt/temp_hdd3/videos -n video-files"

NFS Example

Consider the following example:

ssh ubuntu@<ssimplus-vod-monitor> "~/loadNFS.sh -s nas.ssimwave.lan -p /Public -n video-files"

where <ssimplus-vod-monitor> is the IP address/FQDN of your SSIMPLUS® VOD Monitor virtual machine instance (adjusting for any port forwarding that applies).

The script creates a Kubernetes NFS persistent volume (PV) called video-files-pv, a corresponding persistent volume claim (PVC) called video-files-pvc and a temporary testing pod that mounts the associated PVC and lists the contents at the root to ensure that the configuration is correct.

If successful, you should output like the following:

Creating NFS PV, PVC and testing pod for /Public on nas.ssimwave.lan...
persistentvolume/video-files-pv created
persistentvolumeclaim/video-files-pvc created
pod/video-files-tester created

Checking for NFS PVC to be BOUND...
Checking for NFS tester pod to be RUNNING...
Checking for NFS tester pod to be RUNNING...

Mounted! Video files listing:

videoFolder1
videoFolder2
.
.
.

pod "video-files-tester" deleted

The name of the Kubernetes PVC (i.e. video-files-pvc) is important and you should take note of its name as it will be required when submitting analyses using assets from the folder. You can use the script above to mount as many NFS folders as you like so long as you take care to ensure that each one has a unique PVC name.

AWS S3

Inside the SSIMPLUS® VOD Monitor virtual machine is a small script that facilitates mounting an AWS S3 bucket. From a CLI, you can execute the following:

ssh ubuntu@<ssimplus-vod-monitor> "~/loadS3.sh -b <BUCKET_NAME> -k <ACCESS_KEY_ID> -a <ACCESS_KEY>"

where:

  • <ssimplus-vod-monitor> is the IP address/FQDN of your SSIMPLUS® VOD Monitor virtual machine instance (adjusting for any port forwarding that applies)
  • <BUCKET_NAME> is the AWS S3 bucket name, (e.g. ssimwave-video-assets),
  • <ACCESS_KEY_ID> is the access key id (e.g. AKIAIOSFODNN7EXAMPLE) and
  • <ACCESS_KEY> is the access key (e.g. wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY).
Note

The SSIMPLUS® VOD Monitor virtual machine has SSH access using the following credentials user: ubuntu, password: ubuntu. Take care to adjust for any port forwarding or hostname changes, if applicable.

The script creates an encrypted Kubernetes secret to store the S3 bucket credentials.

If successful, you should output like the following:

Creating Kubernetes secret for S3 access data to bucket ssimwave-video-assets...
secret/s3secret-ssimwave-video-assets created

You can use the script above to mount as many S3 buckets as you wish.

The name of the S3 bucket (i.e. ssimwave-video-assets) is important and you should take note of its name as it will be required when submitting analyses using assets from the bucket. After setting an S3 bucket using this script, you would access assets from that bucket as demonstrated in the JSON snippet below:

{
    "name": "rocket_launch.mp4",
    "storageLocation": {
        "type": "S3",
        "name": "ssimwave-video-assets"
    },
    "path": "/royalty_free/rocket_launch/source"
}
Important

You don’t need to specify credentials as part of the storageLocation above when using Kubernetes secrets to access the AWS S3 buckets. Translating this to the Insights VOD Monitor app in the Insights Web UI, however, requires you to pick Kubernetes Secret from the Credentials dropdown.

Next steps (~ 10 mins)

Once the SSIMPLUS® VOD Monitor virtual machine is running and you have mounted your video assets, you are ready to submit new analyses and inspect the results.

For new users or those that are most comfortable with a GUI, you are encouraged to use the Insights VOD Monitor app to submit a new analysis. This app allows you to submit any number of no-reference (NR) or full-reference (FR) analyses and inspect their results using the built-in Insights dashboards. Please look here, should you need some help using the UI.

Important

SSIMPLUS® VOD Monitor virtual machine provides TLS through the use of self-signed certificates. As a first step towards using the GUI, you need to direct your browser to accept the certificate. One way to do this is to load https://<ssimplus-vod-monitor>/status into your browser, where <ssimplus-vod-monitor> is the IP address/FQDN of your SSIMPLUS® VOD Monitor virtual machine instance (adjusting for any port forwarding that applies). Your browser will likely flag the site as a potential security risk. Please tell your browser to accept the certificate and proceed to the site.

Each user of the SSIMPLUS® VOD Monitor system will need to accept this certificate into their browsers once.

For those that would prefer to use the CLI, the following example uses cURL to submit a no-reference (NR) analysis for a video asset in NFS:

curl -kvi -X POST \
  https://<ssimplus-vod-monitor>/api/vod/v1/analyses \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "content": {
      "title": "Rocket Launch Analysis - NFS NR - Test"
    },
    "subjectAssets": [
        {
            "name": "rocket_launch.mp4",
            "storageLocation": {
                "type": "PVC",
                "name": "video-files-pvc"
            },
            "path": "videos/royalty_free/rocket_launch/source"
        }
    ],
    "analyzerConfig": {
      "enableBandingDetection": true
    }
}'
Note

Take care to adjust the URL used in the example above for any port forwarding or hostname changes, if applicable.

Once you have successfully deployed and verfied that your SSIMPLUS® VOD Monitor virtual machine is working, you are strongly encouraged to read Using SSIMPLUS VOD Monitor where you will be provided with a more detailed overview of the SSIMPLUS® VOD Monitor system and given specific steps for further product education.

Troubleshooting and Support

If you encounter trouble or have any questions about installing/launching your SSIMPLUS® VOD Monitor virtual machine, please create a support ticket by using the SSIMWAVE Help Center or feel free to reach out to your SSIMWAVE representative directly.

Enabling the Kubernetes Dashboard

For trial/lab deployments of SSIMPLUS® VOD Monitor in a virtual machine, you can optionally (and temporarily) enable the Kubernetes Dashboard. The dashboard provides a Web UI for interacting with Kubernetes which can be especially useful in troubleshooting sessions with SSIMWAVE support. To enable the Kubernetes Dashboard, please follow the steps below:

  1. Deploy and configure the Kubernetes Dashboard

    From a CLI, run the following command:

    ssh ubuntu@<ssimplus-vod-monitor> "~/startKubernetesDashboard.sh"
    
    Important

    The SSIMPLUS® VOD Monitor virtual machine provides SSH access using the following credentials user: ubuntu, password: ubuntu. If you are using Network Address Translation (NAT) to access your SSIMPLUS® VOD Monitor, take care to add the SSH forwarding port to the command above.

    You should see output similar to the following:

    Starting and configuring the Kubernetes Dashboard...
    namespace/kubernetes-dashboard created
    serviceaccount/kubernetes-dashboard created
    service/kubernetes-dashboard created
    secret/kubernetes-dashboard-certs created
    secret/kubernetes-dashboard-csrf created
    secret/kubernetes-dashboard-key-holder created
    configmap/kubernetes-dashboard-settings created
    role.rbac.authorization.k8s.io/kubernetes-dashboard created
    clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
    rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
    clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
    deployment.apps/kubernetes-dashboard created
    service/dashboard-metrics-scraper created
    deployment.apps/dashboard-metrics-scraper created
    secret "kubernetes-dashboard-certs" deleted
    secret/kubernetes-dashboard-certs created
    deployment.apps/kubernetes-dashboard patched
    clusterrolebinding.rbac.authorization.k8s.io "kubernetes-dashboard" deleted
    
    Deploying Kubernetes Dashboard ingress and cluster-admin role binding...
    clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
    ingress.networking.k8s.io/dashboard-ingress created
    
    Creating Kubernetes Dashboard token...
    secret/kubernetes-dashboard-token created
    
    Kubernetes Dashboard login token:
    yJhbGciOiJSUzI1NiIsImtpZCI6ImdDaldoR3E4bEowN1JmOGpwM0FLQ2pDVjhJMGNNMGxVRlpiMnlZcjVuNHcifQ.eyJpc3MiOi
    JrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm
    5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2
    hib2FyZC10b2tlbi02YzJnYyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdW
    Jlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjU2Mj
    X2SQBwGnXaRap89koCipxAJarjYZRCJyOLEbXhdzf-6oHxLySXX3S5FwRvzaAbFyE5wdhweYJaHsrhwQ
    
    Finished!
    

  2. Login to the Kubernetes Dashboard using the login token.

    At this point, your Kubernetes Dashboard should be accessible from a browser at the URL: https://<ssimplus-vod-monitor>/dashboard

    Important

    If you are using Network Address Translation (NAT) to access your SSIMPLUS® VOD Monitor, take care to add the HTTPS/443 forwarding port to the URL above.

    Use the Kubernetes Dashboard login token in the command output from the step above to log in to the Kubernetes Dashboard.

Disabling the Kubernetes Dashboard

Although access to the Kubernetes Dashboard is secured through the use of a private token, it is generally recommended that, after you have completed your troubleshooting effort, you should disable the Kubernetes Dashboard by removing it from the deployment.

From a CLI run the following command:

ssh ubuntu@<ssimplus-vod-monitor> "~/stopKubernetesDashboard.sh"
Important

The SSIMPLUS® VOD Monitor virtual machine provides SSH access using the following credentials user: ubuntu, password: ubuntu. If you are using Network Address Translation (NAT) to access your SSIMPLUS® VOD Monitor, take care to add the SSH forwarding port to the command above.

You should see output similar to the following:

Stopping the Kubernetes Dashboard...
namespace "kubernetes-dashboard" deleted
serviceaccount "kubernetes-dashboard" deleted
service "kubernetes-dashboard" deleted
secret "kubernetes-dashboard-certs" deleted
secret "kubernetes-dashboard-csrf" deleted
secret "kubernetes-dashboard-key-holder" deleted
configmap "kubernetes-dashboard-settings" deleted
role.rbac.authorization.k8s.io "kubernetes-dashboard" deleted
clusterrole.rbac.authorization.k8s.io "kubernetes-dashboard" deleted
rolebinding.rbac.authorization.k8s.io "kubernetes-dashboard" deleted
clusterrolebinding.rbac.authorization.k8s.io "kubernetes-dashboard" deleted
deployment.apps "kubernetes-dashboard" deleted
service "dashboard-metrics-scraper" deleted
deployment.apps "dashboard-metrics-scraper" deleted

Removing Kubernetes Dashboard ingress and cluster-admin role binding...

Finished!
Alternative/Custom Deployments

These deployments are reserved for customers that have custom or restrictive deployment needs that do not align with the preferred AWS, virtual machine or Kubernetes-based deployment models described herein.

SSIMPLUS® Analyzer - Docker Image

For custom deployments or on-prem testing/trialing of SSIMPLUS® VOD Monitor, SSIMWAVE makes available a Docker image of the SSIMPLUS® Analyzer. Besides requiring the Docker runtime, there is no other software that needs to be installed. To be clear, this deployment model provides no additional means of starting the SSIMPLUS® Analyzer beyond the command line execution of the Docker runtime (i.e. no SSIMPLUS® Analyzer REST API) and, as such, any integration into a broader workflow or production system would likely require you to write a significant amount of integration code.

Note

In this deployment model, each SSIMPLUS® Analyzer container executes a single full-reference or no-reference analysis. The hardware resources required to support a container depend on the complexity of the analysis, which, in turn, is largely dependent on the properties of the video assets (i.e. resolution, bitrate, etc.). Please contact your SSIMWAVE representative for more details on the hardware resources (RAM, CPU etc.) required to host multiple concurrently executing SSIMPLUS® Analyzer containers.

Installation Prerequisites
  1. From your SSIMWAVE representative, you should receive or request the following items:

    1. VOD Production features license file (features.lic) containing values for the following, according to your purchase agreement:

      • Alphanumeric license verification key
      • Audio loudness measurements
      • Banding detection scoring
      • Frame and map (banding, quality, color volume difference) generation
      • Color gamut and stats generation
      • Color volume difference map generation
      • Content complexity scoring
      • Expiration date (the day on which your license expires)
      • Frame level scoring
      • HDR10 & Dolby Vision support
      • Video, audio and quality check options
      • Insights data streaming credentials
      • Insights REST API (system-level) credentials
      • Insights customer organization and site names

    2. Google Cloud Repository (GCR) service account JSON key file providing temporary access to SSIMWAVE’s gcr.io/ssimwave-vodmonitor repository.

  2. Your target machine is using a 64-bit Linux operating system.

    Please ensure that your host machine has installed the following common networking and filesystem packages:

    • openssh-server
    • nfs-common
    • nfs-utils
    • net-tools

  3. Your target machine has the Docker engine installed.

  4. The machine you are using to deploy/install has HTTPS (port 443) access to SSIMWAVE’S Google Cloud Repository (GCR) at the following location:

    • Docker registry: gcr.io/ssimwave-vodmonitor

  5. Your local network must allow outbound internet access on port 443 to the following hosts:

    Note

    If your installation machine is required to use a SOCKS5 or HTTP forward proxy to reach the IP addresses listed above, you must install and use the Insights Proxy.

  6. (Optional) Deploy the Insights Proxy.

  7. Read about SSIMWAVE’s Insights data platform and create an account to access results.

Installation (~ 10 mins)
  1. From a Linux CLI, use docker to log in to SSIMWAVE’S Google Container Registry (GCR):
    cat <keyfile.json> | docker login -u _json_key --password-stdin https://gcr.io
    Where <keyfile.json> is the SSIMWAVE GCR service account JSON key file you received as part of the Installation Prerequisites..

    Note

    If you are using gcloud and your docker is configured to use credential helpers for gcr.io, you will likely need to execute the following command:
    gcloud auth activate-service-account --key-file=<keyfile.json>

  2. Pull the SSIMPLUS® Analyzer image to your local Docker repository:
    docker pull gcr.io/ssimwave-vodmonitor/analyzer:MAJOR.MINOR.PATCH-BUILD
    where MAJOR, MINOR, PATCH and BUILD represent the major, minor, patch and build numbers of the desired build. Now use docker tag and docker push to register this image in your on-prem Docker registry.

  3. Save the features.lic features license file, distributed to you by SSIMWAVE, to your local storage (i.e. /ssimwave/features.lic).

  4. (Insights Proxy only) Create an analyzer config.json file (i.e. /ssimwave/config.json) to include the IP address and port of your Insights Proxy as follows:

        {
            "insights_proxy": "<insights_proxy_address>:<insights_proxy_port>"
        }
    

    If you did not change/customize the ports on your proxy, then the value to use for your <insights_proxy_port> above will be 9800. The system will automatically discover and use the rest of the ports (i.e. 9801-9804).

  5. (Optional) SSIMPLUS® Analyzer is capable of producing device-adaptive scores for a multitude of devices. To select the devices you wish to use, create/edit your analyzer’s config.json file and change the devices list as follows:

        {
            "devices": [
                "ipad2017",
                "xl2420t",
                "macbookpro",
                "iphonex",
                "oled65c9pua"
            ],
            "licenseServer": "<ssimwave_customer_license_server>",
            .
            .
            .
        }
    
    Note

    The example shown above uses commonly chosen devices that represent one device per category (i.e. tablet, monitor, laptop, smartphone, TV) and should be appropriate for most customers. For details on all supported devices and their respective codes, please see the Scoring Devices section under SSIMPLUS® Analyzer Configuration. As of v2.11.0, you can choose devices on a per-analysis basis by supplying them in the request body.

  6. Mount the file shares that host the video assets you wish to make available to the SSIMPLUS® Analyzer (see Mounting Network Drives)

Running SSIMPLUS® Analyzer Docker Image

Starting a new analysis is done by running the SSIMPLUS® Analyzer image using the docker program, which creates a SSIMPLUS® Analyzer container. In order to successfully run the Analyzer image, you will need to mount the following 3 things:

  1. config.json (mounted to /opt/ssimwave/vodmonitor/etc),
  2. features.lic (mounted to /opt/ssimwave/vodmonitor/etc),
  3. video asset folders (mounted anywhere you want).

Docker lets you mount files and folders using the --mount argument.

Note

In the docker command examples below, the SSIMPLUS® Docker image is referenced using the tag for the 2.21.0-25 release. You should replace this tag with the one for the release you have purchased.

Please consult the SSIMPLUS® Analyzer Configuration section for details on how to configure the SSIMPLUS® Analyzer when using the Docker image.

Executing a Full-Reference Analysis

In the example below, we start a SSIMPLUS® Analyzer v2.21.0-25 container in full-reference mode, configured using /opt/ssimwave/vodmonitor/etc/config.json, licensed using /opt/ssimwave/vodmonitor/etc/features.lic and passing a reference and subject asset from the mounted folder /videos:

docker run --rm \
  --mount src=/ssimwave/config.json,target=/opt/ssimwave/vodmonitor/etc/config.json,type=bind \
  --mount src=/ssimwave/features.lic,target=/opt/ssimwave/vodmonitor/etc/features.lic,type=bind \
  --mount src=/mnt/NAS/videos,target=/videos,type=bind \
  gcr.io/ssimwave-vodmonitor/analyzer:2.21.0-25 \
  --content-metadata "{\"title\": \"Content title goes here\"}" \
  --temporal-alignment 1 \
  --ref-video /videos/ref.mp4 --test-video /videos/test.mp4
  • mounts /ssimwave/config.json to /opt/ssimwave/vodmonitor/etc/config.json
  • mounts /ssimwave/features.lic to /opt/ssimwave/vodmonitor/etc/features.lic
  • mounts the video folder /mnt/NAS/videos/ to /videos

Executing a No-Reference Analysis

To run a no-reference analysis, we simply omit the --ref-video option, as shown below:

docker run --rm \
  --mount src=/ssimwave/config.json,target=/opt/ssimwave/vodmonitor/etc/config.json,type=bind \
  --mount src=/ssimwave/features.lic,target=/opt/ssimwave/vodmonitor/etc/features.lic,type=bind \
  --mount src=/mnt/NAS/videos,target=/videos,type=bind \
  gcr.io/ssimwave-vodmonitor/analyzer:2.21.0-25 \
  --content-metadata "{\"title\": \"Content title goes here\"}" \
  --test-video /videos/test.mp4
Note

Each SSIMPLUS® Analyzer container can execute only one analysis, whether that analysis be a full-reference comparison between a reference and subject asset or a no-reference analysis of a single asset.

Specifying a Custom Analysis UUID

In the examples above, we are relying on the SSIMPLUS® Analyzer to automatically generate a UUID to associate with the analysis. Optionally, you may find it more useful to generate the UUID in advance and pass this to the Analyzer container via a command line argument. In this manner, the caller/integrator can immediately use the UUID for other activities in their workflow, such as to fetch the current status of the analysis from Insights. To use your own generated UUID, you can use the Linux uuidgen command (or a compatible equivalent) to generate a UUID, save it to an environment variable and pass that variable to the SSIMPLUS® Analyzer as follows:

ANALYSIS_ID=$(uuidgen)
docker run --rm \
  --mount src=/ssimwave/config.json,target=/opt/ssimwave/vodmonitor/etc/config.json,type=bind \
  --mount src=/ssimwave/features.lic,target=/opt/ssimwave/vodmonitor/etc/features.lic,type=bind \
  --mount src=/mnt/NAS/videos/,target=/videos,type=bind \
  gcr.io/ssimwave-vodmonitor/analyzer:2.21.0-25 \
  --id ${ANALYSIS_ID} \
  --content-metadata "{\"title\": \"Content title goes here\"}" \
  --temporal-alignment 1 \
  --ref-video /videos/ref.mp4 --test-video /videos/test.mp4

Using Raw Video Assets

If your reference and/or test asset is in YUV or raw format, you must use the --ref-raw-params and/or --test-raw-params to send the required raw video parameters through to the SSIMPLUS® Analyzer, as shown below:

ANALYSIS_ID=$(uuidgen)
docker run --rm \
  --mount src=/ssimwave/config.json,target=/opt/ssimwave/vodmonitor/etc/config.json,type=bind \
  --mount src=/ssimwave/features.lic,target=/opt/ssimwave/vodmonitor/etc/features.lic,type=bind \
  --mount src=/mnt/NAS/videos,target=/videos,type=bind \
  gcr.io/ssimwave-vodmonitor/analyzer:2.21.0-25 \
  --id ${ANALYSIS_ID} \
  --content-metadata "{\"title\": \"Content title goes here\"}" \
  --temporal-alignment 1 \
  --ref-video /videos/ref.yuv \ 
  --ref-raw-params '{"width": 1920, "height": 1080, "fps": 24, "pixel_format": "yuv420p"}' \ 
  --test-video /videos/test.mp4

The SSIMPLUS® Analyzer supports the following raw video parameters:

Parameter Valid Values Type Default Required
width 88-8192 int None (required) Yes
height 88-6144 int None (required) Yes
fps 1-120 float 25.0 No
scan_type i, p string p (progressive) No
field_order tff, bff string tff No
pixel_format yuv420p, yuv422p, yuv444p, yuv420p10, yuv422p10, yuv444p10, yuv420p12, yuv422p12, yuv444p12, rgb24, rgb48, bgr24, bgr48, rgb555, rgb565, bgr555, bgr565 string yuv420p No
Warning

Raw video assets must have the file extension of .yuv, .rgb or .bgr.

Using HDR10 Assets

If your reference and/or test asset contains HDR10 content, you must use the --hdr option to when running the SSIMPLUS® Analyzer, as shown below:

ANALYSIS_ID=$(uuidgen)
docker run --rm \
  --mount src=/ssimwave/config.json,target=/opt/ssimwave/vodmonitor/etc/config.json,type=bind \
  --mount src=/ssimwave/features.lic,target=/opt/ssimwave/vodmonitor/etc/features.lic,type=bind \
  --mount src=/mnt/NAS/videos/,target=/videos,type=bind \
  gcr.io/ssimwave-vodmonitor/analyzer:2.21.0-25 \
  --id ${ANALYSIS_ID} \
  --content-metadata "{\"title\": \"Content title goes here\"}" \
  --temporal-alignment 1 \
  --hdr \
  --ref-video /videos/ref.mp4 --test-video /videos/test.mp4
Note

HDR10 support is a licensed feature of SSIMPLUS® VOD Monitor. Customers are encouraged to contact their SSIMWAVE representative for details on how to enable this feature.

Using Region Of Interest

If your reference and/or test asset frames have areas you wish exclude when scoring, you can use the region of interest to instruct the analyzer to consider only a specific rectangular region. The region of interest is specified in pixels, using screen coordinates, where the origin (0,0) is the top left corner of the frame. Consider the example below where both the reference and test are adjusted with a region of interest:

ANALYSIS_ID=$(uuidgen)
docker run --rm \
  --mount src=/ssimwave/config.json,target=/opt/ssimwave/vodmonitor/etc/config.json,type=bind \
  --mount src=/ssimwave/features.lic,target=/opt/ssimwave/vodmonitor/etc/features.lic,type=bind \
  --mount src=/mnt/NAS/videos/,target=/videos,type=bind \
  gcr.io/ssimwave-vodmonitor/analyzer:2.21.0-25 \
  --id ${ANALYSIS_ID} \
  --content-metadata "{\"title\": \"Content title goes here\"}" \
  --temporal-alignment 1 \
  --ref-video /videos/ref.mp4 --test-video /videos/test.mp4 \
  --ref-roi 20:0:400:300 --test-roi 20:0:400:300

The example above puts the origin of the region of interest at (20, 0) and the area extends to cover a rectangular area of 400x300 pixels.

Capturing SSIMPLUS® Content Complexity Scores (CCS)

To run a no-reference analysis and to capture context complexity scores, you would add the --content-complexity switch as shown below:

ANALYSIS_ID=$(uuidgen)
docker run --rm \
  --mount src=/ssimwave/config.json,target=/opt/ssimwave/vodmonitor/etc/config.json,type=bind \
  --mount src=/ssimwave/features.lic,target=/opt/ssimwave/vodmonitor/etc/features.lic,type=bind \
  --mount src=/mnt/NAS/videos/,target=/videos,type=bind \
  gcr.io/ssimwave-vodmonitor/analyzer:2.21.0-25 \
  --id ${ANALYSIS_ID} \
  --content-metadata "{\"title\": \"Content title goes here\"}" \
  --content-complexity \
  --test-video /videos/test.mp4
Note

Content complexity is a licensed feature of SSIMPLUS® VOD Monitor. Customers are encouraged to contact their SSIMWAVE representative for details on how to enable this feature.

Capturing SSIMPLUS® Banding Scores (SBS)

To run a full-reference analysis and detect the level of color banding, you would add the --banding switch as shown below:

ANALYSIS_ID=$(uuidgen)
docker run --rm \
  --mount src=/ssimwave/config.json,target=/opt/ssimwave/vodmonitor/etc/config.json,type=bind \
  --mount src=/ssimwave/features.lic,target=/opt/ssimwave/vodmonitor/etc/features.lic,type=bind \
  --mount src=/mnt/NAS/videos/,target=/videos,type=bind \
  gcr.io/ssimwave-vodmonitor/analyzer:2.21.0-25 \
  --id ${ANALYSIS_ID} \
  --content-metadata "{\"title\": \"Content title goes here\"}" \
  --temporal-alignment 1 \
  --banding \
  --ref-video /videos/ref.mp4 --test-video /videos/test.mp4

Color banding can equally be run for no-reference analyses.

Note

Color banding detection is a licensed feature of SSIMPLUS® VOD Monitor. Customers are encouraged to contact their SSIMWAVE representative for details on how to enable this feature.

Executing Video, Audio and Closed Captions Quality Checks

By default, the SSIMPLUS® Analyzer will perform all the quality checks that your feature license allows for each full-reference and no-reference analysis, using the default configuration values described here. To turn off a given quality check or otherwise configure how it runs, you will want to modify the contents of your Analyzer’s config.json, as described here in the Quality Checks section under SSIMPLUS® Analyzer Configuration.

Note

Video and audio quality checks are licensed features of SSIMPLUS® VOD Monitor. Customers are encouraged to contact their SSIMWAVE representative for details on how to enable these features.

Checking Status of an Analysis

To check the status (including the real-time progress) of any submitted analysis, please follow the instructions here under the Insights Platform section.

Responses and return codes

Upon successful execution, the SSIMPLUS® Analyzer container will:

  • exit with return code 0
  • write the execution results in a JSON document to stdout

Upon faliure, the SSIMPLUS® Analyzer container will:

  • exit with non-zero return code
  • write error and logging information in a JSON document to stderr

You can separate stdout from stderr using redirects. In the example below, successful results will be written to analysis.json and errors to error.log:

ANALYSIS_ID=$(uuidgen)
docker run --rm \
  --mount src=/ssimwave/config.json,target=/opt/ssimwave/vodmonitor/etc/config.json,type=bind \
  --mount src=/mnt/NAS/videos/,target=/videos,type=bind \
  gcr.io/ssimwave-vodmonitor/analyzer:2.21.0-25 --temporal-alignment 1 \
  --ref-video /videos/ref.mp4 --test-video /videos/test.mp4 \
  --id ${ANALYSIS_ID} 1> analysis.json 2> error.log

Here is the an example of a JSON document written upon successful execution:

{
    "org": "SSIMWAVE",
    "ste": "VOD Testing",
    "analysisId": "9da571b6-2909-4c7f-8e5f-3fb59c1dc756",
    "tId": 1,
    "rId": 1,
    "startTs": 1596569864593,
    "exitCode": 0
}

The analysisId is the UUID for the analysis and is required in order to work with the results stored in the Insights data platform.

Note

Since a SSIMPLUS® Analyzer container can execute only 1 analysis, fetching the results from Insights for an entire encoding ladder, for example, would require retrieving the results for each separate analysis UUID (i.e. each reference-subject pair). Collecting these individual UUIDs, reporting them to the end user and/or simplifying their retrieval as a group is the responsibility of the deployer.

If the SSIMPLUS® Analyzer encounters an error before it has started reporting status updates to Insights, the format of the error will be as follows:

{
    "exitCode": 2,
    "description": "the option '--test-video' is required but missing"
}

If an error occurs after reporting the first status update, the format of the error will be as follows:

{
    "org": "SSIMWAVE",
    "ste": "VOD Testing",
    "analysisId": "9da571b6-2909-4c7f-8e5f-3fb59c1dc756",
    "tId": 1,
    "startTs": 1596569864593,
    "exitCode": 1,
    "description": "Cannot open 'does_not_exit.mp4'. No such file or directory"
}

If the SSIMPLUS® Analyzer encounters a fatal error signal (i.e. segfault, out of memory, etc.), the container will exit with a return code in the 129-192 range. In this case, there may or may not be debugging information written to stderr. See Fatal system errors for more details.

Next steps

Once you have successfully deployed the SSIMPLUS® Analyzer Cluster, you are strongly encouraged to read and consult the Insights data platform sections as they contain crucial details on how to extract meaningful data from your asset analyses.

Mapping Network Drives

Any network file system that you can mount as a Linux drive should be usable by the SSIMPLUS® Analyzer container. The Analyzer requires read and execute permissions on all (sub)directories containing video assets for analysis as well as read permission for OWNER, GROUP and OTHER on all reference and subject assets. Below are some examples of how to mount common network drives.

Finding UID and GID

Mounting drives so the current user has read/write access requires knowing the user’s UID and GID. You can determine it using the Linux id command.

You can find the UID/GUID of the current user by running:

$ id
uid=0(root) gid=0(root) groups=0(root)

You can find the UID/GUID of another user by running id <username> example:

$ id ssimwave
uid=997(ssimwave) gid=995(ssimwave) groups=995(ssimwave)
Mapping an S3 bucket (using s3fs-fuse)

The example below shows how to mount an Amazon S3 bucket to /mnt/s3 from a shell. Please ensure your S3 bucket has the correct permissions for read/write access.

  1. Add your AWS credentials to /etc/passwd-s3fs. Run the command below, substituting AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY for your AWS credentials.
    $ sudo su
    $ echo AWS_ACCESS_KEY_ID:AWS_SECRET_ACCESS_KEY | tee /etc/passwd-s3fs
    $ chmod 600 /etc/passwd-s3fs
    

  2. Mount the S3 bucket. Run the command below, substituting SSIMWAVE_GID and SSIMWAVE_UID for the ssimwave user’s UID/GID (see here for UID/GID)
    $ mkdir -p /mnt/s3
    $ /usr/bin/s3fs S3_BUCKET_NAME /mnt/s3 -o \ 
    passwd_file=/etc/passwd-s3fs,allow_other,gid=SSIMWAVE_GID,uid=SSIMWAVE_UID
    
Mapping a Windows Share (using samba/cifs)

The example below shows how to mount a Windows network share to /mnt/NAS from a shell. This may not work for all Windows shares as some have different security requirements.

  1. Add your Windows share credentials to a .cifs file in your home directory. Run the command below, substituting USER and PASSWORD for your Windows share credentials.
    $ echo "username=USER
    $ password=PASSWORD" > ~/.cifs
    

  2. Create the directory to use as your mount point
    $ sudo mkdir -p /mnt/NAS
    

  3. Add your network drive mount to /etc/fstab
    //SHARE_IP/SHARE_NAME /mnt/NAS cifs credentials=/home/user/.cifs,gid=GID,uid=UID
    
    where
    • GID and UID are the ssimwave user’s UID/GID (see here)
    • SHARE_IP is the IP address of the Windows share
    • SHARE_NAME is the name of the Windows share
    • /home/user/.cifs is the full path to the cifs credential file you created above

  4. Mount the drive
    $ sudo mount -a
    
Fatal system errors
Code Description
SIG_HUP = 129 Exit due to HUP(1) signal.
SIG_INT = 130 Exit due to SIGINT(2) signal.
SIG_QUIT = 131 Exit due to SIGQUIT(3) signal.
SIG_ILL = 132 Exit due to SIGILL(4) signal.
SIG_TRAP = 133 Exit due to SIGTRAP(5) signal.
SIG_ABRT = 134 Exit due to SIGABRT(6) signal.
SIG_BUS = 135 Exit due to SIGBUS(7) signal.
SIG_FPE = 136 Exit due to SIGFPE(8) signal.
SIG_KILL = 137 Exit due to SIGKILL(9) signal.
SIG_USR1 = 138 Exit due to SIGUSR1(10) signal.
SIG_SEGV = 139 Exit due to SIGSEGV(11) signal.
SIG_USR2 = 140 Exit due to SIGUSR2(12) signal.
SIG_PIPE = 141 Exit due to SIGPIPE(13) signal.
SIG_ALRM = 142 Exit due to SIGALRM(14) signal.
SIG_TERM = 143 Exit due to SIGTERM(15) signal.
SIG_STKLFT = 144 Exit due to SIGSTKLFT(16) signal.
SIG_CHLD = 145 Exit due to SIGCHLD(17) signal.
SIG_CONT = 146 Exit due to SIGCONT(18) signal.
SIG_STOP = 147 Exit due to SIGSTOP(19) signal.
SIG_TSTP = 148 Exit due to SIGTSTP(20) signal.
SIG_TTIN = 149 Exit due to SIGTTIN(21) signal.
SIG_TTOU = 150 Exit due to SIGTTOU(22) signal.
SIG_URG = 151 Exit due to SIGURG(23) signal.
SIG_XCPU = 152 Exit due to SIGXCPU(24) signal.
SIG_XFSZ = 153 Exit due to SIGXFSZ(25) signal.
SIG_VTALRM = 154 Exit due to SIGVTALRM(26) signal.
SIG_PROF = 155 Exit due to SIGPROF(27) signal.
SIG_WINCH = 156 Exit due to SIGWINCH(28) signal.
SIG_IO = 157 Exit due to SIGIO(29) signal.
SIG_PWR = 158 Exit due to SIGPWR(30) signal.
SIG_SYS = 159 Exit due to SIGSYS(31) signal.
SIGNAL_32 = 160 Exit due to SIGNAL_32(32) signal.
SIGNAL_33 = 161 Exit due to SIGNAL_33(33) signal.
SIG_RT_1 = 162 Exit due to SIGRT_1(34) signal.
SIG_RT_2 = 163 Exit due to SIGRT_2(35) signal.
SIG_RT_3 = 164 Exit due to SIGRT_3(36) signal.
SIG_RT_4 = 165 Exit due to SIGRT_4(37) signal.
SIG_RT_5 = 166 Exit due to SIGRT_5(38) signal.
SIG_RT_6 = 167 Exit due to SIGRT_6(39) signal.
SIG_RT_7 = 168 Exit due to SIGRT_7(40) signal.
SIG_RT_8 = 169 Exit due to SIGRT_8(41) signal.
SIG_RT_9 = 170 Exit due to SIGRT_9(42) signal.
SIG_RT_10 = 171 Exit due to SIGRT_10(43) signal.
SIG_RT_11 = 172 Exit due to SIGRT_11(44) signal.
SIG_RT_12 = 173 Exit due to SIGRT_12(45) signal.
SIG_RT_13 = 174 Exit due to SIGRT_13(46) signal.
SIG_RT_14 = 175 Exit due to SIGRT_14(47) signal.
SIG_RT_15 = 176 Exit due to SIGRT_15(48) signal.
SIG_RT_16 = 177 Exit due to SIGRT_16(49) signal.
SIG_RT_17 = 178 Exit due to SIGRT_17(50) signal.
SIG_RT_18 = 179 Exit due to SIGRT_18(51) signal.
SIG_RT_19 = 180 Exit due to SIGRT_19(52) signal.
SIG_RT_20 = 181 Exit due to SIGRT_20(53) signal.
SIG_RT_21 = 182 Exit due to SIGRT_21(54) signal.
SIG_RT_22 = 183 Exit due to SIGRT_22(55) signal.
SIG_RT_23 = 184 Exit due to SIGRT_23(56) signal.
SIG_RT_24 = 185 Exit due to SIGRT_24(57) signal.
SIG_RT_25 = 186 Exit due to SIGRT_25(58) signal.
SIG_RT_26 = 187 Exit due to SIGRT_26(59) signal.
SIG_RT_27 = 188 Exit due to SIGRT_27(60) signal.
SIG_RT_28 = 189 Exit due to SIGRT_28(61) signal.
SIG_RT_29 = 190 Exit due to SIGRT_29(62) signal.
SIG_RT_30 = 191 Exit due to SIGRT_30(63) signal.
SIG_RT_31 = 192 Exit due to SIGRT_31(64) signal.
SSIMWAVE Insights Proxy

The SSIMWAVE Insights Proxy is a service intended to allow secure (i.e. encrypted) outbound communication between the SSIMPLUS® Analyzer and SSIMWAVE’s Insights cloud-based data platform. The proxy is only required in environments where the SSIMPLUS® Analyzer does not have direct outbound access to the internet on port 443 and, instead, must use a SOCKS5 or HTTP forward proxy. In these cases, the SSIMPLUS® Analyzer Cluster is configured to stream frame scores and metrics in plain text to the Insights Proxy where the packets are encrypted and forwarded to the Insights data platform.

Important

You are required to deploy the SSIMWAVE Insights Proxy only if you are following the SSIMPLUS® Analyzer - Docker Image deployment model AND you need to go through an HTTP(S)/SOCKS5 proxy. For the AWS/EKS deployment models (i.e. SSIMPLUS® Analyzer Cluster - VPC/EKS, SSIMPLUS® Analyzer Cluster - AWS Managed Service and SSIMPLUS® Analyzer Cluster - AMI), the SSIMWAVE Insights Proxy is not needed. For all other deployment models (i.e. VPC on baremetal, Virtual Machine - OVA/QEMU), the SSIMWAVE Insights Proxy is built-in and used only as needed (consult the appropriate deployment guides for details).

Installation Prerequisites
  1. From your SSIMWAVE representative, you should receive or request the following account information:
    • Insights publisher username and password (Insights SASL/SCRAM credentials)
    • Google Cloud Repository (GCR) service account JSON key file providing access to SSIMWAVE’s repository gcr.io/ssimwave-insights

  2. The Insights Proxy is distributed as a Docker container and, as such, Docker v18.09.7+ is required to be present on the target installation machine.

  3. Target installation machine must have:
    • 4 cores/VCPUs
    • 8GB of RAM
    • 1G free disk space

  4. Ports 9800 - 9804 should be open to the internal (i.e. on-premise) network.

  5. Outbound/Internet access to the Insights cloud-based data platform on port 443 at the following hosts:
    Note

    The Insights Proxy supports using SOCKS5 and HTTP forward proxies, if required. Please see the Installation section for configuration details.

Note

The Insights Proxy is also available as an RPM. Please contact your SSIMWAVE representative for more details.

Installation (~ 5 mins)
  1. From a Linux CLI, log in to Google Container Registry (GCR):
    cat <keyfile.json> | docker login -u _json_key --password-stdin https://gcr.io
    Where <keyfile.json> is the SSIMWAVE GCR service account JSON key file you received as part of the Installation Prerequisites..

    Note

    If you are using gcloud and your docker is configured to use credential helpers for gcr.io, you will likely need to execute the following command:
    gcloud auth activate-service-account --key-file=<keyfile.json>

  2. Pull the Insights Proxy image to your local Docker repository:
    docker pull gcr.io/ssimwave-insights/proxy:MAJOR.MINOR.PATCH-BUILD
    where MAJOR, MINOR, PATCH and BUILD represent the major, minor, patch and build numbers of the desired build. Please see your SSIMWAVE representative for the appropriate build.

  3. Start the proxy by running the Docker image as follows:

    docker run --rm -p 9800:9800 -p 9801:9801 -p 9802:9802 -p 9803:9803 -p 9804:9804 \
    -e USERNAME=<insights_platform_publisher_username> \
    -e PASSWORD=<insights_platform_publisher_password> \
    -e INTERNAL_PROXY_IP=<host_ip> \
    -e SOCKS5_PROXY=<socks5_proxy_ip> \
    -e SOCKS5_PROXY_USER=<socks5_proxy_user> \
    -e SOCKS5_PROXY_PASSWORD=<socks5_proxy_password> \
    -e HTTP_PROXY=<http_proxy_ip> \
    -e HTTP_PROXY_USER=<http_proxy_user> \
    -e HTTP_PROXY_PASSWORD=<http_proxy_password> \
    --net=host \
    gcr.io/ssimwave-insights/proxy:MAJOR.MINOR.PATCH-BUILD
    

    where <insights_platform_publisher_username> and <insights_platform_publisher_password> represent your Insights publisher username and password, respectively, MAJOR, MINOR, PATCH and BUILD represent the major, minor, patch and build numbers of the desired build and <host_ip> represents the local IP address of the machine running Docker.

    Note

    You cannot use the loopback adapter (127.0.0.1) for the <host_ip>. The IP address used must be a valid local IP address.

    Notice above that you can, optionally, specify either a SOCKS5 or HTTP proxy server (and credentials) if either is required for outbound connections.

    After a successfully launching the proxy as directed above, you should see output on the console similar to the following:

    Unable to find image 'gcr.io/ssimwave-insights/proxy:1.0.3-1' locally
    1.0.3-1: Pulling from ssimwave-insights/proxy
    c87736221ed0: Pull complete
    352d38e80cbc: Pull complete
    Digest: sha256:403fea7aa00fc17e5aef2dbb4e17049a34d1b25e6e49ef24cdfa0077aa17e864
    Status: Downloaded newer image for gcr.io/ssimwave-insights/proxy:1.0.0-1
    INFO[2019-07-10T15:13:57Z] Starting kafka-proxy version v0.1.2-1-g7d600af-dirty
    INFO[2019-07-10T15:13:57Z] Bootstrap server ingest00.us-east.insights.ssimwave.com:9095 advertised as 127.0.0.1:9800
    INFO[2019-07-10T15:13:57Z] Bootstrap server ingest01.us-east.insights.ssimwave.com:9095 advertised as 127.0.0.1:9801
    .
    .
    .
    INFO[2019-07-10T15:13:57Z] Ready for new connections
    
Troubleshooting

The first step when troubleshooting is to ensure you have connectivity from your Insights Proxy to the Insights data platform.

In order to access let’s ensure DNS is working as expected:

$ or host in "ingest-gateway.us-east.insights.ssimwave.com" "insights.ssimwave.com"; do host $host; done
ingest-gateway.us-east.insights.ssimwave.com has address 3.232.252.138
ingest-gateway.us-east.insights.ssimwave.com has address 3.211.65.212
ingest-gateway.us-east.insights.ssimwave.com has address 3.220.211.137
insights.ssimwave.com is an alias for ssimwave.looker.com.
ssimwave.looker.com is an alias for 5845660a-0155-41c8-bd43-8b3386cdcd99.cloud.looker.com.
5845660a-0155-41c8-bd43-8b3386cdcd99.cloud.looker.com is an alias for a15bd4510389b4aa6b9f68ed30fa75f5-1609311009.us-east-1.elb.amazonaws.com.
a15bd4510389b4aa6b9f68ed30fa75f5-1609311009.us-east-1.elb.amazonaws.com has address 44.196.133.194
a15bd4510389b4aa6b9f68ed30fa75f5-1609311009.us-east-1.elb.amazonaws.com has address 52.72.206.4
a15bd4510389b4aa6b9f68ed30fa75f5-1609311009.us-east-1.elb.amazonaws.com has address 44.213.239.188

Next, let’s ensure we can connect to the Insights by running the following script:

#!/bin/sh

RED='\033[1;31m';
GREEN='\033[1;32m';
WHITE='\033[1;37m';
NC='\033[0m';
              
for host in "ingest-gateway.us-east.insights.ssimwave.com" "insights.ssimwave.com"
do
  nc -w 1 -z $host 443 ;
  RES=$?
  if [[ "$RES" -eq "0" ]] ; then
    echo -e "${WHITE}$host:443 -> ${GREEN}Good.${NC}"
  else
    echo -e "${WHITE}$host:443 -> ${RED}Cannot connect.${NC}"    
  fi
done

If you are able to connect you should see output like the following:

ingest-gateway.us-east.insights.ssimwave.com:443 -> Good.
insights.ssimwave.com:443 -> Good.

If you are unable to connect then it is likely there are firewall issues that need to be resolved.

If the above works but the proxy is not working in the container then it is likely an issue with the container command line invocation.

If you encounter other problems successfully deploying the Insights Proxy, please contact your SSIMWAVE representative.

Using SSIMPLUS® VOD Monitor

Recall from the architecture section above that the SSIMPLUS® VOD Monitor system is comprised of two major parts:

  1. the SSIMPLUS® Analyzer Cluster, which is deployed in the customer’s on-prem/VPC environment, and
  2. Insights, which is a multi-tenant cloud solution deployed and maintained by SSIMWAVE.

Once you have successfully deployed the SSIMPLUS® Analyzer Cluster, you are ready to start using the system. While the architecture information to this point has given you an overview of the system components, this section adds more detail to the concepts already introduced, including important interactions between components and links to help you start using system.

Note

The SSIMPLUS® Analyzer - Docker Image is an alternative/custom deployment model that does not include the SSIMPLUS® Analyzer Cluster, REST API or Kubernetes. As such, any content below regarding the SSIMPLUS® Analyzer Cluster does not apply in this case and you are encouraged to review the section Running SSIMPLUS® Analyzer Docker image instead.

System Architecture

Let’s take a closer look at the SSIMPLUS® VOD Monitor’s system architecture and call out some key details of each component within the context of a typical analysis workflow. The diagram below represents a common view of the system architecture, regardless of your deployment model:

  • The SSIMPLUS® Analyzer Cluster is the customer-deployed portion of the SSIMPLUS® VOD Monitor system and is designed as a set of cooperating software (Docker) containers that are orchestrated by Kubernetes.

    • The Analyzer API & Services are a set of always-running containers that provide the following:

      For trial/lab deployments of the SSIMPLUS® Analyzer Cluster, there is only ever one running instance of each container as the scalability needs here are expected to be relatively low. Production deployments of the cluster, by contrast, will elastically scale these containers to meet the demand.

    • The Analyzers are Docker containers that wrap the SSIMPLUS® Analyzer and perform the analysis of the video assets, generating the SSIMPLUS® metadata and metrics that are securely streamed to Insights. Analyzers are configured, deployed and managed by the SSIMPLUS® Analyzer REST API in response to POST requests to analyze one or more video assets.

      • Each Analyzer container is responsible for analyzing either a single video, in the case of a no-reference (NR) analysis, or a pair of reference and test videos together, in the case of a full-referenece (FR) analysis.

      • Each Analyzer container is configured to request the compute resources (CPU/RAM) it needs in order to succesfully perform its analysis, given the properties of the assets being analyzed.

      • Analyzer containers never stream any part of the video to Insights and, as such, no content (i.e. video, frames or images) ever leaves the customer’s environment/control.

        Note

        Upon request, SSIMWAVE will provide examples of the metrics and metadata streamed to Insights.

      • For trial/lab deployments of the SSIMPLUS® Analyzer Cluster, the number of concurrently running Analyzers will scale but only to a fixed number, as the cluster itself is constrained by the underlying properties of the virtual machine (i.e. OVA/QEMU) or EC2 instance (i.e. AMI). Production deployments of the cluster, by contrast, can elastically scale without an upper bound, if so desired, in order to meet even the most demanding analysis workloads.


  • Insights is SSIMWAVE’s multi-tenant cloud platform that leverages the power of our own viewer intelligence algorithms, along with leading business intelligence services, to present meaningful representations of the measurements and metrics captured by the SSIMPLUS® Analyzer. Some of the key features of Insights include:

    • Insights VOD Monitor Web UI which can be used to:
      • submit ad-hoc analyses,
      • configure and save various analyzer configurations into reusable and shareable templates,
      • view and interact with a summary/status of all analyses,
      • review analysis results for customizable quality failures and
      • perform frame-level inspections of your content, including image and map comparisons.

    • Insights REST API which can be used to:
      • fetch all captured metrics and measurements across a variety of time granularities including:
        • per-frame,
        • per-second (1s, 2s, 5s, etc.) and
        • per-asset.
    • Insights dashboards and reports which are customizable content displays of analysis results that can be used interactively in the Web UI and exported in various archival formats such as PDF, PNG/JPG, Excel, JSON, etc.

  • The Automation computer/laptop icon above illustrates that the full SSIMPLUS® VOD Monitor system is designed to be used in a headless manner (i.e. through API/programmatic access) and that most key features are exposed through their respective REST APIs.

  • The user/human icon and its connections above illusrate that:

    • to support those integrating the SSIMPLUS® VOD Monitor into their production workflows, SSIMWAVE has provided Postman collections with numerous REST API examples that can be imported into the Postman UI in order to become familiarized with the API request/response structures and
    • the Insights VOD Monitor Web UI can equally be used to interact graphically with both the SSIMPLUS® Analyzer and Insights REST APIs by submitting the underlying API requests on the user’s behalf.
The Analysis Process

Now that we’ve provided some detail on the high level components of the system architecture, let’s walk through the process of a typical analysis, along with some sample requests/responses in JSON. For the examples that follow, we are going to use assume a production deployment and workflow, which leverages the REST APIs for programmatic control and the Insights Web UI for out-of-band/follow-up inspections of the results. Lab/trial workflows would likely use the Insights Web UI exclusively.

  1. Submit a NR analysis of a video asset using the SSIMPLUS® Analyzer REST API and the submit new analyses endpoint.

    Notice here that:

    • our asset is lives in an S3 bucket and we are relying on IAM roles to provide read-only access to the bucket,
    • we are configuring the SSIMPLUS® Analyzer to target the LG OLED65C9PUA device from an expert viewer’s perspective and
    • we are configuring a score check on our asset that will consider the video to have failed if there is any period of 5 or more seconds where the SSIMPLUS® Viewer Score (SVS) for our selected device falls below 85.

    {
      "content": {
        "title": "NR Analysis With SVS Score Check"
      },
      "subjectAssets": [
        {
          "name": "dog_running.mp4",
          "path": "royalty_free/dog_running/source",
          "storageLocation": {
            "type": "S3",
            "name": "video-files",
            "credentials": {
              "useAssumedIAMRole": true
            }
          },
          "qualityCheckConfig": {
            "scoreChecks": [
              {
                "metric": "SVS",
                "threshold": 85,
                "durationSeconds": 5,
                "viewingEnvironmentIndex": 0
              }
            ]
          }
        }
      ],
      "analyzerConfig": {
        "viewingEnvironments": [
          {
            "device": {
              "name": "oled65c9pua"
            },
            "viewerType": "EXPERT"
          }
        ]
      }
    }
    

    A successful response from the SSIMPLUS® Analyzer REST API would look something like the following:

    {
      "submittedAnalyses": [
        {
          "analyzerConfig": {
            "viewingEnvironments": [
              {
                "device": {
                  "name": "oled65c9pua"
                },
                "viewerType": "EXPERT"
              }
            ]
          },
          "id": "13afcc15-6808-4819-9cd3-fde950dda0f2",
          "subjectAsset": {
            "content": {
              "title": "NR Analysis With SVS Score Check"
            },
            "hdr": false,
            "name": "dog_running.mp4",
            "path": "royalty_free/dog_running/source",
            "qualityCheckConfig": {
              "scoreChecks": [
                {
                  "durationSeconds": 5,
                  "metric": "SVS",
                  "skipEnd": 0,
                  "skipStart": 0,
                  "threshold": 85,
                  "viewingEnvironmentIndex": 0
                }
              ]
            },
            "storageLocation": {
              "name": "video-files",
              "type": "S3"
            }
          },
          "submissionTimestamp": "2023-08-08T17:53:40.969Z",
          "testId": "1"
        }
      ]
    }
    

    Notice in the response above the line "id": "13afcc15-6808-4819-9cd3-fde950dda0f2" reports back the analysis UUID which is the required key for fetching the analysis results from Insights.

    The following diagram illustrates the state of the system in response to the request above:

    Notice that the Analyzer API & Services have:

    • validated the POST Analysis Request,
    • inspected the properties of the underlying asset to determine the compute resources needed to analyze the asset,
    • deployed a new Analyzer container to process the video file and
    • prepared and returned a response to the caller.

  2. The Analyzer container works to analyze the video and streams the resulting metrics and metadata to Insights.

    As illustrated above:

    • the Analyzer evaluates the video asset and streams the SSIMPLUS® measrements and metrics to Inisghts (Note: no part of the video itself is streamed to Insights),
    • Insights applies additional viewer intelligence algorithms to the incoming streams before storing the data and,
    • once the analysis is complete, acknowledgements are recognized by both sides and the Analyzer container is destroyed (i.e. elastic scaling) in order to release the compute resources being used by the SSIMPLUS® Analyzer Cluster.

  3. Using the Insights REST API’s api/4.0/queries/run/json endpoint, we can fetch the results of our analysis to see if our video passed its quality check.

    {
      "model": "vod_monitor",
      "view": "vod_quality_checks",
      "fields": [
        "vod_quality_checks.analysis_uuid",
        "vod_quality_checks.time",
        "vod_quality_checks.title",
        "vod_quality_checks.organization",
        "vod_quality_checks.site",
        "vod_quality_checks.test_id",
        "vod_quality_checks.test_video",
        "vod_quality_checks.category",
        "vod_quality_checks.type",
        "vod_quality_checks.interval_start_time",
        "vod_quality_checks.interval_end_time",
        "vod_quality_checks.check_duration_seconds",
        "vod_quality_checks.check_duration_percentage",
        "vod_quality_checks.test_video_duration_seconds"
      ],
      "filters": {
        "vod_quality_checks.analysis_uuid": "<analysis_uuid>"
      },
      "sorts": [
        "vod_quality_checks.interval_start_time"
      ]
    }
    

    where <analysis_uuid> is the UUID for the analysis retrieved from the response in step 1. In this specific example, the value would be 13afcc15-6808-4819-9cd3-fde950dda0f2.

    An empty response:

    []
    

    from the Insights REST API indicates that the asset passes our score checks criteria (i.e. no period of 5s or more where SVS falls below 85) and there is nothing more to do (see below).

    If the asset fails our score check criteria, as it does in the response below from 0s - 6.16s:

        [
          {
            "vod_quality_checks.analysis_uuid": "13afcc15-6808-4819-9cd3-fde950dda0f2",
            "vod_quality_checks.time": "2023-08-08 13:54:01.851000",
            "vod_quality_checks.title": "NR Analysis With SVS Score Check",
            "vod_quality_checks.organization": "SSIMWAVE",
            "vod_quality_checks.site": "VOD Demo",
            "vod_quality_checks.test_id": "1",
            "vod_quality_checks.test_video": "royalty_free/dog_running/source/dog_running.mp4",
            "vod_quality_checks.category": "Video",
            "vod_quality_checks.type": "SSIMPLUS Viewer Score",
            "vod_quality_checks.interval_start_time": "00:00:00.000",
            "vod_quality_checks.interval_end_time": "00:00:06.160",
            "vod_quality_checks.test_video_duration_seconds": 19.68,
            "vod_quality_checks.check_duration_seconds": 6.16,
            "vod_quality_checks.check_duration_percentage": 0.313008130081
          }
        ]
    

    the workflow would likely take additional measures not explicitly captured here (i.e. flag/remove the asset) and may well require human/operator involvement to visually inspect the results in detail using the Insights Web UI and/or reports and dashboards, as shown below:

The source validation example above is but one of many supported by the SSIMPLUS® VOD Monitor, which can be used to realize a number of key use cases, including:

  • source selection,
  • encoder validation,
  • encoder comparisons,
  • content similarity evaluations,
  • HDR luminance evaluations,
  • packaging/metadata errors,
  • cadence mismatch detections,
  • color gamut and volume differencing
  • and more.

All use cases are available in both trial/lab and production deployments of SSIMPLUS® VOD Monitor.

Please reach out to your SSIMWAVE representative for examples of how the product can be leveraged and tailored to meet your specific needs.

Getting Started

To get started using the product, it is recommended that you take the following approach:

  1. Review the SSIMPLUS® Terminology and Features section.

    Here you can familiarize yourself with the various metrics and measurements supported by SSIMPLUS® VOD Monitor and which ones may be applicable to your specific use cases.

  2. Book a demo/meeting with a SSIMWAVE representative.

    If you haven’t already, consider booking a demonstration with your SSIMWAVE representative where you can see:

    • a product overview, important features and future roadmap,
    • how to use the Insights Web UI,
    • how to use the Insights dashboards/reports and make customizations desired for your use cases and
    • examples of common exchanges with the SSIMPLUS® Analyzer and Insights REST APIs.

  3. Use the Insights Web UI to submit some adhoc no-reference/full-reference analyses and inspect their results.

    The best way to fully appreciate the product is to get busy using it. The Insights Web UI provides a familiar graphical interface that allows you to execute and review the results for anything from a simple no-reference analysis to a full ABR ladder, in addition to any number of video and audio quality checks.

For those ready to plan a production deployment, you are strongly encouraged to consider the following additional steps:

  1. Install Postman and import the SSIMPLUS® VOD Monitor collection and environment.

  2. Review the SSIMPLUS® Analyzer REST API and Postman examples.

  3. Review the Insights REST API and Postman examples.

  4. Start building your client/workflow code in your language of choice using the API experience you’ve gained above.

    Important

    The SSIMPLUS® Analyzer REST API provides an OpenAPI Specification (OAS) that can be used to generate language-specific clients for those interested in jump-starting an integration into their production workflow. Both Swagger Codegen and OpenAPITools openapi-generator are examples of tools that can be used for this purpose. Additionally, any laguage that has support for sending and receiving HTTP requests/responses in JSON format can be also be used with minimal effort. Please contact your SSIMWAVE representative if you require any guidance.

SSIMPLUS® Terminology and Features

This section introduces the reader to the various metrics, measurements and quality assessment features supported by SSIMPLUS® VOD Monitor. All of the metrics and measurements below are streamed, calculated and stored in Insights.

SSIMPLUS® Measurements and Metrics

The SSIMPLUS® VOD Monitor/Analyzer can be configured to produce the following video measurements:

  • no-reference SSIMPLUS® Viewer Score (NR SVS),
  • full-reference SSIMPLUS® Viewer Score (FR SVS),
  • SSIMPLUS® Encoder Performance Score (EPS),
  • SSIMPLUS® Banding Score (SBS),
  • perceptual Color Volume Difference Score (CVD),
  • SSIMPLUS® Content Complexity Measure (CCM),
  • macroblocking,
  • noise estimation,
  • and HDR-specific metrics such as MaxFALL, MaxCLL and color gamut detection.

No-reference SSIMPLUS® Viewer Score (NR SVS)

The no-reference SSIMPLUS® Viewer Score (also known as Source SSIMPLUS® VIewer Score” or “NR SVS”, ) is a metric that assesses the quality of a source file or stream in a no-reference (NR) manner. This means that it does not require any additional information or reference material in order to evaluate the quality of the video content.

The NR SVS metric is highly accurate, with a strong correlation to both the SSIMPLUS reference-based score and the mean opinion score (MOS), and it uses deep neural networks (DNN) to make its evaluations. It is also computationally efficient, making it suitable for use at any stage of the content processing and delivery chain. The NR SVS metric supports all commonly used codecs, including ProRes, J2K, AVC, HEVC, MPEG2, and VP9, as well as all commonly used content attributes, including HDR content.

Full-reference SSIMPLUS® Viewer Score (FR SVS)

Sometimes referred to as “FR SVS” or “SSIMPLUS® Output Viewer Score”, it assesses the perceptual quality of an (encoded or processed) output in reference to a degraded (or pristine) source.

The quality of the output (FR SVS) is determined by both the quality of the source (NR SVS) and the performance of the encoder (EPS). If the encoder is working well but the source material is poor, the output quality will also be poor. This is because encoding always results in some loss of information. Thus, the output quality is a combination of the source quality, the full-reference quality EPS, and the psychovisual effects included in the model.

The metric supports all impairments, content attributes, and content types, as well as cross-resolution and cross-frame rate analysis. SSIMWAVE is currently developing supporting cross-dynamic range analysis and tone-mapped quality assessment. SSIMPLUS® correlates linearly with perceived quality and covers the full quality range.

The score ranges from 0 to 100, where 0=totally unwatchable and 100=pristine, without visual impairments).

The metric supports all commonly used codecs for source degradations, including ProRes, J2K, AVC, HEVC, MPEG2, and VP9, and it is display device and viewing conditions adaptive.

SSIMPLUS® Encoder Performance Score (EPS)

SSIMPLUS® Encoder Performance Score assesses the performance of an encoder or transcoder by comparing its output with the source. The metric assumes that the source is pristine or nearly pristine, and focuses solely on measuring the degradation introduced by encoding impairments. EPS supports all impairments, content attributes, content types, cross-resolution, and cross-frame rate analysis. We are currently developing support for cross-dynamic range analysis. The metric correlates linearly with perceived quality and covers the full quality range. It also automatically aligns a source with output across resolutions and frame rates. It computes the quality and saliency maps to normalize across all content types. EPS is adaptive to device display and viewing conditions.

Reference/Source Output

The SSIMPLUS® quality map is generated as part of the SSIMPLUS® Viewer Score computation:

Encoding Examples
Example 1
The source video is high quality, and the encoder or transcoder is performing well.
Example 2
The source video is high quality, but the encoder or transcoder is performing poorly.
Example 3
The source video is poor quality, but the encoder or transcoder is performing well.
Example 4
The source video is poor quality, and the encoder or transcoder is performing poorly.

SSIMPLUS® Banding Score (SBS)

A SSIMPLUS® Banding Score (SBS) is a measurement of the amount of color banding that is present within the asset. Banding, otherwise known as color contouring, is a common artifact of the video compression process and due to the quantization introduced by the video codec. It is most obvious in areas where the content calls for the rendering of smooth gradient regions, such as the sky, water or ground. In these regions, pixel values that are meant to be represented uniquely so as to provide a gentle transition from one shade or color to another are, instead, aggregated into a much smaller set of values creating discrete bands of colors.
The SSIMPLUS® algorithm analyzes each frame of your asset for the presence of banding and records a score indicating the severity of the banding, according to the following scale:

  • [ 0- 20] Imperceptible
  • [21- 40] Perceptible but not annoying
  • [41- 60] Slightly annoying
  • [61- 80] Annoying
  • [81-100] Very annoying

The following frame is an example of an SBS of 0, meaning that there is no discernible banding present:

This next frame is example of an SBS of 68, which would qualify as annoying. Notice the discrete bands of colors both in the sky and the asphalt track.

Perceptual Color Volume Difference Score (CVD)

SSIMPLUS® Viewer Score and SSIMPLUS® Encoder Performance Score take into account color quality. The perceptual color difference is a dedicated metric for color quality assessment that supports both HDR and SDR content. The metric provides a visibility map that helps to quickly identify areas with significant perceptual color differences. The score ranges from 0 to 100, where0 represents no deviation, <15 color difference is perceptible and 100 denotes colors are opposite.

Reference/Source Output

The SSIMPLUS® color volume differece map:

SSIMPLUS® Content Complexity Score (CCS)

The primary challenge for a video processing/encoding system to operate at the optimal level is the vast variety of video characteristics also called video complexity. Different content types (such as sports, news, nature, movie, and documentary) require the video system to run in different configurations.

Traditional measures, like spatial and temporal information, don’t describe the video complexity very well. For example, a frame with high spatial information doesn’t mean it’s difficult to encode.

Content Complexity Score (CCS) is a measure to describe how difficult it is to encode an asset/any piece of content. Content Complexity is one of the most important metrics when making decisions about encoding configurations like bitrate allocation, resolution etc. Complexity measurements can be used to make more intelligent decisions regarding the type of encoder, and/or profile settings to apply, when encoding asset for downstream packaging or consumption.

The CCS can deliver significant value by:

  • saving bandwidth for relatively easy content while maintaining the target quality (as measured by SSIMPLUS® Viewer Score),
  • mintaining the target quality even for complex content by redistributing the resources wisely across content with different requirements,
  • reducing the quality variation of the asset library,
  • optimizing encoders for asset libraries with a wide range of content,
  • saving time and encoding power and
  • optimizing transmission costs

Macroblocking

Macroblocking artifacts are a type of visual distortion that can occur during video transmission when packets of data are lost. The severity and appearance of these artifacts can vary, depending on the content of the video, the encoding algorithm used, the packetization strategy, and how the decoder handles errors. Macroblocking detection is a method of analyzing a video frame to determine whether or not it contains macroblocking artifacts. While some non-reference quality metrics may be unable to accurately identify the presence of these artifacts, others, SSIMWAVE, is specifically designed to do so. This is important because these artifacts can significantly impact the perceived quality of the video.

The SSIMPLUS® Viewer Score (SVS) takes macroblocking artifacts into consideration after enabling the macroblocking detection.

Noise estimation

Noise estimation is critical to measure how much noise exists in the content so that the quality assessment metric can be adapted to generate the objective quality score which is consistent with human opinion.

Noise and film grain are different. Noise needs to be suppressed, while film grain needs to be preserved as it is part of the creative intent. Instead of the structural fidelity of film grain, the human visual system (HVS) is sensitive to the statistical similarity which hasn’t been captured by the existing quality assessment methodologies.

SSIMPLUS® provides two noise metrics for content analysis:

  • Physical Noise

    Physical Noise measures the standard deviation of camera/sensor noise when the statistical behavior of noise is random with gaussian (or similar) distribution. If noisy content is processed multiple times, then noise can become correlated with content and lose the randomness, which would reduce the effectiveness of the metric due to deviation of appearance of noise from “true noise.”

  • Visual Noise

    Visual Noise measures the standard deviation of noise considering contrast masking behavior of underlying content. For example, noise is much more visible in plain regions than in areas with textures. Similar to the case of Physical Noise measurement, if noisy content is processed multiple times, then noise can become correlated with content and lose the randomness, which would reduce the effectiveness of the metric due to the deviation of the appearance of noise from “true noise.”

HDR

HDR displays are typically limited in terms of emitting enough luminance so they must perform tone mapping or luminance shifting/clipping to render HDR content.

Understanding minimum, maximum, and average luminance values for each frame as well as maximum frame average light level (MaxFALL) and maximum content level light level (MaxCLL) is very helpful for content providers to ensure the creative intent does not get compromised because of display capabilities. Embedded HDR10 metadata is not reliable and often gets ignored by HDR displays. SSIMPLUS® analyzes pixels and calculates per-frame min, max and average luminance value as well as MaxFALL and MaxCLL. This feature is used for Quality Control of HDR productions or to validate embedded metadata.

Color gamut detection

The beauty of HDR videos is not solely due to the brighter and darker pixels. Accommodating wider color gamuts (WCG) brings richer color tones to the content.

Grading HDR is typically done using a P3 color gamut. HDR delivery pipelines always use Rec 2020 primaries and so HDR metadata does not provide useful insight into the gamut coverage of the content.

SSIMPLUS is able to look at pixel values and determine the gamut coverage of each frame. Receiving HDR/WCG content, content providers will know how much of the content is actually in Rec 709, P3 or Rec 2020 when receiving HDR/WCG content.

*SSIMPLUS® VOD Monitor supports HLG, HDR10 and Dolby Vision analysis.

Device and Viewing Environment Adaptive

SSIMPLUS® no-reference (Source SSIMPLUS® Viewer Score), full-reference (Encoder Performance Score), and degraded-reference (Output SSIMPLUS® Viewer Score) technologies assess perceived quality for any target display device and viewing environment:

  1. Device adaptive

    SSIMPLUS® Scores are device adaptive; this means that the metrics consider the device display attributes and viewing conditions when computing the score and take into account content scaling performed to match device attributes. Impairment perceptibility varies significantly across device displays and viewing conditions. SSIMPLUS takes into account content quality and playback behavior to accurately reflect viewer experience in real time.

    The score can be used to assess degradation in the Viewer Experience introduced by the performance of content delivery and playback, adapted to the display device used by each viewer. It correlates linearly with perceived quality and covers the full quality range.

    The scores support displays of any size, resolution, frame-rate, and brightness. The scores also adapt according to viewing distance, angle, and other important viewing conditions.

    VOD Monitor supports more than 100 model devices from vendors like Samsung, LG, Sony, Canon, Apple, etc.

  2. Viewer adaptive

    SSIMPLUS® Scores are Viewer Adaptive; SSIMPLUS® Viewer Scores and Encoder Performance Scores adapt according to the viewer type, based on the psychovisual behavior: Studio, Expert, and Typical viewers differ in the following ways:

    1. Typical Viewer

      The Typical Viewer is primarily concerned with the content of the video rather than the overall viewing experience. They tend to be more critical of quality drops and less likely to notice or appreciate improvements in quality. They also recognize that not all regions of the content are equally important, and their overall evaluation of the content is influenced by this fact.

    2. Expert Viewer

      The Expert Viewer, on the other hand, is primarily focused on the quality of the video rather than the content itself. They are aware that different regions of the content may be more or less important, and their overall evaluation of the video is largely dependent on the worst segments of the content.

    3. Studio Viewer

      The Studio Viewer is primarily concerned with the preservation of the creative intent of the video, and they place particular importance on regions of the content that are impaired or degraded in some way. They are less concerned with the overall quality of the video and more focused on ensuring that the content is being presented in a way that is consistent with the original creative vision.

Measurement Periods

The SSIMPLUS® Analyzer streams scores for every frame of every asset analyzed to the Insights data platform, where our processing provides aggregates of these frame scores over time intervals called measurement periods and these values are used for various analytics, including many of the pre-configured views presented in the sections below. When it comes to generating a single score (SVS, EPS, SBS or CCS) for all frames over a given measurement period, there are three value types that are available: average, minimum and maximum. As you would expect, these values are the mathematical average, minimum and maximum calculated across the population of frame scores over the given measurement/time period.

The following screen capture provides a useful illustration for understanding measurement periods:

Here we can see that the graph’s reference time is delineated into 2s intervals which we will use as the measurement period in this example. Using this approach, we’ve augmented the graph with labels for a selection of measurement periods showing the approximate average, minimum and maximum scores.

When you use the Insights REST API to fetch analysis results, you’ll have the ability to customize the measurement period used and, in some cases, the measurement type (i.e. average, minimum or maximum). Generally speaking, you have the choice of the following measurement periods to use when aggregating the frame scores:

  • 1s
  • 2s
  • 5s
  • 10s
  • 30s
  • 60s

Unless requested otherwise, the default measurement period is 1s and the type used is average. You may, at any time, request scores down to the frame level, should your use case require that level of granularity.

SSIMPLUS® Asset Scores

In addition to extracting scores based on measurement periods, Insights provides Asset Scores which employ additional intelligence beyond simple mathematical averages of individual frames scores or measurement periods to arrive at a single score for an entire asset.

A SSIMPLUS® Asset Score is a summary metric that assesses the overall experience of the viewer after watching a full asset or program or just a part of an asset or program. It is designed to accurately model the memory behavior of the human visual system and to take into account the response of the human visual system to variations in the viewer experience. For example, in typical scenarios, video quality changes significantly over time due to a number of reasons. Viewers’ opinion of video quality changes relies heavily on the amount, duration, and direction of such a change. SSIMPLUS® uses the Expectation Confirmation Theory to model the asymmetric behavior of the Human Visual System.

SSIMPLUS® VOD Monitor provides both the average and asset scores for the metrics:

  • SSIMPLUS® Viewer Score (SVS),
  • SSIMPLUS® Encoder Performance Score (EPS),
  • SSIMPLUS® Banding Score (SBS) and
  • SSIMPLUS® Content Complexity Score (CCS).

It is generally recommended to use the Asset Score rather than the average score for content lengths that are longer than one minute in duration.

The Asset SVS, for example, provides a measurement that can be used to judge the overall quality of the entire asset, as perceived by the human visual system, taking into account the lingering effect of poor quality segments. The Asset SVS is particularly useful when your goal is to perform source selection on a population of assets by first removing all those with unacceptably low overall quality. Similarly, an Asset Encoder Performance Score (EPS) and an Asset Content Complexity Score (CCS) can provide a single judgement of the encoder’s performance and the complexity of an entire asset, respectively.

SSIMPLUS® Quality Scale (SVS & EPS)

The following scale provides the guide for how to interpret SSIMPLUS® (Asset) SVS and (Asset) EPS scores:

  • Excellent = Impairments are imperceptible
  • Good = Impairments are perceptible but not annoying
  • Fair = Impairments are slightly annoying
  • Poor = Impairments are annoying
  • Bad = Impairments are very annoying
Cadence Pattern Detection

Cadence is defined as the repetition pattern of frames when content that was originally produced at a lower framerate is presented at a higher frame rate as a result of frame rate conversion.

Since content may be transcoded multiple times between the original and the analyzed video and different transcoders apply different cadence patterns when performing frame rate conversion and deinterlacing, SSIMPLUS® VOD Monitor applies heuristics to determine what cadence pattern is observed. Additionally, since some long form content may be a combination of different sources stitched together, SSIMPLUS® VOD Monitor can detect several cadences throughout the asset and report the detected cadence patterns along with the times observed to Insights.

If there is not enough differentiation between frames within the content due to low motion, then SSIMPLUS® VOD Monitor will not report a cadence but instead report "Unknown (Low Motion)" as well as a confidence threshold for all detected cadence patterns.

The list of cadence patterns SSIMPLUS® VOD Monitor can detect and their typical use case are

Pattern Typical Use Case
1:1 (No Pattern) The content has unique frames throughout and likely has the same framerate as the original
2:2 Every frame is repeated exactly once
May be Progressive Segmented Frames or 25fps (frames per second) content encoded at 50fps
2:3 / 3:2 This is classic Telecine cadence pattern where the first frame is repeated once and the second frame is repeated twice
This is often seen when 24fps is converted to 60fps
1:1:1:2 Every 4th frame is repeated once
This is often seen when 24fps is converted to 30fps
2:3:3:2 / 2:2:3:3 An “improved” method of applying a 2:3 or 3:2 where the middle frame in the sequence does not a contain a mix of consecutive fields
2:2:2:4 An alternative method of converting from 24fps to 60fps where the 4th frame is repeated 4 times
2:2:3:2:3 Used when converting 25fps to 30fps content
2:2:2:2:2:2:2:2:2:2:2:3 Also known as 12:1 or 24:1, is used to convert 24fps to 25fps
5:5 Used to convert 12fps (typically animation) to 30Hz
6:4 Another way to convert 12fps (typically animation) to 30Hz
7:8 / 8:7 Used to convert 8fps (typically animation) to 30Hz
Note

Any cadence that is found that isn’t 1:1 (No Pattern) and isn’t in the list above will be returned as Unknown (Low Motion)

Audio
Summary
  • Audio loudness measurements and quality checks are an optionally licensed feature
  • Audio clicks and pops quality check is an optionally licensed feature
  • Audio clipping quality check is an optionally licensed feature
  • The loudness measurement standard used is a configuration option
    • The default measurement standard is ITU-R BS.1770-4
    • Silence quality checks are impacted by this choice as they are based off of True Peak Level which vary slightly by measurement standard
  • All physical audio tracks within a video asset will be measured when the feature is enabled
  • Audio streams containing uncompressed PCM audio with container level channel layout metadata are supported
  • Audio streams containing uncompressed PCM audio that do not have any channel layout metadata are limited to the following number of channels
    • 1, 2, 3, 4, 5, 6, 7, 8, 16, 24

Loudness Metrics

SSIMPLUS® VOD Monitor is capable of performing several loudness measurements that follow the ITU-R BS.1770, EBU Tech 3341 and EBU Tech 3342 measurement standards. These measurements can have Quality Checks applied to them.

  • True Peak Level
  • Integrated Loudness
  • Momentary Loudness
  • Short-Term Loudness
  • Loudness Range

True Peak Level

True Peak Level is defined within the ITU-R BS.1770 specification.

True Peak Level measurement performs 4x oversampling of the audio samples of the track to determine what the true peak as opposed to the sample peak.

The unit of measurement for True Peak Level is dBTP or decibels relative to full scale, true-peak.

Integrated Loudness

Integrated Loudness (also known as Programme Loudness) is defined within the ITU-R BS.1770 specification.

Integrated Loudness is a loudness measurment that weights the individual channels to determine a perceived loudness.

Integrated Loudness is measured over the entire asset.

The unit of measurment for Integrated Loudness is LKFS or Loudness, K-weighted, relative to full scale. LKFS is equivalent to a decibel - an increase in the level of a signal by 1 dB will cause the loudness reading to increase by 1 LKFS.

Momentary Loudness

Momentary Loudness is defined within the EBU Tech 3341 specification.

Momentary Loudness is an ungated loudness measurment derived from Integrated Loudness that uses a sliding rectangular time window of length 400ms.

The unit of measurment for Momentary Loudness is LUFS or Loudness Units, relative to full scale. LUFS is equivalent to LKFS, but in EBU documentation the preferred term is LUFS.

Short-Term Loudness

Short-Term Loudness is defined within the EBU Tech 3341 specification.

Short-Term Loudness is an ungated loudness measurement derived from Integrated Loudness that uses a sliding rectangular time window of length 3s.

The unit of measurment for Short Term Loudness is LUFS.

Loudness Range

Loudness Range is defined within the EBU Tech 3342 specification.

Loudness Range quantifies the variation in a gated loudness measurement over a 3s period.

The unit of measurement for Loudness Range is LU or Loudness Units.

The unit of measurement for Loudness Range High Level and Loudness Range Low Level is LUFS.

Standards

The SSIMPLUS® VOD Monitor product allows for configuration of the ITU-R BS.1770 measurement standard when performing loudness measurement and loudness based quality checks. A description of the standards can be found in the table below.

Standard Description
ITU-R BS.1770-1 Initial specification describing techniques used to measure programme loudness and true peaks. Integrated Loudness measured with ITU-R BS.1770-1 will be ungated. Only tracks with channel layouts up to 5.1 surround sound are supported.
ITU-R BS.1770-2 Integrated Loudness measurements are now gated at -70 dB.
ITU-R BS.1770-3 A FIR interpolating filter is introduced in the True Peak Level measurement.
ITU-R BS.1770-4 Tracks with channel layouts greater than 5.1 surround sound are supported. (7.1)

The default measurement standard is ITU-R BS.1770-4.

Configuration and Supported Formats

SSIMPLUS® VOD Monitor Audio Loudness measurements and all audio quality checks support a variety of codecs and formats. This includes but is not limited to:

  • Dolby Digital AC-3
  • Dolby Digital Plus E-AC-3
  • Dolby Digital Plus with Dolby Atmos E-AC-3
  • AAC
  • MPEG-2 Audio
  • MPEG-3 Audio
  • PCM Audio

If a desired codec is not listed above, customers should contact their SSIMWAVE representative for more information.

When performing audio loudness measurements, all physical audio tracks within an asset will have their loudness measured according to the metrics listed in the Loudness Metrics section.

PCM Audio Support

Certain container formats (e.g. MXF) will have additional metadata indicating the channel layout of PCM audio and are fully supported. However, for PCM audio tracks that do not have an explicit channel layout, support is currently limited in SSIMPLUS® VOD Monitor. The number of channels within the track will default to a specific channel layout. There are two tables to assist in tracking how PCM audio tracks without channel layout metadata will be processed by the analyzer. A mapping of channel acronyms and channels along with a list of channels to channel layout mapping supported in SSIMPLUS® VOD Monitor can be found below.

Channel Acronym to Channel Name Mapping

Note

The order the channels appear in the table below indicate the order they will appear in a layout.

e.g. Front Left will always be the first channel (if present) in the layout.

e.g. Back Center will never be after Side Left in a layout.

Channel Acronym Channel Name
FL Front Left
FR Front Right
FC Front Center
LFE Low Frequency Effects
BL Back Left
BR Back Right
FLC Front Left of Center
FRC Front Right of Center
BC Back Center
SL Side Left
SR Side Right
TC Top Center
TFL Top Front Left
TFC Top Front Center
TFR Top Front Right
TBL Top Back Left
TBC Top Back Center
TBR Top Back Right
WL Wide Left
WR Wide Right
LFE2 Low Frequency Effects 2
TSL Top Side Left
TSR Top Side Right
BFC Bottom Front Center
BFL Bottom Front Left
BFR Bottom Front Right

Number of Channels to Channel Layout Mapping

Number of Channels Channel Layout Channel Mapping
1 Mono 1-FC
2 Stereo 1-FL
2-FR
3 2.1 1-FL
2-FR
3-LFE
4 4.0 1-FL
2-FR
3-FC
4-BC
5 5.0 (back) 1-FL
2-FR
3-FC
4-BL
5-BR
6 5.1 (back) 1-FL
2-FR
3-FC
4-LFE
5-BL
6-BR
7 6.1 1-FL
2-FR
3-FC
4-LFE
5-BC
6-SL
7-SR
8 7.1 1-FL
2-FR
3-FC
4-LFE
5-BL
6-BR
7-SL
8-SR
16 Hexadecagonal 1-FL
2-FR
3-FC
4-BL
5-BR
6-BC
7-SL
8-SR
9-TFL
10-TFC
11-TFR
12-TBL
13-TBC
14-TBR
15-WL
16-WR
24 22.2 1-FL
2-FR
3-FC
4-LFE
5-BL
6-BR
7-FLC
8-FRC
9-BC
10-SL
11-SR
12-TC
13-TFL
14-TFC
15-TFR
16-TBL
17-TBC
18-TBR
19-LFE2
20-TSL
21-TSR
22-BFC
23-BFL
24-BFR

If the number of channels within the audio track is not within the set of supported channels, then customers are recommended to disable audio loudness measurement before running their analysis.

Clicks and Pops

SSIMPLUS® VOD Monitor provides a quality check for clicks and pops that may occur within an audio track. Clicks and pops are caused by a variety of factors, including a poor recording environment, bad equipment, or a misaligned recording.

Clipping

SSIMPLUS® VOD Monitor provides a quality check for clipping that may occur within an audio track. This distortion occurs when an audio signal exceeds the maximum limit of a recording or playback system. It typically happens when the volume level of the audio reaches or exceeds the maximum level that can be accurately reproduced, resulting in the waveform being “clipped” or truncated. This distortion introduces unwanted distortion and distortion artifacts to the audio signal, leading to a harsh and distorted sound.

Dolby Vision Metadata Validation

Within SSIMPLUS® VOD Monitor, the SSIMPLUS® Analyzer can check that Dolby Vision metadata belonging to an asset is valid and complies with industry best practices for the purposes of content mapping.

Dolby Vision metadata can be provided either through a sidecar XML file or interleaved with JPEG2000 frames inside of an MXF asset in PHDR (Prototype High Dynamic Range) format.

Note

A sidecar XML file cannot be provided when PHDR formatted metadata exists within the MXF asset. This scenario would present ambiguity when applying content mapping. SSIMPLUS® VOD Monitor will detect this scenario and prevent the analysis from being submitted.

The validation will fail if a sidecar XML file is provided that does not match the video asset contained within the analysis (eg. different frame count, frame rate, color encoding, etc.), although the metadata contents will still also be examined for violations.

If your license permits this feature, validation will be performed whenever metadata is detected in any of the aformentioned formats.

Validation Checks

The following table outlines the list of conditions that are checked within the metadata, along with the validation result that will be reported when a check does not pass.

Condition Validation Result
Content mapping algorithm version is valid
(Valid versions: 0.0, 2.0-2.5, 4.0-4.2)
Fail
Mastering display metadata is within valid ranges Fail
Target display metadata is within valid ranges Fail
Each target display has a unique peak brightness value Fail
Colour encoding metadata is valid Fail
Shots do not overlap with each other Fail
Shots do not have gaps between them Fail
No shots containing negative duration Fail
Per-frame offsets are within shot boundaries Fail
Level 1 metadata values are present and within the range of 0.0 to 1.0 Fail
One set of Level 1 metadata values per shot Fail
Level 2 and Level 8 target display IDs are recorded in Level 0 Fail
Level 2 and Level 8 metadata values are within -1.0 to 1.0 Fail
Level 3 metadata values are present and within -1.0 to 1.0 Fail
Level 9 metadata values are present and within -1.0 to 1.0 Fail
Level 11 metadata values are within the defined set of content type index values Fail
No duplicate trims exist in the same shot for a specific target display ID Fail
Number of displays requiring custom Level 10 metadata is less than 5 Fail
Predefined Mastering and Target displays are checked against the Dolby CM v2.4 Database for matching color primaries, white point, encoding, peak brightness and minimum brightness Warning
Mastering displays contain only standard color primaries Warning
Level 1 metadata values should not equal (0,0,0) for a duration longer than 1 seocond Warning
Level 1 metadata values should not be the same for more than 15 consecutive shots Warning
Level 2 or Level 8 metadata values should not be the same for more than 15 consecutive shots Warning
Shots that contain an HDR trim should also contain a 100-nit trim Warning
Shots should always contain trim values Warning
Shots should not contain trims with Level 2 or Level 8 lift greater than +0.025 with aspect ratio letterboxed Warning

One or more issues may be detected within the metadata during validation. When this occurs, the list of issues along with any associated frame ranges will be indicated in the metadata validation report. Any issues encountered that cause a validation failure must be addressed and resolved for proper content mapping. Meanwhile, warnings should be reviewed to ensure there are no undesired results in the video output.

An analysis can be configured on a per-asset basis to produce a quality check event if there are issues detected within the metadata.

Important

Only failing validation results will trigger a quality check event.

Quality Checks

SSIMPLUS® VOD Monitor supports various quality checks which can be used to identify assets with unacceptably quality. Generally speaking a quality checks fall into one of the following categories:

  1. Video

    A video quality check focuses on conditions outside of perceptual quality that would result in unaccepable quality, such as freeze frames, black frames, solid color frames, FPS mismatches, unwanted cadence changes and incorrect and/or mismatched metadata.

  2. Audio

    An audio loudness quality check performs level-based and range-based assessments of the audio tracks to ensure that standards of acceptabilty are being met.

    An audio artifact quality check performs level-based and signal-based assessments of the audio tracks to ensure that unwanted noise (eg. clicks, pops and clipping distortion) does not occur during playback.

  3. Score

    A score check allows one to apply numeric thresholds to various SSIMPLUS® measurements and metrics and reject assets that don’t meet the threshold.

Video Quality Checks

SSIMPLUS® VOD Monitor supports the following video quality checks, along with their respective default duration (beyond which the condition is considered a quality failure) and level (per-analysis or per-asset) to which they apply. A video quality check focuses on conditions outside of perceptual quality that would result in unaccepable quality. For more details on configuration options for the video checks, please review consult the SSIMPLUS® Analyzer REST API and/or the Insights VOD Monitor app.

Quality Check Description Default Duration Configuration Level
Black frames Consecutive black frames are detected that persist for a customizable duration 10s Per-Analysis
Solid color frames Consecutive frames of a single color (i.e. green, red) are detected that persist for a customizable duration 10s Per-Analysis
Freeze frames Consecutive frames of identical content are detected that persist for a customizable duration 10s Per-Analysis
Color bar frames Consecutive frames containing the common color test/calibration bar pattern are detected that persist for a customizable duration 10s Per-Analysis
Cadence Finds periods of mixed, broken or disallowed cadence - Per-Analysis
Frame rate and scanning Finds periods of mismatched frame rate (FPS) and/or scan type between probed values and actual bitstream - Per-Analysis
Photosensitive Epilepsy (PSE) Detection Finds periods of that may violate PSE Harding Tests (red/lumincance flashes, spatial pattern) - Per-Asset
Dolby Vision metadata Global, per-shot and per-frame metadata validation errors that may impact the ability for a playback device to apply Dolby Vision tone mapping - Per-Asset
MaxFALL and MaxCLL metadata Global, identifies discrepencies between MaxFALL/MaxCLL metadata and actual measured light levels - Per-asset
Missing captions A period, of a customizable duration, where the closed captions are detected as missing 60s Per-Analysis
Important

The SSIMPLUS® Analyzer uses the following order for video frame checks: black -> solid color -> color bar -> freeze.

Audio Quality Checks

SSIMPLUS® VOD Monitor supports the following audio quality checks, along with their respective default duration (beyond which the condition is considered a quality failure) and level (per-analysis or per-asset) to which they apply. An audio quality check performs level-based and range-based assessments of the audio tracks to ensure that standards of acceptabilty are being met. For more details on configuration options for the video checks, please review consult the SSIMPLUS® Analyzer REST API and/or the Insights VOD Monitor app.

See the Audio section for more details regarding the measurements used for the Audio quality checks below.

Important

Audio Quality Checks will apply to all audio tracks within an asset.

Quality Check Description Default Duration Configuration Level
Max Short Term Loudness A period, of customizable duration with a minimum value of 400 milliseconds, where the Short Term Loudness value exceeds a specified threshold - Per-Asset
Max Momentary Loudness A period, of customizable duration with a minimum value of 3 seconds, where the Momentary Loudness value exceeds a specified threshold - Per-Asset
Min True Peak Level A period, of customizable duration with a minimum value of 100 milliseconds, where the True Peak Level value is less than a specified threshold - Per-Asset
Max True Peak Level A period, of customizable duration with a minimum value of 100 milliseconds, where the True Peak Level value exceeds a specified threshold - Per-Asset
Min Integrated Loudness The Integrated Loudness value is less than a specified threshold - Per-Asset
Max Integrated Loudness The Integrated Loudness value exceeds a specified threshold - Per-Asset
Min Loudness Range The Loudness Range value is less than a specified threshold - Per-Asset
Max Loudness Range The Loudness Range value exceeds a specified threshold - Per-Asset
Silence A period, of customizable duration, where the audio true peak level of a channel are detected as less than the specified threshold 60s Per-Asset
Clicks and Pops Clicks and/or pops were detected over a period of time within an audio track - Per-Asset
Clipping A period, of customizable duration, where clipping was detected within an audio track - Per-Asset

Standards

There are several standards related to audio loudness compliance.

Compliance Specification Region Recommended Quality Checks
ARIB TR-B32 Japan Min Integrated Loudness > -25 LKFS
Max Integrated Loudness < -23 LKFS
Max True Peak Level < -1 dBTP
ATSC/85 North America Min Integrated Loudness > -26 LKFS
Max Integrated Loudness < -22 LKFS
Max True Peak Level < -2 dBTP
EBU Europe Min Integrated Loudness > -25 LKFS
Max Integrated Loudness < -23 LKFS
Max Short Term Loudness < -18 LUFS
Max True Peak Level < -1 dBTP
OP-59 Australia Min Integrated Loudness > -25 LKFS
Max Integrated Loudness < -23 LKFS
Max True Peak Level < -2 dBTP

Score Checks

SSIMPLUS® VOD Monitor supports the following score checks, along with their respective default threshold, duration and level (per-analysis or per-asset) to which they apply. A score check allows one to apply numeric thresholds to various SSIMPLUS® measurements and metrics and reject assets that don’t meet the threshold. For more details on configuration options for the score checks, please review consult the SSIMPLUS® Analyzer REST API and/or the Insights VOD Monitor app.

Quality Check Description Default Threshold Default Duration Configuration Level
SVS SSIMPLUS® Viewer Score 80 (Web UI only) 5 (Web UI only) Per-Asset
EPS SSIMPLUS® Viewer Score 80 (Web UI only) 5 (Web UI only) Per-Asset
SBS SSIMPLUS® Viewer Score 80 (Web UI only) 5 (Web UI only) Per-Asset
CVD Color Volume Difference Score 80 (Web UI only) 5 (Web UI only) Per-Asset
MIN_PIXEL_LUMINANCE Minimum Pixel Luminance Score 80 (Web UI only) 5 (Web UI only) Per-Asset
MAX_PIXEL_LUMINANCE Maximum Pixel Luminance Score 80 (Web UI only) 5 (Web UI only) Per-Asset
MIN_FRAME_LUMINANCE Minimum Frame Luminance Score 80 (Web UI only) 5 (Web UI only) Per-Asset
MAX_FRAME_LUMINANCE Maximum Frame Luminance Score 80 (Web UI only) 5 (Web UI only) Per-Asset
Insights Data Platform

As illustrated in the Architecture Overview, the SSIMPLUS® VOD Monitor product separates the process of submitting and executing analyses from the storage, extraction and manipulation of the results. These latter activities fall under the purview of Insights, SSIMWAVE’s cloud-based data platform, and the purpose of this section is to describe and offer examples of how one interacts with this platform.

Insights leverages the power of our own viewer intelligence algorithms along with leading business intelligence services to present meaningful representations of the measurements and metrics captured by the SSIMPLUS® Analyzer. Insights allows SSIMWAVE to offer all manner of data manipulation and/or transformation, customized to our customer’s needs, which can then be consumed in any number of output formats, including visual (i.e. Web/GUI, PDF), API (i.e. JSON) and third-party product integrations (i.e. Excel).

Getting Started

Once you’ve worked through the Using SSIMPLUS® VOD Monitor section, you’re ready to get down to the business of using the Insights platform!

To start using Insights, you will need an account along with a clientId and clientSecret to access the Insights REST API. If you have not done so already, please use the SSIMWAVE Help Center to create a ticket specifying your organization and the email address you wish to use as your account login. Alternatively, you can send these values to your SSIMWAVE representative using Slack/email. Next, follow the instructions in your invitation email to set up your account. With a new account in place, you can login to the Insights where you will have access to the Insights VOD Monitor app along with a shared space that has been created for your organization, which includes pre-created dashboards to address the usage scenarios that will be of interest to you. Refer to the Insights Web UI section for a brief introduction to the Insights UI.

Warning

Your clientId and clientSecret are unique to your account and should be kept private. While the values need only be generated once, new ones can be regenerated in the case where they are lost or compromised.

Insights Web UI

The Insights platform offers a fully graphical experience via the Insights Web UI. For SSIMPLUS® VOD Monitor customers, there is an Insights VOD Monitor App which acts as your landing page when you login via your browser. This app is a system of interactive screens that allows you to submit new analyses, inspect their results and manage a library of completed analyses, among other things. Additionally, the Insights Web UI provides an advanced business intelligence tool that provides a number of out-of-the-box dashboards and reports for all levels of consumer, with the ability to easily create and extend new ones to meet specific needs.

Tip

The Insights Web UI provides a very rich and highly configurable user interface on top of the data and services provided by the data platform itself. As such, you are encouraged to contact your SSIMWAVE representative for a demonstration of the UI’s capabilities in addition to a discussion regarding your specific visualization needs and the range of possibilities offered by the platform.

Insights VOD Monitor App

The Insights VOD Monitor app provides a curated GUI for:

Note

The sections below provide a short overview on how to submit and view the results of a simple no-reference (NR) analysis.

Upcoming releases will look to provide additional instruction, through text and video, on how to use the various features of the Insights VOD Monitor App and Web UI. In the meantime, feel free to experiment with thesystem and reach to your SSIMWAVE representative for any questions or demonstrations.

Analyze - Submit an analysis

Click on Analyze - Submit an analysis to launch the Insights VOD Monitor App for submitting a new adhoc analysis.

The app workflow is straightforward:

  1. Fill in the required and desired fields that apply for your analysis
  2. Submit analysis (click Submit Analysis button)
  3. View results of analysis (click View Result button)
  4. Submit another analysis (click Submit another button)

The screen captures below illustrate this workflow for a full-reference (FR) analysis with banding detection:

Tip

If you are following these instructions as part of simply validating that your SSIMPLUS® Analyzer Cluster has been successfully deployed, feel free to use a single video asset here and submit a no-reference (NR) analysis, thereby skipping step 3 below and simplifying the process even further.

  1. Add a Title (required field) for the content being analyzed and then expand the Configuration section in order to select your target devices. Here we are selecting devices that span the different categories (i.e. TV, tablet, monitor, phone) and choosing one that supports SBS (i.e. color banding):
  2. Select the features you want to enable for this analysis from the list that are available in your purchased feature license. In the example below, we wish to additionally calculate the SSIMPLUS® Banding Score (SBS) as we made sure to add a device that supports SBS (i.e. LG OLED65C9PUA TV) in the step above.
  3. Click on the Add Reference Asset button to add a reference asset. In the example below, our reference asset is a SDR MPEG-4 AVC asset stored in an S3 bucket. If you’re using an S3 storage type, you are encouraged to use the Choose button to find and select your reference asset.
  4. Edit the Test Asset to reflect the test/subject asset being compared against the reference and then click Submit Analysis button. In the example below, our test asset is a SDR MPEG-4 AVC asset stored in an S3 bucket. If you’re using an S3 storage type, you are encouraged to use the Choose button to find and select your reference asset.
  5. If the analysis has been correctly defined and your SSIMPLUS® Analyzer Cluster is fully operational, you should see a submission result page, as shown below.

From the Analysis Submission Result page shown above, you can click on the Status button to take you to the Status page where you can monitor the progress of you analysis and inspect the results.

Insights REST API

This section is mandatory reading for anyone considering a production deployment of the SSIMPLUS® VOD Monitor product as the Insights REST API is the mechanism provided for programmatic retrieval of analysis results. The content is divided into sections that focus on the general use of the Insights REST API, including:

  • API endpoints,
  • API request structure,
  • authentication,
  • how to retrieve the SSIMPLUS® metrics and measurements for your analyzed videos
  • how to configure quality checks to automatically find poor quality assets that suffer from a range of video and audio problems and
  • examples with reference material to enable you to build and customize data retrieval to meet your specific workflow needs.
Using the API

The Insights REST API exposes a single endpoint for all requests: /api/4.0/queries/run/json?cache=false and each request must be sent using HTTP POST semantics.

Important

The Insights platform supports caching for improved performance, especially from within the Web UI. When using the REST API, however, it is recommended that you bypass the cache by adding the cache=false query parameter to all your requests, as shown above. In this manner, you will be guaranteed to see the latest data at all times.

Let’s examine the body of a typical Insights POST request shown below:

{
    "model": "vod_monitor",
    "view": "vod_analysis_results",
    "fields": [
        "vod_analysis_results.test_id",
        "vod_analysis_results.test_video_time_1s",
        "vod_analysis_results.ssimplus_viewer_score"
        .
        .
    ],
    "filters": {
        "vod_analysis_results.analysis_uuid": "59508525-070d-428b-8857-d5482bf7c690",
        .
        .
    },
    "sorts": [
        "vod_analysis_results.test_video_time_1s",
        "vod_analysis_results.test_id",
        .
        .
    ]
}
  • Every Insights request must specify the model attribute and, for the SSIMPLUS® VOD Monitor product, its value should always be vod_monitor.
  • Every Insights request must specify a view attribute (see Supported Views below).
  • Every Insights request should specify a list of view fields whose data will be included in the response. A field is specified using the <view>.<field_name> notiation.
  • An Insights request may specify a list of filters which are view fields that are constrained to various values and/or ranges in order to limit/control the data retrieved. The most common filter to use here is <view>.analysis_uuid, which constrains the results to a single analysis UUID (see example above). Filters become invaluable when your Insights responses return large datasets, as is the case when fetching frame results.
  • An Insights request may specify a list of sorts which are view fields that control the sort order applied to the data in the response. Sorting is particularly useful when retrieving results in a time series.
Important

The examples provided in this sections below use cURL to send requests to the Insights REST API. When learning and/or experimenting with the Insights REST API, you may find it preferrable and easier to use a GUI tool like Postman to submit requests and view their responses. SSIMWAVE has created a Postman API collection and envionment which can be imported and used directly in Postman to aid in this effort. The structure of the Postman collection is meant to be a useful sampling/representation of the various examples presented in the sections below.

Supported views

For the SSIMPLUS® VOD Monitor product, Insights supports the following views:

View Details
vod_analysis_results This view exposes fields to capture the various SSIMPLUS® measurements and metrics (e.g. SVS, EPS, SBS, CVD, CCM, physical and visual noise, HDR color gamut and luminance) for an analysis over multiple measurement periods (1s, 2s, 5s, 10s, 30s, 60s) and aggregate calculations (min, max, avg), thus enabling one to create a comprehensive time-series view of any supported measurement or metric.

Additionally, this view exposes a subview, vod_video_asset_score, that exposes fields to capture the various asset scores (e.g. SVS, EPS, SBS and CCS) for an analysis.
vod_analysis_frame_results This view exposes fields to capture the various SSIMPLUS® measurements and metrics (e.g. SVS, EPS, SBS, CVD, CCM, physical and visual noise, HDR color gamut and luminance) for each frame of the assets included in an analysis.
vod_quality_checks This view exposes fields to capture the various video quality checks, asset audio quality checks and asset score checks supported by SSIMPLUS® VOD Monitor.
vod_audio_loudness This view exposes fields to capture various audio loudness measurements and metrics (e.g. integrated loudness, loudness range, momentary loudness, short-term loudness, true peak level) for the assets included in an analysis.
vod_closed_captions_metadata This view exposes fields to capture the periods of missing closed captions metadata for the assets included in an analysis.
vod_video_metadata This view exposes fields to capture the video metadata (e.g. title, resolution, dynamic range, encoder, frame rate, time base, aspect ratio, frame count, color primaries and space, color transfer characteristics and content/frame light levels) for the assets included in an analysis.
vod_audio_metadata This view exposes fields to capture the various audio metadata (e.g. stream index/pid, channel count, channel layout, channel assignment, codec, coding mode, language, sample rate, Dolby Atmos bed channels, Dolby Atmos dynamic objects, IMF MCA audio content/element, quantization bits etc.) for the assets included in an analysis.
vod_cadence_pattern This view exposes fields to capture metadata about the various video cadence pattern detected (e.g. start/end time, duration, pattern, pattern offset etc.) for the assets included in an analysis.
vod_status_analysis This view exposes fields to capture a summary of the status of an analysis (e.g. percent done, test count, quality check failure count)
vod_status_test This view exposes fields to capture the current status of an analysis (e.g. percent done, current step/state)
vod_status_updates This view exposes fields to capture additional details associated with current status of an analysis (e.g. state details, error details)

The views above, along with the fields they support, are presented in more detail, along with some examples, in the sections below.

Common view fields

Most Insights views for the SSIMPLUS® VOD Monitor product expose several common fields which can be used to add detail and context to your Insights responses. Use the following list of common fields:

Field Name Details
organization The top level of the data topology.
site The second level of the data topology.
analysis_uuid The analysis ID
title The name/title of the video.
test_id The test ID of the asset (eg. 1, 1-1)
reference_file The path of the reference video (applies to FR analysis only)
reference_video Concatenation of the reference video path and identifier (applies to FR analysis only)
reference_video_no_path Concatenation of the reference video file (without path) and identifier (applies to FR analysis only)
reference_video_identifier The reference video identifier (applies to FR analysis only)
reference_video_json The JSON representation of the reference video, exactly as submitted into the API request (applies to FR analysis only)
test_file The path of the subject/test video
test_video Concatenation of the subject/test video path and identifier
test_video_no_path Concatenation of the subject/test video file (without path) and identifier
test_video_identifier The subject/test video identifier
test_video_json The JSON representation of the subject/test video, exactly as submitted into the API request
stream_index The index used to uniquely identify the stream (video/audio) in the test video
viewer_type The viewer type for which scores were calculated
device.device_name The device name
Note

In the rare case where a view doesn’t happen to support one of the common fields listed above, Insights will simply ignore field and omit it from the response.

Authentication

The Insights REST API is secured using OAuth 2.0 tokens. As such, you are required to submit a POST request to the login endpoint in order to receive an OAuth2 token, as shown below:

curl -X POST \
  https://insights.ssimwave.com/api/4.0/login \
  -header 'Accept: application/application/json' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'client_id=<clientID>&client_secret=<clientSecret>'

where <clientID> and <clientSecret> are the values you received when setting up your Insights account.

The alphanumeric OAuth2 token will be included in the payload of the response and labelled as access_token:

{
    "access_token": "4RtxmBmskRFfcnvJXjVdXHZbWDbwCdrHHJH8qJNp",
    "token_type": "Bearer",
    "expires_in": 3600
}

The OAuth2 token must be included as a Bearer token in the Authorization header for all requests sent to an Insights REST API endpoint, as shown below:

curl -X POST \
  https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false \
  -H 'Authorization: Bearer 4RtxmBmskRFfcnvJXjVdXHZbWDbwCdrHHJH8qJNp'
  .
  .
  .

Each OAuth2 token expires after 1 hour, regardless of activity. To obtain a new token, you will need to resubmit the POST request to the login endpoint.

Note

The examples in this section use cURL to illustrate sending requests to the Insights REST API. The Bearer tokens used in the headers are for illustrative purposes only and should be replaced by the access_token you receive from the /login endpoint, as presented above.

Analysis Results

The focus of this section is on the options for retrieving video and audio SSIMPLUS® measurements and metrics from a given analysis. To that end, the discussion will center largely around the following Insights views:

View Details
vod_analysis_results This view exposes fields to capture the various SSIMPLUS® measurements and metrics (e.g. SVS, EPS, SBS, CVD, CCM, physical and visual noise, HDR color gamut and luminance) for an analysis over multiple measurement periods (1s, 2s, 5s, 10s, 30s, 60s) and aggregate calculations (min, max, avg), thus enabling one to create a comprehensive time-series view of any supported measurement or metric.

Additionally, this view exposes a subview, vod_video_asset_score, that exposes fields to capture the various asset scores (e.g. SVS, EPS, SBS and CCS) for an analysis.
vod_analysis_frame_results This view exposes fields to capture the various SSIMPLUS® measurements and metrics (e.g. SVS, EPS, SBS, CVD, CCM, physical and visual noise, HDR color gamut and luminance) for each frame of the assets included in an analysis.
vod_audio_loudness This view exposes fields to capture various audio loudness measurements and metrics (e.g. integrated loudness, loudness range, momentary loudness, short-term loudness, true peak level) for the assets included in an analysis.
vod_cadence_pattern This view exposes fields to capture metadata about the various video cadence pattern detected (e.g. start/end time, duration, pattern, pattern offset etc.) for the assets included in an analysis.
SSIMPLUS® Asset Scores

A SSIMPLUS® Asset Score is a summary metric that provides a single value for an entire asset that is more accurate than peforming the mathematical average of the underlying frame scores. SSIMPLUS® VOD Monitor provides Asset Scores for the following metrics:

  • SSIMPLUS® Viewer Score (SVS),
  • SSIMPLUS® Encoder Performance Score (EPS),
  • SSIMPLUS® Banding Score (SBS) and
  • SSIMPLUS® Content Complexity Score (CCS).

Using the SSIMPLUS® Analyzer REST API, we can submit a full-reference analysis that configures the SSIMPLUS® Analyzer to capture SBS and CCS in addition to SVS and EPS, that are captured by default, as shown below:

curl --location 'https://research1.ssimwave.lan/api/vod/v1/analyses' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
  "content": {
    "title": "Dog Running FR - Asset Scores"
  },
  "referenceAssets": [
    {
      "name": "dog_running.mp4",
      "path": "royalty_free/dog_running/source",
      "storageLocation": {
        "type": "PVC",
        "name": "video-files-pvc"
      }
    }
  ],
  "subjectAssets": [
    {
      "name": "dog_running_1080_h264_qp_31.mp4",
      "path": "royalty_free/dog_running/outputs",
      "storageLocation": {
        "type": "PVC",
        "name": "video-files-pvc"
      }
    },
    {
      "name": "dog_running_1080_h264_qp_41.mp4",
      "path": "royalty_free/dog_running/outputs",
      "storageLocation": {
        "type": "PVC",
        "name": "video-files-pvc"
      }
    }
  ],
  "analyzerConfig": {
    "enableBandingDetection": true,
    "enableComplexityAnalysis": true,
    "viewingEnvironments": [
      {
        "device": {
          "name": "oled65c9pua"
        },
        "viewerType": "TYPICAL"
      }
    ]
  }
}'

Asset SVS, EPS, SBS and CCS are exposed as fields on the vod_video_asset_score view, which is a subview of the vod_analysis_results view and can be fetched from Insights as shown below:

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer NPp7SWngHvMXYJsyPRNQXc6nKGgZ4Dx7FFWsb9S5' \
--data '{
  "model": "vod_monitor",
  "view": "vod_analysis_results",
  "fields": [
    "vod_analysis_results.test_id",
    "device.device_name",
    "vod_analysis_results.reference_video",
    "vod_analysis_results.test_video",
    "vod_video_asset_score.asset_ssimplus_viewer_score",
    "vod_video_asset_score.asset_encoder_performance_score",
    "vod_video_asset_score.asset_banding",
    "vod_video_asset_score.asset_content_complexity"
  ],
  "filters": {
    "vod_analysis_results.analysis_uuid": "de66d3ab-7469-476b-9d15-965e173811ce"
  },
  "sorts": [
    "vod_analysis_results.test_id"
  ]
}'

The JSON response payload is as follows:

[
  {
    "vod_analysis_results.analysis_uuid": "de66d3ab-7469-476b-9d15-965e173811ce",
    "vod_analysis_results.test_id": "1",
    "device.device_name": "OLED65C9PUA",
    "vod_analysis_results.reference_video": null,
    "vod_analysis_results.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_video_asset_score.asset_ssimplus_viewer_score": 95.375,
    "vod_video_asset_score.asset_encoder_performance_score": null,
    "vod_video_asset_score.asset_banding": 0,
    "vod_analysis_results.asset_content_complexity": 37.4
  },
  {
    "vod_analysis_results.analysis_uuid": "de66d3ab-7469-476b-9d15-965e173811ce",
    "vod_analysis_results.test_id": "1-1",
    "device.device_name": "OLED65C9PUA",
    "vod_analysis_results.reference_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_analysis_results.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_31.mp4",
    "vod_video_asset_score.asset_ssimplus_viewer_score": 83.416,
    "vod_video_asset_score.asset_encoder_performance_score": 88.02,
    "vod_video_asset_score.asset_banding": 18.2,
    "vod_analysis_results.asset_content_complexity": null
  },
  {
    "vod_analysis_results.analysis_uuid": "de66d3ab-7469-476b-9d15-965e173811ce",
    "vod_analysis_results.test_id": "1-2",
    "device.device_name": "OLED65C9PUA",
    "vod_analysis_results.reference_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_analysis_results.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_41.mp4",
    "vod_video_asset_score.asset_ssimplus_viewer_score": 60.048,
    "vod_video_asset_score.asset_encoder_performance_score": 60.057,
    "vod_video_asset_score.asset_banding": 42.6,
    "vod_analysis_results.asset_content_complexity": null
  }
]

We can make the following conclusions regarding the values above:

  • The reference asset (dog_running.mp4) is a reasonably high quality asset as its Asset SVS score of 95 and Asset SBS of 0 places it in the excellent category where impairments, including color banding, are imperceptable for the typical viewer.
  • The 1-1 subject/test asset (dog_running_1080_h264_qp_31.mp4) qualifies as an excellent encode as its Asset SVS is above 80 and, although it has some banding, its Asset SBS of 18.2 falls into the imperceptible category. The Asset EPS of 88 indicates that the encoder did an excellent job of maintaining the reference quality.
  • The 1-2 subject/test asset (dog_running_1080_h264_qp_41.mp4) qualifies as a fair encode as its Asset SVS is only 60 and its Asset SBS of 42 means that the color banding is creeping into the slight annoying category. The Asset EPS score of 60 indicates that the encoder did not do a very good job of maintaining the reference quality, especially considering that the content complexity score of the reference (Asset CCS) is reasonably low at only 37.
  • The example above is purposefully terse in order to illustrate the fetching of Asset Scores. The vod_analysis_results has many additional fields that may of interest to include in your response. Please refer to Supported analysis results fields for details.
Note

For full-reference analyses, the Asset CCS is computed only on the (SDR) reference asset.

Time series results

When you’re interested in a more granular treatment of the SSIMPLUS® scores for a given asset, you’ll want to use the measurement period fields provided on the vod_analysis_results view in order to build a time series view of your asset’s scores.

Using the SSIMPLUS® Analyzer REST API, let’s submit a no-reference analysis for an HDR asset that configures the SSIMPLUS® Analyzer to capture color information and statistics, in addition to banding, as shown below:

curl --location 'https://research1.ssimwave.lan/api/vod/v1/analyses' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
  "content": {
    "title": "HDR NR Test"
  },
  "subjectAssets": [
    {
      "name": "samsung-demo-reel-version-a.mp4",
      "path": "content-similarity-assets/UHD-HDR-MP4-samsung-demo-reel",
      "storageLocation": {
        "type": "PVC",
        "name": "on-201"
      },
      "hdr": true
    }
  ],
  "analyzerConfig": {
    "enableBandingDetection": true,
    "enableColorInformation": true,
    "enableColorStatsCollection": true,
    "viewingEnvironments": [
      {
        "device": {
          "name": "oled65c9pua"
        },
        "viewerType": "TYPICAL"
      }
    ]
  }
}'

Next, let’s fetch our analysis results from Insights, including color gamut and luminance data, in a time series view using a measurement period of 2s:

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 9tVkH455J5Z8X5jGVDBpRbSwBJz5f7vcHTftRv7K' \
--data '{
  "model": "vod_monitor",
  "view": "vod_analysis_results",
  "fields": [
    "vod_analysis_results.analysis_uuid",
    "vod_analysis_results.test_video_time_2s",
    "vod_analysis_results.test_video",
    "vod_analysis_results.ssimplus_viewer_score",
    "vod_analysis_results.max_ssimplus_viewer_score",
    "vod_analysis_results.min_ssimplus_viewer_score",
    "vod_analysis_results.avg_banding",
    "vod_analysis_results.max_banding",
    "vod_analysis_results.min_banding",
    "vod_analysis_results.color_primaries",
    "vod_analysis_results.color_space",
    "vod_analysis_results.color_transfer_characteristics",
    "vod_analysis_results.max_content_light_level",
    "vod_analysis_results.max_frame_average_light_level",
    "vod_analysis_results.color_gamut",
    "vod_analysis_results.color_gamut_rec709",
    "vod_analysis_results.color_gamut_p3d65",
    "vod_analysis_results.color_gamut_rec2020",
    "vod_analysis_results.color_gamut_unknown",
    "vod_analysis_results.max_pixel_luminance",
    "vod_analysis_results.min_pixel_luminance",
    "vod_analysis_results.avg_frame_luminance",
    "vod_analysis_results.max_frame_luminance",
    "vod_analysis_results.min_frame_luminance",
    "vod_analysis_results.frame_count"
  ],
  "filters": {
    "vod_analysis_results.analysis_uuid": "b9b437a7-f966-4e2b-8bb4-02d9cd1aa2a8"
  },
  "sorts": [
    "vod_analysis_results.test_video_time_2s"
  ]
}'

The abbreviated JSON response payload is as follows:

[
  {
    "vod_analysis_results.analysis_uuid": "b9b437a7-f966-4e2b-8bb4-02d9cd1aa2a8",
    "vod_analysis_results.test_video_time_2s": "00:00:02",
    "vod_analysis_results.test_video": "file:///mnt/on-201/content-similarity-assets/UHD-HDR-MP4-samsung-demo-reel/samsung-demo-reel-version-a.mp4",
    "vod_analysis_results.color_primaries": "bt2020",
    "vod_analysis_results.color_space": "bt2020nc",
    "vod_analysis_results.color_transfer_characteristics": "smpte2084",
    "vod_analysis_results.max_content_light_level": 1000,
    "vod_analysis_results.max_frame_average_light_level": 1000,
    "vod_analysis_results.ssimplus_viewer_score": 97.9375,
    "vod_analysis_results.max_ssimplus_viewer_score": 98,
    "vod_analysis_results.min_ssimplus_viewer_score": 97.875,
    "vod_analysis_results.avg_banding": 53.6875,
    "vod_analysis_results.max_banding": 56,
    "vod_analysis_results.min_banding": 50,
    "vod_analysis_results.color_gamut": "P3D65",
    "vod_analysis_results.color_gamut_rec709": 0,
    "vod_analysis_results.color_gamut_p3d65": 48,
    "vod_analysis_results.color_gamut_rec2020": 0,
    "vod_analysis_results.color_gamut_unknown": 0,
    "vod_analysis_results.max_pixel_luminance": 10000,
    "vod_analysis_results.min_pixel_luminance": 0,
    "vod_analysis_results.avg_frame_luminance": 281.4792,
    "vod_analysis_results.max_frame_luminance": 283,
    "vod_analysis_results.min_frame_luminance": 280,
    "vod_analysis_results.frame_count": 48
  },
  {
    "vod_analysis_results.analysis_uuid": "b9b437a7-f966-4e2b-8bb4-02d9cd1aa2a8",
    "vod_analysis_results.test_video_time_2s": "00:00:04",
    "vod_analysis_results.test_video": "file:///mnt/on-201/content-similarity-assets/UHD-HDR-MP4-samsung-demo-reel/samsung-demo-reel-version-a.mp4",
    "vod_analysis_results.color_primaries": "bt2020",
    "vod_analysis_results.color_space": "bt2020nc",
    "vod_analysis_results.color_transfer_characteristics": "smpte2084",
    "vod_analysis_results.max_content_light_level": 1000,
    "vod_analysis_results.max_frame_average_light_level": 1000,
    "vod_analysis_results.ssimplus_viewer_score": 97.9165,
    "vod_analysis_results.max_ssimplus_viewer_score": 98,
    "vod_analysis_results.min_ssimplus_viewer_score": 97.833,
    "vod_analysis_results.avg_banding": 55.7083,
    "vod_analysis_results.max_banding": 61,
    "vod_analysis_results.min_banding": 52,
    "vod_analysis_results.color_gamut": "P3D65",
    "vod_analysis_results.color_gamut_rec709": 0,
    "vod_analysis_results.color_gamut_p3d65": 48,
    "vod_analysis_results.color_gamut_rec2020": 0,
    "vod_analysis_results.color_gamut_unknown": 0,
    "vod_analysis_results.max_pixel_luminance": 9043,
    "vod_analysis_results.min_pixel_luminance": 0,
    "vod_analysis_results.avg_frame_luminance": 280.0417,
    "vod_analysis_results.max_frame_luminance": 281,
    "vod_analysis_results.min_frame_luminance": 279,
    "vod_analysis_results.frame_count": 48
  },
  {
    "vod_analysis_results.analysis_uuid": "b9b437a7-f966-4e2b-8bb4-02d9cd1aa2a8",
    "vod_analysis_results.test_video_time_2s": "00:00:06",
    "vod_analysis_results.test_video": "file:///mnt/on-201/content-similarity-assets/UHD-HDR-MP4-samsung-demo-reel/samsung-demo-reel-version-a.mp4",
    "vod_analysis_results.color_primaries": "bt2020",
    "vod_analysis_results.color_space": "bt2020nc",
    "vod_analysis_results.color_transfer_characteristics": "smpte2084",
    "vod_analysis_results.max_content_light_level": 1000,
    "vod_analysis_results.max_frame_average_light_level": 1000,
    "vod_analysis_results.ssimplus_viewer_score": 96.5925,
    "vod_analysis_results.max_ssimplus_viewer_score": 98,
    "vod_analysis_results.min_ssimplus_viewer_score": 95.185,
    "vod_analysis_results.avg_banding": 45.3542,
    "vod_analysis_results.max_banding": 60,
    "vod_analysis_results.min_banding": 28,
    "vod_analysis_results.color_gamut": "P3D65",
    "vod_analysis_results.color_gamut_rec709": 0,
    "vod_analysis_results.color_gamut_p3d65": 48,
    "vod_analysis_results.color_gamut_rec2020": 0,
    "vod_analysis_results.color_gamut_unknown": 0,
    "vod_analysis_results.max_pixel_luminance": 8835,
    "vod_analysis_results.min_pixel_luminance": 0,
    "vod_analysis_results.avg_frame_luminance": 236.8125,
    "vod_analysis_results.max_frame_luminance": 282,
    "vod_analysis_results.min_frame_luminance": 184,
    "vod_analysis_results.frame_count": 48
  },
  .
  .
  .
]

Notice in the results above:

  • We have one result in the response for each 2s measurement period (i.e. 2s, 4s, 6s etc).
  • Insights provides the mathematical average, minimum and maximum for the various metrics and measurements requested. These values are calculated using the values of all the underlying frames that make up the measurement period (i.e. a frame count of 48 frames in the example above).
  • We choose to sort the results based off the chosen measurement period (i.e. vod_analysis_results.test_video_time_2s)
Important

When fetching scores for a full-reference (FR) time series view, you are strongly encouraged to use reference video time fields (e.g. vod_analysis_results.reference_video_time_1s) as your only time-based sort field as the reference time should always be the x-axis. You are also cautioned not to mix different measurement periods between the reference and test.

When fetching scores for a no-reference (NR) time series view, you are strongly encouraged to use test video time fields (e.g. vod_analysis_results.test_video_time_1s) as your only time-based sort field.

Supported view fields

The vod_analysis_results view exposes fields and subviews (e.g. vod_video_asset_score) to capture the various SSIMPLUS® measurements and metrics for an analysis over an entire asset (i.e. Asset Scores) and/or various measurement periods (time series). The following subsections lists the various fields of interest on the vod_analysis_results view (and its subviews) that can be used in the body of any request sent to the Insights REST API.

Metrics and measurements

The Insights vod_analysis_results view exposes the following list of fields:

Metric/Measurement Field Details
vod_analysis_results.end_time The time when the analysis completed
vod_analysis_results.avg_bitrate The average bitrate of the video
vod_analysis_results.max_bitrate The maximum bitrate of the video
vod_analysis_results.min_bitrate The minimum bitrate of the video
vod_analysis_results.ssimplus_viewer_score The SSIMPLUS® Viewer Score over the aggregated number of frames.
vod_analysis_results.max_frame_ssimplus_viewer_score The maximum per frame SSIMPLUS® Viewer Score over the aggregated number of frames.
vod_analysis_results.min_ssimplus_viewer_score The minimum SSIMPLUS® Viewer Score over the aggregated number of frames.
vod_analysis_results.encoder_performance_score The Encoder Performance Score over the aggregated number of frames.
vod_analysis_results.min_encoder_performance_score The minimum Encoder Performance Score over the aggregated number of frames.
vod_analysis_results.max_encoder_performance_score The maximum Encoder Performance Score over the aggregated number of frames.
vod_analysis_results.avg_banding The average amount of banding during the aggregated number of frames
vod_analysis_results.max_banding The maximum measure of banding during the aggregated number of frames
vod_analysis_results.min_banding The minimum measure of banding during the aggregated number of frames
vod_analysis_results.avg_content_complexity The average content complexity over the aggregated number of frames.
vod_analysis_results.min_content_complexity The minimum content complexity over the aggregated number of frames.
vod_analysis_results.max_content_complexity The maximum content complexity over the aggregated number of frames.
vod_analysis_results.avg_psnr The average PSNR value measured during the aggregated number of frames
vod_analysis_results.max_psnr The maximum PSNR value measured during the aggregated number of frames
vod_analysis_results.min_psnr The minimum PSNR value measured during the aggregated number of frames
vod_analysis_results.avg_vmaf The average VMAF value measured during the aggregated number of frames
vod_analysis_results.max_vmaf The maximum VMAF value measured during the aggregated number of frames
vod_analysis_results.min_vmaf The minimum VMAF value measured during the aggregated number of frames
vod_analysis_frame_results.color_transfer_characteristics The transfer characteristics (e.g. smpte2084) extracted from the video metadata
vod_analysis_results.avg_color_volume_difference The average BT2124 color difference value measured during the aggregated number of frames
vod_analysis_results.max_color_volume_difference The maximum BT2124 color difference value measured during the aggregated number of frames
vod_analysis_results.min_color_volume_difference The minimum BT2124 color difference value measured during the aggregated number of frames
vod_analysis_results.color_gamut The overall detected color gamnut for the frame, set of frames, or asset
vod_analysis_results.color_gamut_rec709 The number of frames where the Rec.705 color space was detected
vod_analysis_results.color_gamut_p3d65 The number of frames where the P3D65 color space was detected
vod_analysis_results.color_gamut_rec2020 The number of frames where the Rec.2020 color space was detected
vod_analysis_results.color_gamut_unknown The number of frames where a known color gamut could not be detected
vod_analysis_results.min_pixel_luminance The lowest measured pixel light level (in nits) in all of the aggregated frames
vod_analysis_results.max_pixel_luminance The highest measured pixel light level (in nits) in all of the aggregated frames. MaxCLL (Maximum Content Light Level) is the value of this field across an entire asset.
vod_analysis_results.avg_frame_luminance The average frame light level (average of the frame’s pixel light levels, in nits) of the aggregated frames.
vod_analysis_results.min_frame_luminance The lowest measured frame light level (average of the frame’s pixel light levels, in nits) in all of the aggregated frames
vod_analysis_results.max_frame_luminance The highest measured frame light level (average of the frame’s pixel light levels, in nits) in all of the aggregated frames. MaxFALL (Maximum Frame Average Light Level) is the value of this field across an entire asset.
vod_analysis_results.avg_visual_noise The average visual noise value measured during the aggregated number of frames
vod_analysis_results.min_visual_noise The minimum visual noise value measured during the aggregated number of frames
vod_analysis_results.max_visual_noise The maximum visual noise value measured during the aggregated number of frames
vod_analysis_results.avg_physical_noise The average physical noise value measured during the aggregated number of frames
vod_analysis_results.min_physical_noise The minimum physical noise value measured during the aggregated number of frames
vod_analysis_results.max_physical_noise The maximum physical noise value measured during the aggregated number of frames

And the following filter-only fields:

Metric/Measurement Field Details
vod_analysis_results.use_smpte_timecode Apply the SMPTE start timecode to time value fields

Measurement periods

Insights supports the following measurement period fields:

Measurement Period Field Details
vod_analysis_results.reference_video_time_1s The reference video time in 1 second intervals
vod_analysis_results.test_video_time_1s The test video time in 1 second intervals
vod_analysis_results.reference_video_time_2s The reference video time in 2 second intervals
vod_analysis_results.test_video_time_2s The test video time in 2 second intervals
vod_analysis_results.reference_video_time_5s The reference video time in 5 second intervals
vod_analysis_results.test_video_time_5s The test video time in 5 second intervals
vod_analysis_results.reference_video_time_10s The reference video time in 10 second intervals
vod_analysis_results.test_video_time_10s The test video time in 10 second intervals
vod_analysis_results.reference_video_time_30s The reference video time in 30 second intervals
vod_analysis_results.test_video_time_30s The test video time in 30 second intervals
vod_analysis_results.reference_video_time_min The reference video time in 1 minute intervals
vod_analysis_results.test_video_time_min The test video time in 1 minute intervals
Frame results

For some use cases, it may prove desirable to fetch the requested SSIMPLUS® measurements and metrics for each frame in your analyzed assets. Frame level data is provided using the vod_analysis_frame_results view.

Using the SSIMPLUS® Analyzer REST API, we can submit a full-reference analysis for HDR assets that configures the SSIMPLUS® Analyzer to capture color information and statistics, in addition to SBS (color banding), EPS (encoder performance) and CVD (color volume differncing), as shown below:

curl --location 'https://research1.ssimwave.lan/api/vod/v1/analyses' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
  "content": {
    "title": "HDR FR Demo"
  },
  "referenceAssets": [
    {
      "hdr": true,
      "name": "demo1_hdr10_ref.mp4",
      "storageLocation": {
        "type": "PVC",
        "name": "on-201"
      },
      "path": "demo/encode_validation/HDR_demo"
    }
  ],
  "subjectAssets": [
    {
      "hdr": true,
      "name": "demo1_hdr10_test_cbr_1920x1080_5400kbps.mp4",
      "storageLocation": {
        "type": "PVC",
        "name": "on-201"
      },
      "path": "demo/encode_validation/HDR_demo"
    }
  ],
  "analyzerConfig": {
    "enableBandingDetection": true,
    "enableColorInformation": true,
    "enableColorStatsCollection": true,
    "enableColorVolumeDifference": true,
    "viewingEnvironments": [
      {
        "device": {
          "name": "oled65c9pua"
        },
        "viewerType": "TYPICAL"
      },
      {
        "device": {
          "name": "ssimpluscore"
        },
        "viewerType": "TYPICAL"
      },
      {
        "device": {
          "name": "xl2420t"
        },
        "viewerType": "TYPICAL"
      }
    ]
  }
}'

The following Insights request fetches the SVS, EPS, SBS and CVD scores along with the color gamut and pixel and frame luminance values for every frame:

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 29RJCp5vn6WVt68rj4XMqh3dmyHcFbBxzD2WsM9J' \
--data '{
  "model": "vod_monitor",
  "view": "vod_analysis_frame_results",
  "fields": [
    "vod_analysis_frame_results.analysis_uuid",
    "vod_analysis_frame_results.reference_video",
    "vod_analysis_frame_results.test_video",
    "vod_analysis_frame_results.test_id",
    "vod_analysis_frame_results.reference_video_time_1frame",
    "vod_analysis_frame_results.test_video_time_1frame",
    "vod_analysis_frame_results.avg_encoder_performance_score",
    "vod_analysis_frame_results.avg_ssimplus_viewer_score",
    "vod_analysis_frame_results.avg_banding",
    "vod_analysis_frame_results.color_primaries",
    "vod_analysis_frame_results.color_space",
    "vod_analysis_frame_results.color_transfer_characteristics",
    "vod_analysis_frame_results.color_gamut",
    "vod_analysis_frame_results.avg_color_volume_difference",
    "vod_analysis_frame_results.avg_pixel_luminance",
    "vod_analysis_frame_results.min_pixel_luminance",
    "vod_analysis_frame_results.min_pixel_luminance_x",
    "vod_analysis_frame_results.min_pixel_luminance_y",
    "vod_analysis_frame_results.max_pixel_luminance",
    "vod_analysis_frame_results.max_pixel_luminance_x",
    "vod_analysis_frame_results.max_pixel_luminance_y",
    "vod_analysis_frame_results.avg_frame_luminance",
    "device.device_name"
  ],
  "filters": {
    "vod_analysis_frame_results.analysis_uuid": "de66d3ab-7469-476b-9d15-965e173811ce"
  },
  "sorts": [
    "vod_analysis_frame_results.reference_video_time_1frame",
    "vod_analysis_frame_results.test_id"
  ]
}'

The snippet below represents a small sampling of the response output:

[
  .
  .
  {
    "vod_analysis_frame_results.analysis_uuid": "0e37bc9b-34ca-45ea-aaf5-da713fada956",
    "vod_analysis_frame_results.reference_video": null,
    "vod_analysis_frame_results.test_video": "file:///mnt/on-201/demo/encode_validation/HDR_demo/demo1_hdr10_ref.mp4",
    "vod_analysis_frame_results.test_id": "1",
    "vod_analysis_frame_results.reference_video_time_1frame": "00:00:04:23",
    "vod_analysis_frame_results.test_video_time_1frame": "00:00:04:23",
    "vod_analysis_frame_results.color_primaries": "bt2020",
    "vod_analysis_frame_results.color_space": "bt2020nc",
    "vod_analysis_frame_results.color_transfer_characteristics": "smpte2084",
    "device.device_name": "OLED65C9PUA",
    "vod_analysis_frame_results.avg_encoder_performance_score": null,
    "vod_analysis_frame_results.avg_ssimplus_viewer_score": 100,
    "vod_analysis_frame_results.avg_banding": 50,
    "vod_analysis_frame_results.color_gamut": "P3D65",
    "vod_analysis_frame_results.avg_color_volume_difference": null,
    "vod_analysis_frame_results.min_pixel_luminance": 0,
    "vod_analysis_frame_results.min_pixel_luminance_x": 1170,
    "vod_analysis_frame_results.min_pixel_luminance_y": 0,
    "vod_analysis_frame_results.max_pixel_luminance": 749,
    "vod_analysis_frame_results.max_pixel_luminance_x": 2490,
    "vod_analysis_frame_results.max_pixel_luminance_y": 1028,
    "vod_analysis_frame_results.avg_frame_luminance": 37
  },
  {
    "vod_analysis_frame_results.analysis_uuid": "0e37bc9b-34ca-45ea-aaf5-da713fada956",
    "vod_analysis_frame_results.reference_video": "file:///mnt/on-201/demo/encode_validation/HDR_demo/demo1_hdr10_ref.mp4",
    "vod_analysis_frame_results.test_video": "file:///mnt/on-201/demo/encode_validation/HDR_demo/demo1_hdr10_test_cbr_1920x1080_5400kbps.mp4",
    "vod_analysis_frame_results.test_id": "1-1",
    "vod_analysis_frame_results.reference_video_time_1frame": "00:00:04:23",
    "vod_analysis_frame_results.test_video_time_1frame": "00:00:04:23",
    "vod_analysis_frame_results.color_primaries": "bt2020",
    "vod_analysis_frame_results.color_space": "bt2020nc",
    "vod_analysis_frame_results.color_transfer_characteristics": "smpte2084",
    "device.device_name": "OLED65C9PUA",
    "vod_analysis_frame_results.avg_encoder_performance_score": 92,
    "vod_analysis_frame_results.avg_ssimplus_viewer_score": 89,
    "vod_analysis_frame_results.avg_banding": 23,
    "vod_analysis_frame_results.color_gamut": "P3D65",
    "vod_analysis_frame_results.avg_color_volume_difference": 8.52735,
    "vod_analysis_frame_results.min_pixel_luminance": 0,
    "vod_analysis_frame_results.min_pixel_luminance_x": 1198,
    "vod_analysis_frame_results.min_pixel_luminance_y": 0,
    "vod_analysis_frame_results.max_pixel_luminance": 1237,
    "vod_analysis_frame_results.max_pixel_luminance_x": 300,
    "vod_analysis_frame_results.max_pixel_luminance_y": 674,
    "vod_analysis_frame_results.avg_frame_luminance": 37
  },
  .
  .
]

Please note the following about the Insights request and response above:

  • While the vod_analysis_frame_results view exposes fields for the average, minimum and maximum values for most of the SSIMPLUS® measurements and metrics, one need only request the average (e.g. avg_ssimplus_viewer_score) since the granularity of this view is already at the lowest (i.e. frame) level. Requesting the minimum and maximum fields will result in identical values to that of the average.
  • Where pixel values are provided, however, average, minimum and maximum will have proper meaning and different results (i.e. see avg/min/max_pixel_luminance above).
  • The vod_analysis_frame_results view exposes two fields, reference_video_time_1frame and test_video_time_1frame, to capture the respective time within the reference and subject/test videos. These time fields are of the format HH:MM:SS:FF, where FF is the frame number within the given second and the possible values depend on the framerate of the underlying asset.
Warning

While there is no limit on the size of a given response from the Insights REST API, be aware that fetching all frame scores for an analysis may result in extremely large responses that size in megabytes, depending on the number of assets in your analysis, the length of the assets, the framerate of the assets and the number of devices scored.

As with all other queries submitted to the Insights REST API, you are encouraged to use filters to help reduce the size of your results and focus on specific parts of your data set. Using the query above, we can add a subject/test asset filter (i.e. vod_analysis_frame_results.test_id) and device filter (i.e. device.device_name) to return all the frame scores just for the subject/test asset identified by 1-1 and the OLED65C9PUA device:

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 29RJCp5vn6WVt68rj4XMqh3dmyHcFbBxzD2WsM9J' \
--data '{
  "model": "vod_monitor",
  "view": "vod_analysis_frame_results",
  "fields": [
    "vod_analysis_frame_results.analysis_uuid",
    "vod_analysis_frame_results.reference_video",
    "vod_analysis_frame_results.test_video",
    "vod_analysis_frame_results.test_id",
    "vod_analysis_frame_results.reference_video_time_1frame",
    "vod_analysis_frame_results.test_video_time_1frame",
    "vod_analysis_frame_results.avg_encoder_performance_score",
    "vod_analysis_frame_results.avg_ssimplus_viewer_score",
    "vod_analysis_frame_results.avg_banding",
    "vod_analysis_frame_results.color_primaries",
    "vod_analysis_frame_results.color_space",
    "vod_analysis_frame_results.color_transfer_characteristics",
    "vod_analysis_frame_results.color_gamut",
    "vod_analysis_frame_results.avg_color_volume_difference",
    "vod_analysis_frame_results.avg_pixel_luminance",
    "vod_analysis_frame_results.min_pixel_luminance",
    "vod_analysis_frame_results.min_pixel_luminance_x",
    "vod_analysis_frame_results.min_pixel_luminance_y",
    "vod_analysis_frame_results.max_pixel_luminance",
    "vod_analysis_frame_results.max_pixel_luminance_x",
    "vod_analysis_frame_results.max_pixel_luminance_y",
    "vod_analysis_frame_results.avg_frame_luminance",
    "device.device_name"
  ],
  "filters": {
    "vod_analysis_frame_results.analysis_uuid": "de66d3ab-7469-476b-9d15-965e173811ce",
    "vod_analysis_frame_results.test_id": "1-1",
    "device.device_name": "OLED65C9PUA"
  },
  "sorts": [
    "vod_analysis_frame_results.reference_video_time_1frame",
    "vod_analysis_frame_results.test_id"
  ]
}'

Supported view fields

The vod_analysis_frame_results view exposes fields to capture the various SSIMPLUS® measurements and metrics (e.g. SVS, EPS, SBS, CVD, CCM, physical and visual noise, HDR color gamut and luminance) for each frame of the assets included in an analysis. The following section lists the various fields of interest on the vod_analysis_frame_results view that can be used in the body of any request sent to the Insights REST API.

Metric/Measurement Field Details
vod_analysis_frame_results.reference_video_time_1frame The reference video time with frame number within each second
vod_analysis_frame_results.test_video_time_1frame The test video time with frame number within each second
vod_analysis_frame_results.end_time The time when the analysis completed
vod_analysis_frame_results.color_gamut The overall detected color gamnut for the frame, set of frames, or asset
vod_analysis_frame_results.color_gamut_rec709 The number of frames where the Rec.705 color space was detected
vod_analysis_frame_results.color_gamut_p3d65 The number of frames where the P3D65 color space was detected
vod_analysis_frame_results.color_gamut_rec2020 The number of frames where the Rec.2020 color space was detected
vod_analysis_frame_results.color_gamut_unknown The number of frames where a known color gamut could not be detected
vod_analysis_frame_results.avg_color_volume_difference The average BT2124 color difference value measured during the aggregated number of frames
vod_analysis_frame_results.max_color_volume_difference The maximum BT2124 color difference value measured during the aggregated number of frames
vod_analysis_frame_results.min_color_volume_difference The minimum BT2124 color difference value measured during the aggregated number of frames
vod_analysis_frame_results.avg_visual_noise The average visual noise value measured during the aggregated number of frames
vod_analysis_frame_results.max_visual_noise The maximum visual noise value measured during the aggregated number of frames
vod_analysis_frame_results.min_visual_noise The minimum visual noise value measured during the aggregated number of frames
vod_analysis_frame_results.avg_physical_noise The average physical noise value measured during the aggregated number of frames
vod_analysis_frame_results.max_physical_noise The maximum physical noise value measured during the aggregated number of frames
vod_analysis_frame_results.min_physical_noise The minimum physical noise value measured during the aggregated number of frames
vod_analysis_frame_results.max_pixel_luminance The highest measured pixel light level (in nits) in all of the aggregated frames. MaxCLL (Maximum Content Light Level) is the value of this field across an entire asset.
vod_analysis_frame_results.max_pixel_luminance_x The image X coordinate of the highest measured pixel light level in the frame.
vod_analysis_frame_results.max_pixel_luminance_y The image Y coordinate of the highest measured pixel light level in the frame.
vod_analysis_frame_results.min_pixel_luminance The lowest measured pixel light level (in nits) in all of the aggregated frames
vod_analysis_frame_results.min_pixel_luminance_x The image X coordinate of the lowest measured pixel light level in the frame.
vod_analysis_frame_results.min_pixel_luminance_y The image Y coordinate of the lowest measured pixel light level in the frame.
vod_analysis_frame_results.avg_frame_luminance The average frame light level (average of the frame’s pixel light levels, in nits) of the aggregated frames.
vod_analysis_frame_results.max_frame_luminance The highest measured frame light level (average of the frame’s pixel light levels, in nits) in all of the aggregated frames. MaxFALL (Maximum Frame Average Light Level) is the value of this field across an entire asset.
vod_analysis_frame_results.min_frame_luminance The lowest measured frame light level (average of the frame’s pixel light levels, in nits) in all of the aggregated frames
vod_analysis_frame_results.avg_encoder_performance_score The average Encoder Performance Score over the aggregated number of frames.
vod_analysis_frame_results.max_encoder_performance_score The maximum Encoder Performance Score over the aggregated number of frames.
vod_analysis_frame_results.min_encoder_performance_score The minimum Encoder Performance Score over the aggregated number of frames.
vod_analysis_frame_results.avg_psnr The average PSNR value measured during the aggregated number of frames
vod_analysis_frame_results.max_psnr The maximum PSNR value measured during the aggregated number of frames
vod_analysis_frame_results.min_psnr The minimum PSNR value measured during the aggregated number of frames
vod_analysis_frame_results.avg_bytes The average number of bytes in a frame
vod_analysis_frame_results.max_bytes The maximum number of bytes in a frame
vod_analysis_frame_results.min_bytes The minimum number of bytes in a frame
vod_analysis_frame_results.avg_banding The average amount of banding during the aggregated number of frames
vod_analysis_frame_results.max_banding The maximum measure of banding during the aggregated number of frames
vod_analysis_frame_results.min_banding The minimum measure of banding during the aggregated number of frames
vod_analysis_frame_results.avg_vmaf The average VMAF value measured during the aggregated number of frames
vod_analysis_frame_results.max_vmaf The maximum VMAF value measured during the aggregated number of frames
vod_analysis_frame_results.min_vmaf The minimum VMAF value measured during the aggregated number of frames
vod_analysis_frame_results.avg_ssimplus_viewer_score The average SSIMPLUS® Viewer Score over the aggregated number of frames.
vod_analysis_frame_results.max_ssimplus_viewer_score The maximum SSIMPLUS® Viewer Score over the aggregated number of frames.
vod_analysis_frame_results.min_ssimplus_viewer_score The minimum SSIMPLUS® Viewer Score over the aggregated number of frames.

And the following filter-only fields:

Metric/Measurement Field Details
vod_analysis_results.use_smpte_timecode Apply the SMPTE start timecode to time value fields
vod_analysis_frame_results.time_mode Display real time or SMPTE timecode
vod_analysis_frame_results.use_drop_frame Enables/disables drop frames
Audio results

When audio measurement is enabled, each physical audio track within a video asset will be measured based off of the measurement standard configured within the audio object of the analysis submission. Using the SSIMPLUS® Analyzer REST API, we can submit a new analysis choosing to include an audio configuration object with any of the associated assets, an example of which is shown below:

{
  "audio": {
    "groups": [
      {
        "qualityCheckConfig": {
          "loudnessChecks": [
            {
              "checkType": "MIN_LOUDNESS_RANGE",
              "enabled": true,
              "threshold": 8
            },
            {
              "checkType": "MAX_LOUDNESS_RANGE",
              "enabled": true,
              "threshold": 30
            },
            {
              "checkType": "MAX_INTEGRATED_LOUDNESS",
              "enabled": true,
              "threshold": -2
            },
            {
              "checkType": "MAX_MOMENTARY_LOUDNESS",
              "enabled": true,
              "duration": 2,
              "skipStart": 1.25,
              "skipEnd": 1.25,
              "threshold": -2
            }
          ]
        },
        "loudnessMeasurements": {
          "algorithm": "ITU_BS_1770_3",
          "enabled": true
        }
      }
    ]
  }
}

In the current release only a single group is permitted. All configuration and quality checks are applied to all discovered physical audio tracks within the video asset. Future releases will add the following:

  • sidecar support,
  • performing measurements and quality checks on selectable tracks and
  • mixing of uncompressed audio channels from physical audio tracks to create a logical audio track for measurement and quality checks.

The audio loudness results can be fetched from Insights using the vod_audio_loudness view as shown below

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 9tVkH455J5Z8X5jGVDBpRbSwBJz5f7vcHTftRv7K' \
--data '{
  "model": "vod_monitor",
  "view": "vod_audio_loudness",
  "fields": [
    "vod_audio_loudness.analysis_uuid",
    "vod_audio_loudness.test_audio_time",
    "vod_audio_loudness.integrated_loudness",
    "vod_audio_loudness.loudness_range",
    "vod_audio_loudness.high_lra",
    "vod_audio_loudness.low_lra",
    "vod_audio_loudness.max_momentary_loudness",
    "vod_audio_loudness.min_momentary_loudness",
    "vod_audio_loudness.max_short_term_loudness",
    "vod_audio_loudness.min_short_term_loudness",
    "vod_audio_loudness.max_true_peak_channel_ch1",
    "vod_audio_loudness.min_true_peak_channel_ch1",
    "vod_audio_loudness.max_true_peak_channel_ch2",
    "vod_audio_loudness.min_true_peak_channel_ch2",
    "vod_audio_loudness.max_true_peak",
    "vod_audio_loudness.min_true_peak",
    "vod_audio_loudness.stream_index"
  ],
  "filters": {
    "vod_audio_loudness.analysis_uuid": "b8b634d3-11f5-4598-b842-9cde5d58c713"
  },
  "sorts": [
    "vod_audio_loudness.test_audio_time desc"
  ]
}'

The abbreviated JSON response payload is as follows:

[
  {
    "vod_audio_loudness.analysis_uuid": "b8b634d3-11f5-4598-b842-9cde5d58c713",
    "vod_audio_loudness.test_audio_time": "00:03:00",
    "vod_audio_loudness.stream_index": 1,
    "vod_audio_loudness.integrated_loudness": -23.53,
    "vod_audio_loudness.loudness_range": 4.14,
    "vod_audio_loudness.high_lra": -21.86,
    "vod_audio_loudness.low_lra": -26,
    "vod_audio_loudness.max_momentary_loudness": -22.52,
    "vod_audio_loudness.min_momentary_loudness": -25.05,
    "vod_audio_loudness.max_short_term_loudness": -22.87,
    "vod_audio_loudness.min_short_term_loudness": -23.27,
    "vod_audio_loudness.max_true_peak_channel_ch1": -19.58,
    "vod_audio_loudness.min_true_peak_channel_ch1": -31.7,
    "vod_audio_loudness.max_true_peak_channel_ch2": -19.66,
    "vod_audio_loudness.min_true_peak_channel_ch2": -31.7,
    "vod_audio_loudness.max_true_peak": -10.52,
    "vod_audio_loudness.min_true_peak": -120
  },
  {
    "vod_audio_loudness.analysis_uuid": "b8b634d3-11f5-4598-b842-9cde5d58c713",
    "vod_audio_loudness.test_audio_time": "00:02:59",
    "vod_audio_loudness.stream_index": 1,
    "vod_audio_loudness.integrated_loudness": null,
    "vod_audio_loudness.loudness_range": null,
    "vod_audio_loudness.high_lra": null,
    "vod_audio_loudness.low_lra": null,
    "vod_audio_loudness.max_momentary_loudness": -20.88,
    "vod_audio_loudness.min_momentary_loudness": -24.08,
    "vod_audio_loudness.max_short_term_loudness": -23.24,
    "vod_audio_loudness.min_short_term_loudness": -23.55,
    "vod_audio_loudness.max_true_peak_channel_ch1": -18.56,
    "vod_audio_loudness.min_true_peak_channel_ch1": -24.58,
    "vod_audio_loudness.max_true_peak_channel_ch2": -18.56,
    "vod_audio_loudness.min_true_peak_channel_ch2": -24.44,
    "vod_audio_loudness.max_true_peak": -9.4,
    "vod_audio_loudness.min_true_peak": -120
  },
  {
    "vod_audio_loudness.analysis_uuid": "b8b634d3-11f5-4598-b842-9cde5d58c713",
    "vod_audio_loudness.test_audio_time": "00:02:58",
    "vod_audio_loudness.stream_index": 1,
    "vod_audio_loudness.integrated_loudness": null,
    "vod_audio_loudness.loudness_range": null,
    "vod_audio_loudness.high_lra": null,
    "vod_audio_loudness.low_lra": null,
    "vod_audio_loudness.max_momentary_loudness": -22.14,
    "vod_audio_loudness.min_momentary_loudness": -24.72,
    "vod_audio_loudness.max_short_term_loudness": -23.49,
    "vod_audio_loudness.min_short_term_loudness": -23.88,
    "vod_audio_loudness.max_true_peak_channel_ch1": -19.58,
    "vod_audio_loudness.min_true_peak_channel_ch1": -27.74,
    "vod_audio_loudness.max_true_peak_channel_ch2": -19.49,
    "vod_audio_loudness.min_true_peak_channel_ch2": -27.54,
    "vod_audio_loudness.max_true_peak": -10.46,
    "vod_audio_loudness.min_true_peak": -120
  },
  .
  .
  .
]

We can make the following conclusions based on the above results:

  • The asset is 3 minutes in length
  • The stream index in the response indicates the first physical audio track that is scored
    • Audio track enumeration should be related to the vod_audio_metadata view
  • Each result object contains 1s worth of measurements
    • This means that for min/max True Peak, Short-Term Loudness and Momentary loudness is only for that reporting period and do not represent measurement for the entire asset
  • Integrated Loudness and Loudness Range are returned only on the last data point
    • "vod_audio_loudness.test_audio_time": "00:03:00" in the example above as these measures are based on the entire audio track.
  • There are at least 2 audio channels monitored and their individual True Peak measurements are returned
    • The mapping of audio channel index (ch1, ch2) map are discussed in the following section

Details regarding units for these measures can be found in the Audio section.

True Peak and Channel Ordering

The vod_audio_loudness view enumerates the individual channels within the track when reporting True Peak levels from channels 1 to 32 based on the channel layout. This is based off the information in Audio section titled Number of Channels to Channel Layout Mapping and Number of Channels to Channel Layout Mapping. Note that this is not an exhaustive list and other channel layouts may differ.

Channel Layout Channel Mapping
Mono 1-FC
Stereo 1-FL
2-FR
2.1 1-FL
2-FR
3-LFE
4.0 1-FL
2-FR
3-FC
4-BC
5.0 (back) 1-FL
2-FR
3-FC
4-BL
5-BR
5.1 (back) 1-FL
2-FR
3-FC
4-LFE
5-BL
6-BR
6.1 1-FL
2-FR
3-FC
4-LFE
5-BC
6-SL
7-SR
7.1 1-FL
2-FR
3-FC
4-LFE
5-BL
6-BR
7-SL
8-SR
Hexadecagonal 1-FL
2-FR
3-FC
4-BL
5-BR
6-BC
7-SL
8-SR
9-TFL
10-TFC
11-TFR
12-TBL
13-TBC
14-TBR
15-WL
16-WR
22.2 1-FL
2-FR
3-FC
4-LFE
5-BL
6-BR
7-FLC
8-FRC
9-BC
10-SL
11-SR
12-TC
13-TFL
14-TFC
15-TFR
16-TBL
17-TBC
18-TBR
19-LFE2
20-TSL
21-TSR
22-BFC
23-BFL
24-BFR

Supported view fields

The vod_audio_loudness view exposes fields to capture various audio loudness measurements and metrics (e.g. integrated loudness, loudness range, momentary loudness, short-term loudness, true peak level) for the assets included in an analysis. The following section lists the various fields of interest on the vod_audio_loudness view that can be used in the body of any request sent to the Insights REST API.

Metric/Measurement Field Details
vod_audio_loudness.loudness_measurement_standard
vod_audio_loudness.test_audio_time The test audio time with the interval automatically selected based on the length of the audio
vod_audio_loudness.test_audio_time_1s The test audio time in 1 second intervals
vod_audio_loudness.integrated_loudness
vod_audio_loudness.loudness_range
vod_audio_loudness.high_lra
vod_audio_loudness.low_lra
vod_audio_loudness.max_momentary_loudness The maximum Momentary Loudness over the aggregation interval.
vod_audio_loudness.max_short_term_loudness The maximum Short-Term Loudness over the aggregation interval.
vod_audio_loudness.max_true_peak The maximum True Peak Level of all channels.
vod_audio_loudness.max_true_peak_channel_ch1 The maximum Treak Peak Level for channel 1.
vod_audio_loudness.max_true_peak_channel_ch2 The maximum Treak Peak Level for channel 2.
vod_audio_loudness.max_true_peak_channel_ch3 The maximum Treak Peak Level for channel 3.
vod_audio_loudness.max_true_peak_channel_ch4 The maximum Treak Peak Level for channel 4
vod_audio_loudness.max_true_peak_channel_ch5 The maximum Treak Peak Level for channel 5.
vod_audio_loudness.max_true_peak_channel_ch6 The maximum Treak Peak Level for channel 6.
vod_audio_loudness.max_true_peak_channel_ch7 The maximum Treak Peak Level for channel 7.
vod_audio_loudness.max_true_peak_channel_ch8 The maximum Treak Peak Level for channel 8.
vod_audio_loudness.max_true_peak_channel_ch9 The maximum Treak Peak Level for channel 9.
vod_audio_loudness.max_true_peak_channel_ch10 The maximum Treak Peak Level for channel 10.
vod_audio_loudness.max_true_peak_channel_ch11 The maximum Treak Peak Level for channel 11.
vod_audio_loudness.max_true_peak_channel_ch12 The maximum Treak Peak Level for channel 12.
vod_audio_loudness.max_true_peak_channel_ch13 The maximum Treak Peak Level for channel 13.
vod_audio_loudness.max_true_peak_channel_ch14 The maximum Treak Peak Level for channel 14.
vod_audio_loudness.max_true_peak_channel_ch15 The maximum Treak Peak Level for channel 15.
vod_audio_loudness.max_true_peak_channel_ch16 The maximum Treak Peak Level for channel 16.
vod_audio_loudness.max_true_peak_channel_ch17 The maximum Treak Peak Level for channel 17.
vod_audio_loudness.max_true_peak_channel_ch18 The maximum Treak Peak Level for channel 18.
vod_audio_loudness.max_true_peak_channel_ch19 The maximum Treak Peak Level for channel 19.
vod_audio_loudness.max_true_peak_channel_ch20 The maximum Treak Peak Level for channel 20.
vod_audio_loudness.max_true_peak_channel_ch21 The maximum Treak Peak Level for channel 21.
vod_audio_loudness.max_true_peak_channel_ch22 The maximum Treak Peak Level for channel 22.
vod_audio_loudness.max_true_peak_channel_ch23 The maximum Treak Peak Level for channel 23.
vod_audio_loudness.max_true_peak_channel_ch24 The maximum Treak Peak Level for channel 24.
vod_audio_loudness.max_true_peak_channel_ch25 The maximum Treak Peak Level for channel 25.
vod_audio_loudness.max_true_peak_channel_ch26 The maximum Treak Peak Level for channel 26.
vod_audio_loudness.max_true_peak_channel_ch27 The maximum Treak Peak Level for channel 27.
vod_audio_loudness.max_true_peak_channel_ch28 The maximum Treak Peak Level for channel 28.
vod_audio_loudness.max_true_peak_channel_ch29 The maximum Treak Peak Level for channel 29.
vod_audio_loudness.max_true_peak_channel_ch30 The maximum Treak Peak Level for channel 30.
vod_audio_loudness.max_true_peak_channel_ch31 The maximum Treak Peak Level for channel 31.
vod_audio_loudness.max_true_peak_channel_ch32 The maximum Treak Peak Level for channel 32.
vod_audio_loudness.min_momentary_loudness The minimum Momentary Loudness over the aggregation interval.
vod_audio_loudness.min_short_term_loudness The minimum Short-Term Loudness over the aggregation interval.
vod_audio_loudness.min_true_peak The minimum True Peak Level of all channels.
vod_audio_loudness.min_true_peak_channel_ch1 The minimum Treak Peak Level for channel 1.
vod_audio_loudness.min_true_peak_channel_ch2 The minimum Treak Peak Level for channel 2.
vod_audio_loudness.min_true_peak_channel_ch3 The minimum Treak Peak Level for channel 3.
vod_audio_loudness.min_true_peak_channel_ch4 The minimum Treak Peak Level for channel 4
vod_audio_loudness.min_true_peak_channel_ch5 The minimum Treak Peak Level for channel 5.
vod_audio_loudness.min_true_peak_channel_ch6 The minimum Treak Peak Level for channel 6.
vod_audio_loudness.min_true_peak_channel_ch7 The minimum Treak Peak Level for channel 7.
vod_audio_loudness.min_true_peak_channel_ch8 The minimum Treak Peak Level for channel 8.
vod_audio_loudness.min_true_peak_channel_ch9 The minimum Treak Peak Level for channel 9.
vod_audio_loudness.min_true_peak_channel_ch10 The minimum Treak Peak Level for channel 10.
vod_audio_loudness.min_true_peak_channel_ch11 The minimum Treak Peak Level for channel 11.
vod_audio_loudness.min_true_peak_channel_ch12 The minimum Treak Peak Level for channel 12.
vod_audio_loudness.min_true_peak_channel_ch13 The minimum Treak Peak Level for channel 13.
vod_audio_loudness.min_true_peak_channel_ch14 The minimum Treak Peak Level for channel 14.
vod_audio_loudness.min_true_peak_channel_ch15 The minimum Treak Peak Level for channel 15.
vod_audio_loudness.min_true_peak_channel_ch16 The minimum Treak Peak Level for channel 16.
vod_audio_loudness.min_true_peak_channel_ch17 The minimum Treak Peak Level for channel 17.
vod_audio_loudness.min_true_peak_channel_ch18 The minimum Treak Peak Level for channel 18.
vod_audio_loudness.min_true_peak_channel_ch19 The minimum Treak Peak Level for channel 19.
vod_audio_loudness.min_true_peak_channel_ch20 The minimum Treak Peak Level for channel 20.
vod_audio_loudness.min_true_peak_channel_ch21 The minimum Treak Peak Level for channel 21.
vod_audio_loudness.min_true_peak_channel_ch22 The minimum Treak Peak Level for channel 22.
vod_audio_loudness.min_true_peak_channel_ch23 The minimum Treak Peak Level for channel 23.
vod_audio_loudness.min_true_peak_channel_ch24 The minimum Treak Peak Level for channel 24.
vod_audio_loudness.min_true_peak_channel_ch25 The minimum Treak Peak Level for channel 25.
vod_audio_loudness.min_true_peak_channel_ch26 The minimum Treak Peak Level for channel 26.
vod_audio_loudness.min_true_peak_channel_ch27 The minimum Treak Peak Level for channel 27.
vod_audio_loudness.min_true_peak_channel_ch28 The minimum Treak Peak Level for channel 28.
vod_audio_loudness.min_true_peak_channel_ch29 The minimum Treak Peak Level for channel 29.
vod_audio_loudness.min_true_peak_channel_ch30 The minimum Treak Peak Level for channel 30.
vod_audio_loudness.min_true_peak_channel_ch31 The minimum Treak Peak Level for channel 31.
vod_audio_loudness.min_true_peak_channel_ch32 The minimum Treak Peak Level for channel 32.
Cadence pattern detection

SSIMPLUS® VOD Monitor can be used to detect and report the cadence patterns for the videos in a given analysis. To enable cadence pattern detection, you would use the SSIMPLUS® Analyzer REST API, to submit an analyzerConfig object with the enableCadencePatternDetection set to true as shown below:

"analyzerConfig": {
  "enableCadencePatternDetection": true,
  "enableBandingDetection": true,
  "enableColorVolumeDifference": true,
  .
  .
  .
}

The cadence pattern results can be fetched from Insights using the vod_cadence_pattern view as shown below:

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 9tVkH455J5Z8X5jGVDBpRbSwBJz5f7vcHTftRv7K' \
--data '{
  "model": "vod_monitor",
  "view": "vod_cadence_pattern",
  "fields": [
    "vod_cadence_pattern.cadence_pattern",
    "vod_cadence_pattern.details",
    "vod_cadence_pattern.pattern_start_frame",
    "vod_cadence_pattern.pattern_end_frame",
    "vod_cadence_pattern.cadence_pattern_offset",
    "vod_cadence_pattern.pattern_start_time_timecode",
    "vod_cadence_pattern.pattern_end_time_timecode",
    "vod_cadence_pattern.test_id"
  ],
  "filters": {
    "vod_cadence_pattern.analysis_uuid": "28fe7faa-e396-4b7a-8fc0-9b9f34915ccf"
  },
  "sorts": [
    "vod_cadence_pattern.pattern_start_frame"
  ]
}'

A few things to note:

  • The vod_cadence_pattern.details field contains additional information such as a confidence threshold that can be used to filter out results
    • The JSON object is in this form
      "{\"confidence\":66}"
  • The vod_cadence_pattern.cadence_pattern will be one of the cadences described in the Cadence Pattern Detection section or Unknown (Low Motion) or 1:1 (No Pattern)

The above request will give the following JSON result:

[
  {
    "vod_cadence_pattern.pattern_start_frame": 1,
    "vod_cadence_pattern.pattern_end_frame": 90,
    "vod_cadence_pattern.test_id": "1",
    "vod_cadence_pattern.cadence_pattern": "Unknown (Low Motion)",
    "vod_cadence_pattern.details": "{\"confidence\":66}",
    "vod_cadence_pattern.cadence_pattern_offset": 0,
    "vod_cadence_pattern.pattern_start_time_timecode": "00:00:00:01",
    "vod_cadence_pattern.pattern_end_time_timecode": "00:00:03:00"
  },
  {
    "vod_cadence_pattern.pattern_start_frame": 2,
    "vod_cadence_pattern.pattern_end_frame": 101,
    "vod_cadence_pattern.test_id": "1-1",
    "vod_cadence_pattern.cadence_pattern": "Unknown (Low Motion)",
    "vod_cadence_pattern.details": "{\"confidence\":73}",
    "vod_cadence_pattern.cadence_pattern_offset": 0,
    "vod_cadence_pattern.pattern_start_time_timecode": "00:00:00:02",
    "vod_cadence_pattern.pattern_end_time_timecode": "00:00:03:11"
  },
  {
    "vod_cadence_pattern.pattern_start_frame": 91,
    "vod_cadence_pattern.pattern_end_frame": 1800,
    "vod_cadence_pattern.test_id": "1",
    "vod_cadence_pattern.cadence_pattern": "7:8",
    "vod_cadence_pattern.details": "{\"confidence\":100}",
    "vod_cadence_pattern.cadence_pattern_offset": 8,
    "vod_cadence_pattern.pattern_start_time_timecode": "00:00:03:01",
    "vod_cadence_pattern.pattern_end_time_timecode": "00:01:00:00"
  },
  {
    "vod_cadence_pattern.pattern_start_frame": 102,
    "vod_cadence_pattern.pattern_end_frame": 1800,
    "vod_cadence_pattern.test_id": "1-1",
    "vod_cadence_pattern.cadence_pattern": "2:2:3:3",
    "vod_cadence_pattern.details": "{\"confidence\":100}",
    "vod_cadence_pattern.cadence_pattern_offset": 8,
    "vod_cadence_pattern.pattern_start_time_timecode": "00:00:03:12",
    "vod_cadence_pattern.pattern_end_time_timecode": "00:01:00:00"
  }
]

We can make the following conclusions based on the results above:

  • There are two assets in the analysis, one with test ID 1 and one with test ID 1-1
  • For asset with test ID 1
    • There were 2 observed cadences
    • One cadence at the beginning of the sequence had low motion and thus a cadence could not be detected
      • Reported as "Unknown (Low Motion)" and was observed between frame 1 to frame 90
    • There was another observed cadence from frame 91 to the end of the asset - frame 1800
      • This cadence was reported as "7:8" with 100% confidence
  • For asset with test ID 1-1
    • There were 2 observed cadences
    • One cadence at the beginning of the sequence had low motion and thus a cadence could not be detected
      • Reported as "Unknown (Low Motion)" and was observed between frame 2 to frame 101
    • There was another observed cadence from frame 102 to the end of the asset - frame 1800
      • This cadence was reported as "2:2:3:3" with 100% confidence

Supported view fields

The vod_cadence_pattern view exposes fields to capture metadata about the various video cadence pattern detected (e.g. start/end time, duration, pattern, pattern offset etc.) for the assets included in an analysis. The following section lists the various fields of interest on the vod_cadence_pattern view that can be used in the body of any request sent to the Insights REST API.

Metric/Measurement Field Details
vod_cadence_pattern.cadence_pattern The cadence pattern Ex. 3:2
vod_cadence_pattern.pattern_start_frame The start time of the detected cadence pattern in frames
vod_cadence_pattern.pattern_end_frame The end time of the detected cadence pattern in frames
vod_cadence_pattern.pattern_start_time_timecode The start time of the detected cadence pattern as a SMPTE Timecode
vod_cadence_pattern.pattern_start_time_full_label The start time of the detected cadence pattern in HH:MM:SS.mmm format (hours, minutes, seconds, milliseconds)
vod_cadence_pattern.pattern_end_time_timecode The end time of the detected cadence pattern as a SMPTE Timecode
vod_cadence_pattern.pattern_end_time_full_label The end time of the detected cadence pattern in HH:MM:SS.mmm format (hours, minutes, seconds, milliseconds)
vod_cadence_pattern.pattern_duration_frames The duration of the detected cadence pattern in frames
vod_cadence_pattern.pattern_duration_percentage The duration of the detected cadence pattern as a percentage of asset duration
vod_cadence_pattern.cadence_pattern_offset The offset of the pattern (number of frames shifted/missing from the start of the pattern)
vod_cadence_pattern.details Additional information from the cadence detection algorithm

And the following filter-only fields:

Metric/Measurement Field Details
vod_analysis_results.use_smpte_timecode Apply the SMPTE start timecode to time value fields
vod_analysis_frame_results.time_mode Display real time or SMPTE timecode
vod_analysis_frame_results.use_drop_frame Enables/disables drop frames
Quality Checks

SSIMPLUS® VOD Monitor supports various quality checks which can be used to identify assets with unacceptable quality. The focus of this section is on the options for retrieving quality check data from a given analysis. To that end, the discussion will center largely around the following Insights views:

View Details
vod_quality_checks This view exposes fields to capture the various video quality checks, asset audio quality checks and asset score checks supported by SSIMPLUS® VOD Monitor.
vod_closed_captions_metadata This view exposes fields to capture the periods of missing closed captions metadata for the assets included in an analysis.
Video Quality Checks

SSIMPLUS® VOD Monitor can be used to perform a number of video quality checks. A video quality check focuses on conditions outside of perceptual quality that would result in unaccepable quality, such as freeze frames, black frames, solid color frames, FPS mismatches, unwanted cadence changes and incorrect and/or mismatched metadata.

Using the SSIMPLUS® Analyzer REST API, you can submit a no-reference analysis to find all known video quality problems, as shown below:

curl --location 'https://research1.ssimwave.lan/api/vod/v1/analyses' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
  "content": {
    "title": "Video Quality Check Failures"
  },
  "subjectAssets": [
    {
      "name": "meridian_short_2020.mp4",
      "path": "demo",
      "storageLocation": {
        "type": "PVC",
        "name": "video-files-pvc"
      }
    }
  ],
  "analyzerConfig": {
    "qualityCheckConfig": {
      "enabled": true
    },
    "viewingEnvironments": [
      {
        "device": {
          "name": "oled65c9pua"
        },
        "viewerType": "TYPICAL"
      }
    ]
  }
}'

When you enable the qualityCheckConfig as shown above, the SSIMPLUS® Analyzer will perform all the video quality checks allowed by your feature license that are configurable at the per-analysis level, using the default configuration values described here. However, in our example, we want to override the defaults and find video quality check failures at more granular durations while also relaxing the sensitivity of the freeze frame detection, as shown below:

curl --location 'https://research1.ssimwave.lan/api/vod/v1/analyses' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
  "content": {
    "title": "Video Quality Check Failures"
  },
  "subjectAssets": [
    {
      "name": "meridian_short_2020.mp4",
      "path": "demo",
      "storageLocation": {
        "type": "PVC",
        "name": "video-files-pvc"
      }
    }
  ],
  "analyzerConfig": {
    "qualityCheckConfig": {
      "enabled": true,
      "duration": 1,
      "freezeFrame": {
        "sensitivity": 25
      }
    },
    "viewingEnvironments": [
      {
        "device": {
          "name": "oled65c9pua"
        },
        "viewerType": "TYPICAL"
      }
    ]
  }
}'

Let’s check for video quality check failures by querying Insights using the fields on the vod_quality_checks view, as shown below:

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer mF8hbXKbJZxfCTxbPstKjchG8b72g22rMszRQDk6' \
--data '{
  "model": "vod_monitor",
  "view": "vod_quality_checks",
  "fields": [
    "vod_quality_checks.analysis_uuid",
    "vod_quality_checks.time",
    "vod_quality_checks.title",
    "vod_quality_checks.test_id",
    "vod_quality_checks.test_video",
    "vod_quality_checks.category",
    "vod_quality_checks.type",
    "vod_quality_checks.interval_start_time",
    "vod_quality_checks.interval_start_time_seconds",
    "vod_quality_checks.interval_end_time",
    "vod_quality_checks.interval_end_time_seconds",
    "vod_quality_checks.check_duration_seconds",
    "vod_quality_checks.check_duration_percentage",
    "vod_quality_checks.test_video_duration",
    "vod_quality_checks.test_video_duration_seconds",
    "vod_quality_checks.trimmed_test_video_duration",
    "vod_quality_checks.trimmed_test_video_duration_seconds",
    "vod_quality_checks.details"
  ],
  "filters": {
    "vod_quality_checks.analysis_uuid": "53702b37-b30c-4c79-9c31-409a907a11ac"
  },
  "sorts": [
    "vod_quality_checks.interval_start_time"
  ]
}'
Note

You are encouraged to sort by vod_quality_checks.interval_start_time so that the quality check failures are reported in the same order in which they appear in the asset.

Quality check events pertaining to the entire asset will not have a start time, end time or duration associated with them.

The abbreviated JSON response payload is as follows:

[
  {
    "vod_quality_checks.analysis_uuid": "af2889e7-26f6-46b0-99e8-41848f0e2b00",
    "vod_quality_checks.time": "2023-04-14 11:39:48.244000",
    "vod_quality_checks.title": "UHD HDR Source Validation",
    "vod_quality_checks.test_id": "1",
    "vod_quality_checks.test_video": "file:///mnt/on-201/demo/meridian_short_2020.mp4",
    "vod_quality_checks.category": "Video",
    "vod_quality_checks.type": "Freeze Frame",
    "vod_quality_checks.interval_start_time": "00:01:05.549",
    "vod_quality_checks.interval_start_time_seconds": 65.549,
    "vod_quality_checks.interval_end_time": "00:01:09.102",
    "vod_quality_checks.interval_end_time_seconds": 69.102,
    "vod_quality_checks.test_video_duration": "00:02:52",
    "vod_quality_checks.test_video_duration_seconds": 172.088,
    "vod_quality_checks.trimmed_test_video_duration": "00:02:52",
    "vod_quality_checks.trimmed_test_video_duration_seconds": 172.088,
    "vod_quality_checks.details": null,
    "vod_quality_checks.check_duration_seconds": 3.553,
    "vod_quality_checks.check_duration_percentage": 0.020646413463
  },
  {
    "vod_quality_checks.analysis_uuid": "af2889e7-26f6-46b0-99e8-41848f0e2b00",
    "vod_quality_checks.time": "2023-04-14 11:41:30.477000",
    "vod_quality_checks.title": "UHD HDR Source Validation",
    "vod_quality_checks.test_id": "1",
    "vod_quality_checks.test_video": "file:///mnt/on-201/demo/meridian_short_2020.mp4",
    "vod_quality_checks.category": "Video",
    "vod_quality_checks.type": "Black Frame",
    "vod_quality_checks.interval_start_time": "00:01:18.495",
    "vod_quality_checks.interval_start_time_seconds": 78.495,
    "vod_quality_checks.interval_end_time": "00:01:23.483",
    "vod_quality_checks.interval_end_time_seconds": 83.483,
    "vod_quality_checks.test_video_duration": "00:02:52",
    "vod_quality_checks.test_video_duration_seconds": 172.088,
    "vod_quality_checks.trimmed_test_video_duration": "00:02:52",
    "vod_quality_checks.trimmed_test_video_duration_seconds": 172.088,
    "vod_quality_checks.details": null,
    "vod_quality_checks.check_duration_seconds": 4.988,
    "vod_quality_checks.check_duration_percentage": 0.028985170378
  },
  .
  .
  .
]

Notice in the results above:

  • A freeze frame condition was detected at approximately 1:05 and lasted 3.5s.
  • A black frame condition was detected at approximately 1:18 and lasted almost 5s.

Cadence Pattern Quality Checks

There are three types of cadence pattern quality checks that can be made:

  • Multiple Cadences - a quality check is raised if multiple cadence patterns are observed in the test asset
  • Broken Cadence - a quality check is raised if a broken cadence pattern is detected where broken cadence pattern means a dropped field/frame within the cadence pattern
  • Allowed Cadences - a quality check is raised if a cadence pattern is observed but not within the list

Using the SSIMPLUS® Analyzer REST API, we can configure the SSIMPLUS® Analyzer as shown below:

"analyzerConfig": {
  "enableCadencePatternDetection": true,
  "qualityCheckConfig": {
    "multipleCadences": true,
    "brokenCadence": true,
    "allowedCadences": ["2:2"]
  }
  .
  .
  .
}

In the example above, we do the following:

  • enable measurement of Cadence Pattern Detection,
  • raise a quality check if multiple cadence patterns are detected,
  • raise a quality check if a broken cadence pattern is detected and
  • raise a quality check if any cadence pattern that is detected is not “2:2”.

To check if this is the case, the following query to Insights can be made:

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer mF8hbXKbJZxfCTxbPstKjchG8b72g22rMszRQDk6' \
--data '{
  "model": "vod_monitor",
  "view": "vod_quality_checks",
  "fields": [
    "vod_quality_checks.test_id",
    "vod_quality_checks.interval_start_time",
    "vod_quality_checks.interval_end_time",
    "vod_quality_checks.type",
    "vod_quality_checks.details"
  ],
  "filters": {
    "vod_quality_checks.analysis_uuid": "810e1040-7825-49b2-96a1-0716cc7e1e66"
  },
  "sorts": [
    "vod_quality_checks.interval_start_time_full_label",
    "vod_quality_checks.type"
  ]
}'

When one of the conditions for the quality check is triggered, the response will look similar to the following

[
  {
    "vod_quality_checks.test_id": "1",
    "vod_quality_checks.interval_start_time": "00:00:00.000",
    "vod_quality_checks.interval_end_time": "00:00:30.000",
    "vod_quality_checks.type": "Cadence Not Allowed",
    "vod_quality_checks.details": "Detected cadence 1:1:1:2"
  }
]

We can make the following conclusions based on the above results:

  • there is a quality check failure with asset test ID 1,
  • the duration of where the quality check is raised is between 0 and 30 seconds
  • the quality check type is "Cadence Not Allowed" and
  • the detected cadence pattern is "1:1:1:2" which was not in the quality check config allowed cadence pattern list "2:2".
Audio Quality Checks

SSIMPLUS® VOD Monitor can be used to perform a number of audio quality checks.

Audio Loudness Quality Checks

An audio loudness quality check performs level-based and range-based assessments of the audio tracks to ensure that standards of acceptabilty are being met.

There are two types of audio loudness quality checks supported:

  • Level Based Quality Checks
  • Range Based Quality Checks

Level Based Quality Checks

Level Based Quality Checks only have a single threshold that will trigger a quality check failure. This includes

  • MAX_MOMENTARY_LOUDNESS
  • MAX_SHORT_TERM_LOUDNESS

Once the threshold is exceeded for the duration amount, a quality check failure is raised.

An example "audio" section for an asset within an analysis submission for a MAX_SHORT_TERM_LOUDNESS quality check can be found below.

{
.
.
.
  "audio": {
    "groups": [
      {
        "loudnessMeasurements": {
          "enabled": true,
          "algorithm": "ITU_BS_1770_3"
        },
        "qualityCheckConfig": {
          "loudnessChecks": [
            {
              "checkType": "MAX_SHORT_TERM_LOUDNESS",
              "enabled": true,
              "threshold": -130.7,
              "duration": 8
            }
          ]
        }
      }
    ],
    "enabled": true
  }
  .
  .
  .
}

The above quality check will fail if the max Short-Term Loudness exceeds -130.7 LUFS for at least 8s.

To check if this is the case, the following query to Insights can be made.

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer mF8hbXKbJZxfCTxbPstKjchG8b72g22rMszRQDk6' \
--data '{
  "model": "vod_monitor",
  "view": "vod_quality_checks",
  "fields": [
    "vod_quality_checks.test_id",
    "vod_quality_checks.interval_start_time_full_label",
    "vod_quality_checks.interval_end_time_full_label",
    "vod_quality_checks.type",
    "vod_quality_checks.check_duration_seconds",
    "vod_quality_checks.details",
    "vod_quality_checks.stream_index"
  ],
  "filters": {
    "vod_quality_checks.analysis_uuid": "a650491d-5365-41e9-9c86-8d63d9859472"
  },
  "sorts": [
    "vod_quality_checks.interval_start_time_full_label",
    "vod_quality_checks.type"
  ]
}'

When the quality check is triggered, the JSON response will look like this:

[
  {
    "vod_quality_checks.test_id": "1",
    "vod_quality_checks.interval_start_time_full_label": "00:00:00.000",
    "vod_quality_checks.interval_end_time_full_label": "00:02:59.800",
    "vod_quality_checks.type": "High Short-Term Loudness",
    "vod_quality_checks.details": "Short-Term Loudness was above the configured threshold of -130.7 LUFS for longer than 8 seconds",
    "vod_quality_checks.stream_index": 1,
    "vod_quality_checks.check_duration_seconds": 179.8
  }
]

We can make the following conclusions based on the above results:

  • There was an exception raised on test_id 1
  • A stream index of 1 means that this quality check failure occured on the first observed audio track
    • See the vod_audio_metadata for the ability to link more metadata to this result
  • The analyzer measured a Short-Term Loudness above -130.7 LUFS for greater than 8 seconds (starting from beginning of the asset)

Range Based Quality Checks

Often a single threshold is insufficient and instead a value should remain within a specific range. This type of quality check is supported for the following check types

  • MAX_TRUE_PEAK_LEVEL
  • MIN_TRUE_PEAK_LEVEL
  • MAX_LOUDNESS_RANGE
  • MIN_LOUDNESS_RANGE
  • MAX_INTEGRATED_LOUDNESS
  • MIN_INTEGRATED_LOUDNESS
Note

Range Based Quality Checks can also be used as Level Based Quality Checks by omitting either the MAX or MIN when defining loudnessChecks object in the job submission.

An example "audio" section for an asset within an analysis submission can be found below.

{
.
.
.
  "audio": {
    "groups": [
      {
        "loudnessMeasurements": {
          "enabled": true,
          "algorithm": "ITU_BS_1770_3"
        },
        "qualityCheckConfig": {
          "loudnessChecks": [
            {
              "checkType": "MIN_LOUDNESS_RANGE",
              "enabled": true,
              "threshold": 10.1
            },
            {
              "checkType": "MAX_LOUDNESS_RANGE",
              "enabled": true,
              "threshold": 15.1
            }
          ]
        }
      }
    ],
    "enabled": true
  }
  .
  .
  .
}

The above quality check will fail if the Loudness Range is outside the range of 10.1 LU to 15.1 LU.

To check if this is the case, the following query to Insights can be made.

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer mF8hbXKbJZxfCTxbPstKjchG8b72g22rMszRQDk6' \
--data '{
  "model": "vod_monitor",
  "view": "vod_quality_checks",
  "fields": [
    "vod_quality_checks.test_id",
    "vod_quality_checks.interval_start_time_full_label",
    "vod_quality_checks.interval_end_time_full_label",
    "vod_quality_checks.type",
    "vod_quality_checks.details",
    "vod_quality_checks.stream_index"
  ],
  "filters": {
    "vod_quality_checks.analysis_uuid": "a650491d-5365-41e9-9c86-8d63d9859472"
  },
  "sorts": [
    "vod_quality_checks.interval_start_time_full_label",
    "vod_quality_checks.type"
  ]
}'

When the quality check is triggered, the response will look like this:

[
  {
    "vod_quality_checks.test_id": "1",
    "vod_quality_checks.interval_start_time_full_label": null,
    "vod_quality_checks.interval_end_time_full_label": null,
    "vod_quality_checks.type": "Low Loudness Range",
    "vod_quality_checks.details": "Loudness Range of 4.14 LU was below the configured threshold of 10.1 LU",
    "vod_quality_checks.stream_index": 1
  }
]

We can make the following conclusions based on the above results:

  • There was an exception raised on test_id 1
  • A stream index of 1 means that this quality check failure occured on the first observed audio track
    • See the vod_audio_metadata for the ability to link more metadata to this result
  • The analyzer measured a Loudness Range of 4.14 LU upon completion of the analysis
  • Loudness Range applies to the entire asset and therefore interval_start_time_full_label and interval_end_time_full_label are null

Audio Artifact Quality Checks

An audio artifact quality check performs level-based and signal-based assessments of the audio tracks to ensure that unwanted noise (eg. clicks, pops and clipping distortion) does not occur during playback.

Clicks and Pops Quality Checks

The SSIMPLUS® Analyzer can be configured to determine if clicks and pops are audible in audio tracks belonging to an asset.

An example "audio" section with this quality check enabled for an asset within an analysis submission can be found below.

{
.
.
.
  "audio": {
    "groups": [
      {
        "loudnessMeasurements": {
          "enabled": true,
          "algorithm": "ITU_BS_1770_3"
        },
        "qualityCheckConfig": {
          "clicksAndPopsCheck": [
            {
              "sensitivity": 50,
              "enabled": true,
              "skipStart": 1.25,
              "skipEnd": 1.25
            }
          ]
        }
      }
    ],
    "enabled": true
  }
  .
  .
  .
}

An optional sensitivity parameter is provided to tune the detection algorithm, where a higher value leads to more detections but may result in false positives.

The above quality check event will be triggered if any clicks or pops are detected within an audio track.

To check if this is the case, the following query to Insights can be made.

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer mF8hbXKbJZxfCTxbPstKjchG8b72g22rMszRQDk6' \
--data '{
  "model": "vod_monitor",
  "view": "vod_quality_checks",
  "fields": [
    "vod_quality_checks.test_id",
    "vod_quality_checks.interval_start_time_full_label",
    "vod_quality_checks.interval_end_time_full_label",
    "vod_quality_checks.type",
    "vod_quality_checks.interval_start_time_seconds",
    "vod_quality_checks.interval_end_time_seconds",
    "vod_quality_checks.check_duration_seconds",
    "vod_quality_checks.details",
    "vod_quality_checks.stream_index"
  ],
  "filters": {
    "vod_quality_checks.analysis_uuid": "a650491d-5365-41e9-9c86-8d63d9859472"
  },
  "sorts": [
    "vod_quality_checks.interval_start_time_full_label",
    "vod_quality_checks.type"
  ]
}'

When the quality check is triggered, the response will look like this:

[
  {
    "vod_quality_checks.test_id": "1",
    "vod_quality_checks.interval_start_time_full_label": null,
    "vod_quality_checks.interval_end_time_full_label": null,
    "vod_quality_checks.type": "Clicks/Pops On Front Center Channel",
    "vod_quality_checks.interval_start_time_seconds": "00:00:04:500",
    "vod_quality_checks.interval_end_time_seconds": "00:00:04:550",
    "vod_quality_checks.check_duration_seconds": 0.05,
    "vod_quality_checks.details": "Click/Pops were detected for the front center channel",
    "vod_quality_checks.stream_index": 1
  }
]

We can make the following conclusions based on the above results:

  • There was an exception raised on test_id 1
  • A stream index of 1 means that this quality check failure occured on the first observed audio track
    • See the vod_audio_metadata for the ability to link more metadata to this result
  • Clicks and/or pops were detected on the front center channel for 0.05 seconds, between the 4.50 and 4.55 second mark of the audio track

Clipping Quality Check

The SSIMPLUS® Analyzer can be configured to determine if clipping is present in audio tracks belonging to an asset.

An example "audio" section with this quality check enabled for an asset within an analysis submission can be found below.

{
.
.
.
  "audio": {
    "groups": [
      {
        "loudnessMeasurements": {
          "enabled": true,
          "algorithm": "ITU_BS_1770_3"
        },
        "qualityCheckConfig": {
          "clippingCheck": [
            {
              "sensitivity": 50,
              "enabled": true,
              "duration": 1.5,
              "skipStart": 1.25,
              "skipEnd": 1.25
            }
          ]
        }
      }
    ],
    "enabled": true
  }
  .
  .
  .
}

An optional sensitivity parameter is provided to tune the detection algorithm, where a higher value leads to more detections but may result in false positives.

The above quality check event will be triggered if any periods of clipping of at least 1.5 seconds are detected within an audio track.

To check if this is the case, the following query to Insights can be made.

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer mF8hbXKbJZxfCTxbPstKjchG8b72g22rMszRQDk6' \
--data '{
  "model": "vod_monitor",
  "view": "vod_quality_checks",
  "fields": [
    "vod_quality_checks.test_id",
    "vod_quality_checks.interval_start_time_full_label",
    "vod_quality_checks.interval_end_time_full_label",
    "vod_quality_checks.type",
    "vod_quality_checks.interval_start_time_seconds",
    "vod_quality_checks.interval_end_time_seconds",
    "vod_quality_checks.check_duration_seconds",
    "vod_quality_checks.details",
    "vod_quality_checks.stream_index"
  ],
  "filters": {
    "vod_quality_checks.analysis_uuid": "a650491d-5365-41e9-9c86-8d63d9859472"
  },
  "sorts": [
    "vod_quality_checks.interval_start_time_full_label",
    "vod_quality_checks.type"
  ]
}'

When the quality check is triggered, the response will look like this:

[
  {
    "vod_quality_checks.test_id": "1",
    "vod_quality_checks.interval_start_time_full_label": null,
    "vod_quality_checks.interval_end_time_full_label": null,
    "vod_quality_checks.type": "Clipping On Front Left Channel",
    "vod_quality_checks.interval_start_time_seconds": "00:00:10:500",
    "vod_quality_checks.interval_end_time_seconds": "00:00:12:500",
    "vod_quality_checks.check_duration_seconds": 2.000,
    "vod_quality_checks.details": "Clipping was detected for the front left channel for longer than 1.5 seconds",
    "vod_quality_checks.stream_index": 1
  }
]

We can make the following conclusions based on the above results:

  • There was an exception raised on test_id 1
  • A stream index of 1 means that this quality check failure occured on the first observed audio track
    • See the vod_audio_metadata for the ability to link more metadata to this result
  • Clipping was detected on the front left channel for 2 seconds, between the 10.5 and 12.5 second mark of the audio track
Score Checks

SSIMPLUS® VOD Monitor can be used to perform a number of score checks. A score check allows one to apply numeric thresholds to various SSIMPLUS® measurements and metrics and reject assets that don’t meet the threshold.

Using the SSIMPLUS® Analyzer REST API, let’s submit a full-reference analysis for a couple of encoded assets with suspected quality issues, as shown below:

curl --location 'https://research1.ssimwave.lan/api/vod/v1/analyses' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
  "content": {
    "title": "Dog Running FR"
  },
  "referenceAssets": [
    {
      "name": "dog_running.mp4",
      "path": "royalty_free/dog_running/source",
      "storageLocation": {
        "type": "PVC",
        "name": "video-files-pvc"
      }
    }
  ],
  "subjectAssets": [
    {
      "name": "dog_running_1080_h264_qp_31.mp4",
      "path": "royalty_free/dog_running/outputs",
      "storageLocation": {
        "type": "PVC",
        "name": "video-files-pvc"
      },
      "qualityCheckConfig": {
        "scoreChecks": [
          {
            "metric": "SVS",
            "threshold": 85,
            "durationSeconds": 1,
            "viewingEnvironmentIndex": 0
          },
          {
            "metric": "SBS",
            "threshold": 40,
            "durationSeconds": 1,
            "viewingEnvironmentIndex": 0
          }
        ]
      }
    },
    {
      "name": "dog_running_1080_h264_qp_41.mp4",
      "path": "royalty_free/dog_running/outputs",
      "storageLocation": {
        "type": "PVC",
        "name": "video-files-pvc"
      },
      "qualityCheckConfig": {
        "scoreChecks": [
          {
            "metric": "SVS",
            "threshold": 85,
            "durationSeconds": 1,
            "viewingEnvironmentIndex": 0
          },
          {
            "metric": "SBS",
            "threshold": 40,
            "durationSeconds": 1,
            "viewingEnvironmentIndex": 0
          }
        ]
      }
    }
  ],
  "analyzerConfig": {
    "enableBandingDetection": true,
    "viewingEnvironments": [
      {
        "device": {
          "name": "oled65c9pua"
        },
        "viewerType": "TYPICAL"
      }
    ]
  }
}'

Notice in the request above:

  • We have configured an SVS score check on both subject/test assets where we consider it be unacceptable to have any period of more than 1s where the SSIMPLUS® Viewer Score is less than 85.
  • We have configured an SBS score check on both subject/test assets where we consider it be unacceptable to have any period of more than 1s where the SSIMPLUS® Banding Score is greater than 40.
Imporant

The SSIMPLUS® Analyzer REST API requires the inclusion of a valid ViewingEnvironment (device + viewer) when configuring score checks for SVS, EPS and SBS.

As with the other quality checks, let’s use the fields on the vod_quality_checks view to find any score check failures, as shown below:

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 22srnScNTRYKNTpPpBtMBfTYjHDJqTPkfhQX6TQK' \
--data '{
  "model": "vod_monitor",
  "view": "vod_quality_checks",
  "fields": [
    "vod_quality_checks.analysis_uuid",
    "vod_quality_checks.time",
    "vod_quality_checks.title",
    "vod_quality_checks.test_id",
    "vod_quality_checks.test_video",
    "vod_quality_checks.category",
    "vod_quality_checks.type",
    "vod_quality_checks.interval_start_time",
    "vod_quality_checks.interval_start_time_seconds",
    "vod_quality_checks.interval_end_time",
    "vod_quality_checks.interval_end_time_seconds",
    "vod_quality_checks.check_duration_seconds",
    "vod_quality_checks.check_duration_percentage",
    "vod_quality_checks.test_video_duration",
    "vod_quality_checks.test_video_duration_seconds",
    "vod_quality_checks.trimmed_test_video_duration",
    "vod_quality_checks.configuration_threshold",
    "vod_quality_checks.trimmed_test_video_duration_seconds"
  ],
  "filters": {
    "vod_quality_checks.analysis_uuid": "5473a508-4dc8-47e2-9c89-792a4fafb061"
  },
  "sorts": [
    "vod_quality_checks.interval_start_time"
  ]
}'

The abbreviated JSON response payload is as follows:

[
  {
    "vod_quality_checks.analysis_uuid": "5473a508-4dc8-47e2-9c89-792a4fafb061",
    "vod_quality_checks.time": "2023-08-29 23:22:40.488000",
    "vod_quality_checks.title": "Dog Running FR",
    "vod_quality_checks.test_id": "1-2",
    "vod_quality_checks.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_41.mp4",
    "vod_quality_checks.category": "Video",
    "vod_quality_checks.type": "SSIMPLUS Viewer Score",
    "vod_quality_checks.interval_start_time": "00:00:00.000",
    "vod_quality_checks.interval_start_time_seconds": 0,
    "vod_quality_checks.interval_end_time": "00:00:19.160",
    "vod_quality_checks.interval_end_time_seconds": 19.16,
    "vod_quality_checks.test_video_duration": "00:00:20",
    "vod_quality_checks.test_video_duration_seconds": 19.68,
    "vod_quality_checks.trimmed_test_video_duration": "00:00:20",
    "vod_quality_checks.configuration_threshold": "85",
    "vod_quality_checks.trimmed_test_video_duration_seconds": 19.68,
    "vod_quality_checks.check_duration_seconds": 19.16,
    "vod_quality_checks.check_duration_percentage": 0.973577235772
  },
  {
    "vod_quality_checks.analysis_uuid": "5473a508-4dc8-47e2-9c89-792a4fafb061",
    "vod_quality_checks.time": "2023-08-29 23:22:24.839000",
    "vod_quality_checks.title": "Dog Running FR",
    "vod_quality_checks.test_id": "1-1",
    "vod_quality_checks.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_31.mp4",
    "vod_quality_checks.category": "Video",
    "vod_quality_checks.type": "SSIMPLUS Viewer Score",
    "vod_quality_checks.interval_start_time": "00:00:00.000",
    "vod_quality_checks.interval_start_time_seconds": 0,
    "vod_quality_checks.interval_end_time": "00:00:05.280",
    "vod_quality_checks.interval_end_time_seconds": 5.28,
    "vod_quality_checks.test_video_duration": "00:00:20",
    "vod_quality_checks.test_video_duration_seconds": 19.68,
    "vod_quality_checks.trimmed_test_video_duration": "00:00:20",
    "vod_quality_checks.configuration_threshold": "85",
    "vod_quality_checks.trimmed_test_video_duration_seconds": 19.68,
    "vod_quality_checks.check_duration_seconds": 5.28,
    "vod_quality_checks.check_duration_percentage": 0.268292682927
  },
  {
    "vod_quality_checks.analysis_uuid": "5473a508-4dc8-47e2-9c89-792a4fafb061",
    "vod_quality_checks.time": "2023-08-29 23:22:30.009000",
    "vod_quality_checks.title": "Dog Running FR",
    "vod_quality_checks.test_id": "1-2",
    "vod_quality_checks.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_41.mp4",
    "vod_quality_checks.category": "Video",
    "vod_quality_checks.type": "SSIMPLUS Banding Score",
    "vod_quality_checks.interval_start_time": "00:00:09.560",
    "vod_quality_checks.interval_start_time_seconds": 9.56,
    "vod_quality_checks.interval_end_time": "00:00:11.240",
    "vod_quality_checks.interval_end_time_seconds": 11.24,
    "vod_quality_checks.test_video_duration": "00:00:20",
    "vod_quality_checks.test_video_duration_seconds": 19.68,
    "vod_quality_checks.trimmed_test_video_duration": "00:00:20",
    "vod_quality_checks.configuration_threshold": "40",
    "vod_quality_checks.trimmed_test_video_duration_seconds": 19.68,
    "vod_quality_checks.check_duration_seconds": 1.68,
    "vod_quality_checks.check_duration_percentage": 0.085365853659
  },
  {
    "vod_quality_checks.analysis_uuid": "5473a508-4dc8-47e2-9c89-792a4fafb061",
    "vod_quality_checks.time": "2023-08-29 23:22:41.502000",
    "vod_quality_checks.title": "Dog Running FR",
    "vod_quality_checks.test_id": "1-1",
    "vod_quality_checks.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_31.mp4",
    "vod_quality_checks.category": "Video",
    "vod_quality_checks.type": "SSIMPLUS Viewer Score",
    "vod_quality_checks.interval_start_time": "00:00:16.480",
    "vod_quality_checks.interval_start_time_seconds": 16.48,
    "vod_quality_checks.interval_end_time": "00:00:19.160",
    "vod_quality_checks.interval_end_time_seconds": 19.16,
    "vod_quality_checks.test_video_duration": "00:00:20",
    "vod_quality_checks.test_video_duration_seconds": 19.68,
    "vod_quality_checks.trimmed_test_video_duration": "00:00:20",
    "vod_quality_checks.configuration_threshold": "85",
    "vod_quality_checks.trimmed_test_video_duration_seconds": 19.68,
    "vod_quality_checks.check_duration_seconds": 2.68,
    "vod_quality_checks.check_duration_percentage": 0.136178861789
  }
]

Notice in the results above:

  • The dog_running_1080_h264_qp_31.mp4 asset failed the SVS score check at two different times for a total of approximately 6s. However, this asset passed the SBS score check which indicates that the level of color banding is acceptable. To know exactly what the SBS values were, you would need to use consult the analysis_results view (see here).
  • The dog_running_1080_h264_qp_41.mp4 asset failed both the SVS and SBS score checks but its low SVS scores is clearly the main problem as 97% of the asset’s duration was of unacceptable quality, while only 1.68s or 8% of the asset had unacceptable levels of color banding.
Filtering

Duration filtering vs. configuring

Most quality checks have a duration associated with them, either specified in seconds or frames, after which the triggered condition will cause a warning or failure event to be raised. Refer to the SSIMPLUS® Analyzer REST API for details on configuring quality checks. Once an anlysis has been submitted, changes to any associated quality check would require a new analysis. However, as you’ve already learned, the Insights REST API allows you to filter on any view field, including vod_quality_checks.check_duration_seconds. The implication here is that you can effectively alter the duration of any quality check post-analysis, thereby changing the results of the check, by applying modifiers to a vod_quality_checks.check_duration_seconds filter, as shown in the example below:

.
.
.
"filters": {
  "vod_quality_checks.analysis_uuid": "{{last_analysis_uuid}}"
  "vod_quality_checks.check_duration_seconds": "<5"
}
.
.
.

The caveat here is that you cannot chose a smaller value for the vod_quality_checks.check_duration_seconds field than what was used to configure the SSIMPLUS® Analyzer via the REST API.

"analyzerConfig": {
  "qualityCheckConfig": {
    "enabled": true,
    "duration": 1
  }
}

In the example above, we are configured the SSIMPLUS® Analyzer to apply a quality check with a duration of 1s which is less than the 5s we used in the Insights filter above.

This raises the question of why we don’t always configure all quality checks with the lowest possible duration. While this would lead to the most flexibility in terms of post-analysis filtering using Insights, it may also put a significant amount of additional computational effort on the SSIMPLUS® Analyzer itself, thereby slowing down your analyses. The SSIMPLUS® Analyzer REST API has made efforts to pick reasonable defaults for all applicable quality checks but there may be times where you want to lower these in order to give you additional flexibility with your results.

Filtering results based on percentages

In some production scenarios, it may prove difficult to determine, in advance of submitting the analysis, how much of the start and end of the asset, in seconds, you may wish to exempt from quality check analysis. It may be easier to specify amounts of the asset to skip at either end as percentages of the overall length of the asset. Consider, for example, feature length films where it is understood that the first and last 5% of the asset are typically studio logos and credits. Similarly, one may find it useful to define a quality check failure in terms of its duration with respect to the (trimmed) asset length, instead of in absolute seconds. A freeze frame, for example, that lasts 5% of a 30s commercial may not be considered a quality check failure worthy of asset rejection yet a 5% freeze frame in a 120m feature length film surely would. For these types of situations, you are encouraged to filter your quality check results using the following percentage-based fields:

  • vod_quality_checks.skip_start_percentage
  • vod_quality_checks.skip_end_percentage
  • vod_quality_checks.check_duration_percentage

The following is an example query where we’ve skipped the first and last 5% of the asset and told the system to only find video quality check failures that exceed 4.5% of the trimmed/shortened asset length:

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer mF8hbXKbJZxfCTxbPstKjchG8b72g22rMszRQDk6' \
--data '{
  "model": "vod_monitor",
  "view": "vod_quality_checks",
  "fields": [
    "vod_quality_checks.analysis_uuid",
    "vod_quality_checks.time",
    "vod_quality_checks.comparison_analysis_uuid",
    "vod_quality_checks.title",
    "vod_quality_checks.organization",
    "vod_quality_checks.site",
    "vod_quality_checks.test_id",
    "vod_quality_checks.test_video",
    "vod_quality_checks.stream_index",
    "vod_quality_checks.category",
    "vod_quality_checks.type",
    "vod_quality_checks.interval_start_time",
    "vod_quality_checks.interval_start_time_seconds",
    "vod_quality_checks.interval_end_time",
    "vod_quality_checks.interval_end_time_seconds",
    "vod_quality_checks.check_duration_seconds",
    "vod_quality_checks.check_duration_percentage",
    "vod_quality_checks.test_video_duration",
    "vod_quality_checks.test_video_duration_seconds",
    "vod_quality_checks.trimmed_test_video_duration",
    "vod_quality_checks.trimmed_test_video_duration_seconds",
    "vod_quality_checks.details"
  ],
  "filters": {
    "vod_quality_checks.analysis_uuid": "9bac5d71-83ad-43f5-b3c5-f5a076dd7be7",
    "vod_quality_checks.check_duration_percentage": ">=4.5",
    "vod_quality_checks.skip_start_percentage": "5",
    "vod_quality_checks.skip_end_percentage": "5",
    "vod_quality_checks.category": "video",
  },
  "sorts": [
    "vod_quality_checks.interval_start_time"
  ]
}'

The following is an example response for the request above:

[
  {
    "vod_quality_checks.analysis_uuid": "9bac5d71-83ad-43f5-b3c5-f5a076dd7be7",
    "vod_quality_checks.time": "2021-02-24 17:34:13.998000",
    "vod_quality_checks.comparison_analysis_uuid": null,
    "vod_quality_checks.title": "Curated Big Buck Bunny with Quality Check Failures",
    "vod_quality_checks.organization": "SSIMWAVE",
    "vod_quality_checks.site": "VOD Testing",
    "vod_quality_checks.test_id": "1",
    "vod_quality_checks.test_video": "/mnt/videos/test/big_buck_bunny_problematic.mp4",
    "vod_quality_checks.stream_index": 1,
    "vod_quality_checks.category": "video",
    "vod_quality_checks.type": "Solid Color Frame",
    "vod_quality_checks.interval_start_time": "00:00:20.062",
    "vod_quality_checks.interval_start_time_seconds": 20.062,
    "vod_quality_checks.interval_end_time": "00:00:25.025",
    "vod_quality_checks.interval_end_time_seconds": 25.025,
    "vod_quality_checks.check_duration_seconds": 4.963,
    "vod_quality_checks.check_duration_percentage": 4.58917498,
    "vod_quality_checks.test_video_duration": "00:02:00",
    "vod_quality_checks.test_video_duration_seconds": 120.162,
    "vod_quality_checks.trimmed_test_video_duration": "00:01:48",
    "vod_quality_checks.trimmed_test_video_duration_seconds": 108.1458,
    "vod_quality_checks.details": null
  },
  {
    "vod_quality_checks.analysis_uuid": "9bac5d71-83ad-43f5-b3c5-f5a076dd7be7",
    "vod_quality_checks.time": "2021-02-24 17:35:24.607000",
    "vod_quality_checks.comparison_analysis_uuid": null,
    "vod_quality_checks.title": "Curated Big Buck Bunny with Quality Check Failures",
    "vod_quality_checks.organization": "SSIMWAVE",
    "vod_quality_checks.site": "VOD Testing",
    "vod_quality_checks.test_id": "1",
    "vod_quality_checks.test_video": "/mnt/videos/test/big_buck_bunny_problematic.mp4",
    "vod_quality_checks.stream_index": 1,
    "vod_quality_checks.category": "video",
    "vod_quality_checks.type": "Freeze Frame",
    "vod_quality_checks.interval_start_time": "00:01:20.080",
    "vod_quality_checks.interval_start_time_seconds": 80.08,
    "vod_quality_checks.interval_end_time": "00:01:25.085",
    "vod_quality_checks.interval_end_time_seconds": 85.085,
    "vod_quality_checks.check_duration_seconds": 5.005,
    "vod_quality_checks.check_duration_percentage": 4.62801144,
    "vod_quality_checks.test_video_duration": "00:02:00",
    "vod_quality_checks.test_video_duration_seconds": 120.162,
    "vod_quality_checks.trimmed_test_video_duration": "00:01:48",
    "vod_quality_checks.trimmed_test_video_duration_seconds": 108.1458,
    "vod_quality_checks.details": null
  },
  {
    "vod_quality_checks.analysis_uuid": "9bac5d71-83ad-43f5-b3c5-f5a076dd7be7",
    "vod_quality_checks.time": "2021-02-24 17:35:34.671000",
    "vod_quality_checks.comparison_analysis_uuid": null,
    "vod_quality_checks.title": "Curated Big Buck Bunny with Quality Check Failures",
    "vod_quality_checks.organization": "SSIMWAVE",
    "vod_quality_checks.site": "VOD Testing",
    "vod_quality_checks.test_id": "1",
    "vod_quality_checks.test_video": "/mnt/videos/test/big_buck_bunny_problematic.mp4",
    "vod_quality_checks.stream_index": 1,
    "vod_quality_checks.category": "video",
    "vod_quality_checks.type": "Black Frame",
    "vod_quality_checks.interval_start_time": "00:01:30.132",
    "vod_quality_checks.interval_start_time_seconds": 90.132,
    "vod_quality_checks.interval_end_time": "00:01:35.095",
    "vod_quality_checks.interval_end_time_seconds": 95.095,
    "vod_quality_checks.check_duration_seconds": 4.963,
    "vod_quality_checks.check_duration_percentage": 4.58917498,
    "vod_quality_checks.test_video_duration": "00:02:00",
    "vod_quality_checks.test_video_duration_seconds": 120.162,
    "vod_quality_checks.trimmed_test_video_duration": "00:01:48",
    "vod_quality_checks.trimmed_test_video_duration_seconds": 108.1458,
    "vod_quality_checks.details": null
  }
]

Notice that the vod_quality_checks.check_duration_percentage value reported for each video quality check failure exceeds 4.5% of the length of the asset, after skipping the first and last 5% (i.e. the trimmed asset length).

Supported view fields

The vod_quality_checks view exposes fields to capture the various video quality checks, asset audio quality checks and asset score checks supported by SSIMPLUS® VOD Monitor. The following subsections lists the various fields of interest on the vod_quality_checks view that can be used in the body of any request sent to the Insights REST API.

Metric/Measurement Field Details
vod_quality_checks.stream_id Identifies the stream type (e.g. video/audio) and the stream number
vod_quality_checks.configuration_metric For measurement and score-based quality checks, the value of this metric type are used for comparison to the threshold values
vod_quality_checks.configuration_threshold For score-based quality checks, the threshold value that must be met to trigger a quality check event
vod_quality_checks.configuration_duration_value The configured minimum duration of the triggered quality check event. This value has units corresponding to ‘Duration Units’
vod_quality_checks.configuration_duration_units The unit associated with the configured minimum duration of the triggered quality check event
vod_quality_checks.configuration_skip_end The number of seconds at the end of the asset for which quality check events are ignored
vod_quality_checks.configuration_skip_start The number of seconds at the start of the asset for which quality check events are ignored
vod_quality_checks.viewer_type For score-based quality checks, the scores of this viewer type are used for comparison to the threshold values
vod_quality_checks.category The category of quality check event. Ex. audio, video
vod_quality_checks.type The type of quality check
vod_quality_checks.details The summary of the details, with more detail displayed by hovering
vod_quality_checks.metadata_validations_dolby_vision_source Dolby Vision Metadata Validation Source
vod_quality_checks.metadata_validations_dolby_vision_result Dolby Vision Metadata Validation Result
vod_quality_checks.metadata_validations_dolby_vision_summary Dolby Vision Metadata Validation Summary
vod_quality_checks.interval_start_time The start time of the quality check event interval, displayed based on user preferences
vod_quality_checks.interval_start_time_frames The start time of the quality check event interval in frames
vod_quality_checks.interval_start_time_seconds The start time of the quality check event interval in seconds
vod_quality_checks.interval_start_time_timecode The start time of the quality check event interval as a SMPTE Timecode
vod_quality_checks.interval_end_time The end time of the quality check event interval, displayed based on user preferences
vod_quality_checks.interval_end_time_frames The end time of the quality check event interval in frames
vod_quality_checks.interval_end_time_seconds The end time of the quality check event interval in seconds
vod_quality_checks.interval_end_time_timecode The end time of the quality check event interval as a SMPTE Timecode
vod_quality_checks.qc_result Overall QC result for the analysis/test
vod_quality_checks.count The number of quality check events
vod_quality_checks.check_duration_frames The duration of the quality check failure in frames
vod_quality_checks.check_duration_seconds The duration of the quality check failure in seconds
vod_quality_checks.check_duration_percentage The duration of the quality check failure as a percentage of trimmed asset duration
Asset Metadata

SSIMPLUS® VOD Monitor automatically captures both video and audio metadata associated with the assets being analyzed. The focus of this section is on the options for retrieving this metadata from a given analysis. To that end, the discussion will center largely around the following Insights views:

View Details
vod_video_metadata This view exposes fields to capture the video metadata (e.g. title, resolution, dynamic range, encoder, frame rate, time base, aspect ratio, frame count, color primaries and space, color transfer characteristics and content/frame light levels) for the assets included in an analysis.
vod_audio_metadata This view exposes fields to capture the various audio metadata (e.g. stream index/pid, channel count, channel layout, channel assignment, codec, coding mode, language, sample rate, Dolby Atmos bed channels, Dolby Atmos dynamic objects, IMF MCA audio content/element, quantization bits etc.) for the assets included in an analysis.
Video metadata

To fetch the video metadata associated with an analysis, we use vod_video_metadata view, as shown below:

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer btPfpMGhxZTZYmQ7gH5tfGCFMRM93FFqC7kZsPj8' \
--data '{
  "model": "vod_monitor",
  "view": "vod_video_metadata",
  "fields": [
    "vod_video_metadata.analysis_uuid",
    "vod_video_metadata.title",
    "vod_video_metadata.organization",
    "vod_video_metadata.site",
    "vod_video_metadata.test_id",
    "vod_video_metadata.test_video",
    "vod_video_metadata.stream_index",
    "vod_video_metadata.resolution",
    "vod_video_metadata.resolution_name",
    "vod_video_metadata.vertical_resolution_pixels",
    "vod_video_metadata.horizontal_resolution_pixels",
    "vod_video_metadata.dynamic_range",
    "vod_video_metadata.dynamic_range_format",
    "vod_video_metadata.encoder_decoder",
    "vod_video_metadata.encoder_decoder_profile",
    "vod_video_metadata.frame_rate",
    "vod_video_metadata.bit_depth",
    "vod_video_metadata.time_base",
    "vod_video_metadata.time_base_numerator",
    "vod_video_metadata.time_base_denominator",
    "vod_video_metadata.storage_aspect_ratio",
    "vod_video_metadata.storage_aspect_ratio_numerator",
    "vod_video_metadata.storage_aspect_ratio_denominator",
    "vod_video_metadata.frame_count",
    "vod_video_metadata.color_primaries",
    "vod_video_metadata.color_space",
    "vod_video_metadata.color_transfer_characteristics",
    "vod_video_metadata.max_content_light_level",
    "vod_video_metadata.max_frame_average_light_level"
  ],
  "filters": {
    "vod_video_metadata.analysis_uuid": "1486832c-a022-43a2-a4d7-4f75a1a3cc52"
  }
}'

The following is an example JSON response for the request above:

[
  {
    "vod_video_metadata.analysis_uuid": "1486832c-a022-43a2-a4d7-4f75a1a3cc52",
    "vod_video_metadata.title": "HDR NR Test",
    "vod_video_metadata.organization": "SSIMWAVE",
    "vod_video_metadata.site": "VOD Demo",
    "vod_video_metadata.test_id": "1",
    "vod_video_metadata.test_video": "file:///mnt/on-201/UHD-HDR-MP4-samsung-demo-reel/samsung-demo-reel-version-a.mp4",
    "vod_video_metadata.stream_index": 0,
    "vod_video_metadata.resolution": "3840 x 2160",
    "vod_video_metadata.resolution_name": "4K UHD",
    "vod_video_metadata.vertical_resolution_pixels": 2160,
    "vod_video_metadata.horizontal_resolution_pixels": 3840,
    "vod_video_metadata.dynamic_range": "HDR",
    "vod_video_metadata.dynamic_range_format": "HDR10",
    "vod_video_metadata.encoder_decoder": "HEVC",
    "vod_video_metadata.encoder_decoder_profile": "Main 10",
    "vod_video_metadata.frame_rate": 24,
    "vod_video_metadata.bit_depth": 10,
    "vod_video_metadata.time_base": "1 / 12288",
    "vod_video_metadata.time_base_numerator": 1,
    "vod_video_metadata.time_base_denominator": 12288,
    "vod_video_metadata.storage_aspect_ratio": "1:1",
    "vod_video_metadata.storage_aspect_ratio_numerator": 1,
    "vod_video_metadata.storage_aspect_ratio_denominator": 1,
    "vod_video_metadata.frame_count": 241,
    "vod_video_metadata.color_primaries": "bt2020",
    "vod_video_metadata.color_space": "bt2020nc",
    "vod_video_metadata.color_transfer_characteristics": "smpte2084",
    "vod_video_metadata.max_content_light_level": 1000,
    "vod_video_metadata.max_frame_average_light_level": 1000
  }
]

Supported view fields

The vod_video_metadata view exposes fields to capture the video metadata (e.g. title, resolution, dynamic range, encoder, frame rate, time base, aspect ratio, frame count, color primaries and space, color transfer characteristics and content/frame light levels) for the assets included in an analysis. The following section lists the various fields of interest on the vod_video_metadata view that can be used in the body of any request sent to the Insights REST API.

Metric/Measurement Field Details
vod_video_metadata.encoder_decoder The codec used to encode the test video.
vod_video_metadata.encoder_decoder_profile The codec profile used to encode the test video.
vod_video_metadata.frame_rate The frame rate (in frames per second) of the test video.
vod_video_metadata.reference_frame_rate The frame rate (in frames per second) of the reference video.
vod_video_metadata.bit_depth The bit depth of the test video
vod_video_metadata.dynamic_range The dynamic range of the test video, SDR or HDR.
vod_video_metadata.dynamic_range_format The dynamic range format of the test video e.g. SDR, HLG, HDR10, Dolby Vision.
vod_video_metadata.dolby_vision_level1_algorithm_version The Dolby Vision™ level1 metadata algrithm version of the test video.
vod_video_metadata.dolby_vision_level2_algorithm_version The Dolby Vision™ level2 metadata algrithm version of the test video.
vod_video_metadata.dolby_vision_metadata_version The Dolby Vision™ metadata version of the test video.
vod_video_metadata.dolby_vision_profile The Dolby Vision™ profile of the test video, 4, 5, 7, 8.1, 9.
vod_video_metadata.resolution The resolution of the test video in the format “horizontal x vertical”
vod_video_metadata.resolution_name The resolution name of the test video eg. SD, HD, 4K UHD etc.
vod_video_metadata.horizontal_resolution_pixels The horizontal resolution of the test video in pixels.
vod_video_metadata.vertical_resolution_pixels The vertical resolution of the test video in pixels.
vod_video_metadata.canvas_aspect_ratio The canvas aspect ratio
vod_video_metadata.canvas_aspect_ratio_denominator The canvas aspect ratio denominator
vod_video_metadata.canvas_aspect_ratio_numerator The canvas aspect ratio numerator
vod_video_metadata.chroma_subsampling The chroma subsampling
vod_video_metadata.color_primaries The color primaries (e.g. bt2020) extraced from the video metadata
vod_video_metadata.color_range The color range extracted from the video metadata
vod_video_metadata.color_space The color space (e.g. bt2020nc) extracted from the video metadata
vod_video_metadata.color_transfer_characteristics The transfer characteristics (e.g. smpte2084) extracted from the video metadata
vod_video_metadata.container_format The container format
vod_video_metadata.content_creator The content creator
vod_video_metadata.metadata_validations_dolby_vision_source Dolby Vision Metadata Validation Source
vod_video_metadata.metadata_validations_dolby_vision_result Dolby Vision Metadata Validation Result
vod_video_metadata.metadata_validations_dolby_vision_summary Dolby Vision Metadata Validation Summary
vod_video_metadata.frame_layout Specifies frame layout (interlaced, single frame, full frame, etc.)
vod_video_metadata.image_aspect_ratio The image/display aspect ratio
vod_video_metadata.image_aspect_ratio_denominator The image/display aspect ratio denominator
vod_video_metadata.image_aspect_ratio_numerator The image/display aspect ratio numerator
vod_video_metadata.mastering_display_maximum_luminance Maximum Display Mastering Luminance metadata as specified in ST 2086
vod_video_metadata.mastering_display_minimum_luminance Minimum Display Mastering Luminance metadata as specified in ST 2086
vod_video_metadata.mastering_display_primaries_blue_x Blue X value of Display Primary metadata as specified in ST 2086
vod_video_metadata.mastering_display_primaries_blue_y Blue Y value of Display Primary metadata as specified in ST 2086
vod_video_metadata.mastering_display_primaries_green_x Green X value of Display Primary metadata as specified in ST 2086
vod_video_metadata.mastering_display_primaries_green_y Green Y value of Display Primary metadata as specified in ST 2086
vod_video_metadata.mastering_display_primaries_red_x Red X value of Display Primary metadata as specified in ST 2086
vod_video_metadata.mastering_display_primaries_red_y Red Y value of Display Primary metadata as specified in ST 2086
vod_video_metadata.mastering_display_white_point_chromaticity_name Chromaticity of White Point metadata as specified in ST 2086
vod_video_metadata.mastering_display_white_point_chromaticity_x Chromaticity of White Point metadata as specified in ST 2086
vod_video_metadata.mastering_display_white_point_chromaticity_y Chromaticity of White Point metadata as specified in ST 2086
vod_video_metadata.max_content_light_level The maximum frame average light level (MaxFALL) extracted from the video metadata
vod_video_metadata.max_frame_average_light_level The maximum frame average light level (MaxFALL) extracted from the video metadata
vod_video_metadata.picture_compression Specifies the Compression scheme used
vod_video_metadata.pixel_format The pixel format
vod_video_metadata.scan_type The scan type (e.g. Interlaced or Progressive)
vod_video_metadata.shot_count Specifies the number of shots the video is composed of
vod_video_metadata.storage_aspect_ratio The storage aspect ratio
vod_video_metadata.storage_aspect_ratio_denominator The storage aspect ratio denominator
vod_video_metadata.storage_aspect_ratio_numerator The storage aspect ratio numerator
vod_video_metadata.time_base The time base, e.g. 1/25
vod_video_metadata.time_base_denominator The time base denominator
vod_video_metadata.time_base_numerator The time base numerator
vod_video_metadata.timecode The SMPTE start timecode
vod_video_metadata.reference_timecode The SMPTE start timecode of the reference video
vod_video_metadata.reference_video_metadata_json All of the reference video metadata in JSON form.
Audio metadata

To fetch the audio metadata associated with an analysis, we use vod_audio_metadata view, the analysis UUID and the identifier associated with the desired audio stream as follows:

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer btPfpMGhxZTZYmQ7gH5tfGCFMRM93FFqC7kZsPj8' \
--data '{
  "model": "vod_monitor",
  "view": "vod_audio_metadata",
  "fields": [
    "vod_audio_metadata.analysis_uuid",
    "vod_audio_metadata.title",
    "vod_audio_metadata.organization",
    "vod_audio_metadata.site",
    "vod_audio_metadata.test_video",
    "vod_audio_metadata.test_id",
    "vod_audio_metadata.stream_index",
    "vod_audio_metadata.stream_pid",
    "vod_audio_metadata.hls_variant_bandwidth",
    "vod_audio_metadata.channel_count",
    "vod_audio_metadata.channel_layout",
    "vod_audio_metadata.codec",
    "vod_audio_metadata.codec_profile",
    "vod_audio_metadata.coding_mode",
    "vod_audio_metadata.language",
    "vod_audio_metadata.sample_rate",
    "vod_audio_metadata.bitrate"
  ],
  "filters": {
    "vod_audio_metadata.analysis_uuid": "cdfe6d85-f003-401f-8855-1ec90ab988ba"
  }
}'

Note that we are fetching all available fields and filtering on only a few for illustrative purposes. Any subset of the fields listed above can be used in the fields and filters sections.

The following is an example response for the request above:

[
  {
    "vod_audio_metadata.analysis_uuid": "cdfe6d85-f003-401f-8855-1ec90ab988ba",
    "vod_audio_metadata.title": "Sample content",
    "vod_audio_metadata.organization": "SSIMWAVE",
    "vod_audio_metadata.site": "jon-eagles",
    "vod_audio_metadata.test_video": "/videos/test-data/llama-NP-FF-CF-BF-NP.mp4",
    "vod_audio_metadata.test_id": "1",
    "vod_audio_metadata.stream_index": 1,
    "vod_audio_metadata.stream_pid": null,
    "vod_audio_metadata.hls_variant_bandwidth": null,
    "vod_audio_metadata.channel_count": 2,
    "vod_audio_metadata.channel_layout": "stereo",
    "vod_audio_metadata.codec": "AAC",
    "vod_audio_metadata.codec_profile": "LC",
    "vod_audio_metadata.coding_mode": null,
    "vod_audio_metadata.language": "eng",
    "vod_audio_metadata.sample_rate": 48000,
    "vod_audio_metadata.bitrate": 50368
  }
]

Supported view fields

The vod_audio_metadata view exposes fields to capture the various audio metadata (e.g. stream index/pid, channel count, channel layout, channel assignment, codec, coding mode, language, sample rate, Dolby Atmos bed channels, Dolby Atmos dynamic objects, IMF MCA audio content/element, quantization bits etc.) for the assets included in an analysis. The following section lists the various fields of interest on the vod_audio_metadata view that can be used in the body of any request sent to the Insights REST API.

Metric/Measurement Field Details
vod_audio_metadata.stream_pid Stream program identifier (if available)
vod_audio_metadata.datasource The source the metadata is based on (playlist, stream, etc)
vod_audio_metadata.bit_stream_mode The bit stream mode. eg) Complete Main, Commentary, Emergency etc.
vod_audio_metadata.channel_assignment The channel assignment in use (e.g., SMPTE 320M-A)
vod_audio_metadata.channel_count Number of channels in the stream
vod_audio_metadata.channel_layout The audio channel layout ex. stereo
vod_audio_metadata.codec_profile The profile of the audio codec
vod_audio_metadata.hls_variant_bandwidth The bandwidth of the analyzed variant stream (only available for HLS)
vod_audio_metadata.language The language of the audio
vod_audio_metadata.coding_mode
vod_audio_metadata.codec The audio codec
vod_audio_metadata.dolby_lfe
vod_audio_metadata.dolby_dialnorm
vod_audio_metadata.dolby_dialnorm2
vod_audio_metadata.dolby_atmos_bed_channels Layout of Atmos bed (fixed) channels as a comma-separated list of short channel names (L,R,C,LFE,Ls,Rs,Lrs,Rrs).
vod_audio_metadata.dolby_atmos_dynamic_objects The number of Atmos dynamic objects.
vod_audio_metadata.mca_content_kind The kind of content contained in the audio essence as described in SMPTE RP 428-4
vod_audio_metadata.mca_element_kind The kind of element contained in the audio essence as described in SMPTE RP 428-4
vod_audio_metadata.quantization_bits The maximum number of significant bits for the value without compression.
vod_audio_metadata.sample_rate The sample rate of the audio stream in Hz
vod_audio_metadata.bitrate The expected bitrate of the audio stream in bits/s
vod_audio_metadata.mca_title Name of the overall program to which the audio essence track belongs
vod_audio_metadata.mca_title_version MCA Title Version Version of the program to which the audio belongs, such as a specific cut of a movie.
Analysis Status

An analysis will work its way through several states on its way to a success or failure. The SSIMPLUS® Analyzer sends a notification for each state transition and event update to the Insights platform. Please refer to the following table for a list of all the possible states and their meanings:

STATE DESCRIPTION
Queued Indicates that the system has successfully received an analysis request and a process has been scheduled to perform the single-ended or full-reference analysis of the video asset(s).
Estimating Indicates that the system has scheduled, is in the process of completing or has successfully completed the task to estimate the amount of computing resources (RAM, CPU) needed to complete the analysis. Once the estimation is complete, the status message will include the computing resources required.
Initializing Indicates that the SSIMPLUS® Analyzer has been successfully started. The status message captures details on how the Analyzer was started, configured and the version in use.
Aligning Indicates that the SSIMPLUS® Analyzer is in the process of completing or has completed the temporal alignment of the video assets. While in progress, the status message will include the percentage completed. Once complete, the status message will include the offsets being used in both the reference and subject/test assets. This state applies only to full-reference analyses and requires that temporal alignment is enabled (default).
Analyzing Indicates the SSIMPLUS® Analyzer is in the process of completing or has completed analyzing the video asset(s). While in progress, the status message will include the percentage completed, along with the total number of frames. Once completed, the requested measurements and metrics are ready for post-processing by the Insights data platform.
Results Ready Indicates that the Insights data platform has completed all post-processing of the analysis results and that they are ready to be retrieved/used.

This is a terminal state.
Failed Indicates that the system was unable to process one or more of the asset(s) in the analysis request. The message associated with this status should indicate the nature of the failure. A failure to estimate is generally not considered critical and the system should make every effort to analyze the asset(s) using default values for the computing resources. Other failures, such an inability to achieve temporal alignment with the chosen configuration values, may require remedial action to be applied in order to achieve success.

This is a terminal state.

The SSIMPLUS® Analyzer Cluster is designed to process large volumes of assets, of varying complexity and duration, concurrently. Due to the non-deterministic order of this processing, it becomes important for users of the system to be able to see the status of their analyses, if only to know when they can expect to fetch the completed results. The Insights REST API exposes 3 views for retreiving analysis status information:

View Details
vod_status_analysis This view exposes fields to capture a summary of the status of an analysis (e.g. percent done, test count, quality check failure count)
vod_status_test This view exposes fields to capture the current status of an analysis (e.g. percent done, current step/state)
vod_status_updates This view exposes fields to capture additional details associated with current status of an analysis (e.g. state details, error details)
Status summary

Use the vod_status_analysis view and an analysis UUID filter to see a summary or roll-up status of a given analysis, as shown below:

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 7FYtb3FB39ngTgDXF4WsCXb2NMvR3PRvhJGgypVx' \
--data '{
  "model": "vod_monitor",
  "view": "vod_status_analysis",
  "fields": [
    "vod_status_analysis.analysis_uuid",
    "vod_status_analysis.time",
    "vod_status_analysis.min_time",
    "vod_status_analysis.test_id",
    "vod_status_analysis.test_video",
    "vod_status_analysis.reference_video",
    "vod_status_analysis.stage",
    "vod_status_analysis.percent_done",
    "vod_status_analysis.test_count",
    "vod_quality_checks.count"
  ],
  "filters": {
    "vod_status_analysis.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b"
  }
}'

Consider the following JSON sample response:

[
  {
    "vod_status_analysis.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b",
    "vod_status_analysis.time": "2023-08-30 16:41:00",
    "vod_status_analysis.min_time": "2023-08-30 16:40:14",
    "vod_status_analysis.stage": "Results Ready",
    "vod_status_analysis.percent_done": 100,
    "vod_status_analysis.test_count": 3,
    "vod_quality_checks.count": 4
  }
]

Note in the example response above:

  • the test_count value indicates that there are 3 separate NR and/or FR analyses being performed and
  • the count value indicates that there were 4 quality check failures found.
Status detail

To fetch the status for a given analysis and to see the details of all no-reference and/or full-reference analyses being performed, use the vod_status_test view and filter on the analysis UUID, as shown below:

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer mFs5sKXwcVnCS4FC6kKbdFYqzcQYqVmHCKnKsNk5' \
--data '{
  "model": "vod_monitor",
  "view": "vod_status_test",
  "fields": [
    "vod_status_test.analysis_uuid",
    "vod_status_test.time",
    "vod_status_test.test_id",
    "vod_status_test.test_video",
    "vod_status_test.reference_video",
    "vod_status_test.stage",
    "vod_status_test.percent_done"
  ],
  "filters": {
    "vod_status_test.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b"
  },
  "sorts": [
    "vod_status_test.test_id"
  ]
}'

Assuming that 2e4db929-d00b-493a-98fb-77e321f3219b represents a full-reference analysis, you may see a response like the following if you query for the status immediately after submitting via the SSIMPLUS® Analyzer REST API:

[
  {
    "vod_status_test.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b",
    "vod_status_test.time": "2023-08-30 16:40:36",
    "vod_status_test.test_id": "1",
    "vod_status_test.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_status_test.reference_video": null,
    "vod_status_test.stage": "Analyzing",
    "vod_status_test.percent_done": 33.33
  },
  {
    "vod_status_test.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b",
    "vod_status_test.time": "2023-08-30 16:40:37",
    "vod_status_test.test_id": "1-1",
    "vod_status_test.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_31.mp4",
    "vod_status_test.reference_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_status_test.stage": "Analyzing",
    "vod_status_test.percent_done": 20.12
  },
  {
    "vod_status_test.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b",
    "vod_status_test.time": "2023-08-30 16:40:37",
    "vod_status_test.test_id": "1-2",
    "vod_status_test.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_41.mp4",
    "vod_status_test.reference_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_status_test.stage": "Aligning",
    "vod_status_test.percent_done": 88.75
  }
]

Notice the following in the response above:

  • The NR analysis of 1 (dog_running.mp4) 33% complete.
  • The FR analysis of 1-1 (dog_running_1080_h264_qp_31.mp4) has been temporarily aligned with the reference (i.e. Aligning state is finished) and is 20% of the way through its analysis.
  • The 1-2 asset (dog_running_1080_h264_qp_41.mp4) is still being temporarily aligned with the reference and, as such, has not yet started its FR analysis.

Repeating the request above some minutes later results in the following response:

[
  {
    "vod_status_test.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b",
    "vod_status_test.time": "2023-08-30 16:40:55",
    "vod_status_test.test_id": "1",
    "vod_status_test.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_status_test.reference_video": null,
    "vod_status_test.stage": "Results Ready",
    "vod_status_test.percent_done": 100
  },
  {
    "vod_status_test.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b",
    "vod_status_test.time": "2023-08-30 16:41:00",
    "vod_status_test.test_id": "1-1",
    "vod_status_test.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_31.mp4",
    "vod_status_test.reference_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_status_test.stage": "Results Ready",
    "vod_status_test.percent_done": 100
  },
  {
    "vod_status_test.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b",
    "vod_status_test.time": "2023-08-30 16:40:59",
    "vod_status_test.test_id": "1-2",
    "vod_status_test.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_41.mp4",
    "vod_status_test.reference_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_status_test.stage": "Results Ready",
    "vod_status_test.percent_done": 100
  }
]

In the result above, all analyses are complete and their results are ready to be used.

Status log

If you an encounter an error or unexpected behavior with a given analysis, you can choose to fetch a log of all the status messages for the analysis using the vod_status_updates view and filters on the vod_status_updates.analysis_uuid and vod_status_updates.test_id, as shown below:

curl --location 'https://insights.ssimwave.com/api/4.0/queries/run/json?cache=false' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer rjV3dmFFrWfNWKPMmtcRtQdrPtjhYczCBFHPbn5z' \
--data '{
  "model": "vod_monitor",
  "view": "vod_status_updates",
  "fields": [
    "vod_status_updates.analysis_uuid",
    "vod_status_updates.time",
    "vod_status_updates.test_id",
    "vod_status_updates.test_video",
    "vod_status_updates.reference_video",
    "vod_status_updates.stage",
    "vod_status_updates.percent_done",
    "vod_status_updates.details",
    "vod_status_updates.error_details"
  ],
  "filters": {
    "vod_status_updates.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b",
    "vod_status_updates.test_id": "1-1"
  },
  "sorts": [
    "vod_status_updates.test_id",
    "vod_status_updates.time desc"
  ]
}'
Tips

Fetch the vod_status_updates.details and vod_status_updates.error_details to see detailed messages and errors.

Since the volume of status updates can be extremely large, you are strongly encouraged to filter on both vod_status_updates.test_id and vod_status_updates.stage in order to reduce the volume of the response and focus on the asset of interest.

Sort on the vod_status_updates.time field in descending order to see the most recent messages first.

An abbreviated sample JSON response would be as follows:

[
  {
    "vod_status_updates.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b",
    "vod_status_updates.time": "2023-08-30 16:41:01.176000",
    "vod_status_updates.reference_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_status_updates.test_id": "1-1",
    "vod_status_updates.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_31.mp4",
    "vod_status_updates.stage": "Analyzing",
    "vod_status_updates.details": "{\"result\":\"pass\",\"total\":492}",
    "vod_status_updates.error_details": null,
    "vod_status_updates.percent_done": 1
  },
  {
    "vod_status_updates.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b",
    "vod_status_updates.time": "2023-08-30 16:41:01.122000",
    "vod_status_updates.reference_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_status_updates.test_id": "1-1",
    "vod_status_updates.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_31.mp4",
    "vod_status_updates.stage": "Analyzing",
    "vod_status_updates.details": "{\"progress\":{\"current\":492,\"total\":492}}",
    "vod_status_updates.error_details": null,
    "vod_status_updates.percent_done": 1
  },
  {
    "vod_status_updates.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b",
    "vod_status_updates.time": "2023-08-30 16:41:00.937000",
    "vod_status_updates.reference_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_status_updates.test_id": "1-1",
    "vod_status_updates.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_31.mp4",
    "vod_status_updates.stage": "Analyzing",
    "vod_status_updates.details": null,
    "vod_status_updates.error_details": null,
    "vod_status_updates.percent_done": 1
  },
  {
    "vod_status_updates.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b",
    "vod_status_updates.time": "2023-08-30 16:41:00.937000",
    "vod_status_updates.reference_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_status_updates.test_id": "1-1",
    "vod_status_updates.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_31.mp4",
    "vod_status_updates.stage": "Results Ready",
    "vod_status_updates.details": null,
    "vod_status_updates.error_details": null,
    "vod_status_updates.percent_done": 1
  },
  {
    "vod_status_updates.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b",
    "vod_status_updates.time": "2023-08-30 16:41:00.615000",
    "vod_status_updates.reference_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_status_updates.test_id": "1-1",
    "vod_status_updates.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_31.mp4",
    "vod_status_updates.stage": "Analyzing",
    "vod_status_updates.details": "{\"progress\":{\"current\":485,\"total\":492}}",
    "vod_status_updates.error_details": null,
    "vod_status_updates.percent_done": 0.9858
  },
  {
    "vod_status_updates.analysis_uuid": "2e4db929-d00b-493a-98fb-77e321f3219b",
    "vod_status_updates.time": "2023-08-30 16:40:59.613000",
    "vod_status_updates.reference_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/source/dog_running.mp4",
    "vod_status_updates.test_id": "1-1",
    "vod_status_updates.test_video": "file:///mnt/video-files-pvc/royalty_free/dog_running/outputs/dog_running_1080_h264_qp_31.mp4",
    "vod_status_updates.stage": "Analyzing",
    "vod_status_updates.details": "{\"progress\":{\"current\":466,\"total\":492}}",
    "vod_status_updates.error_details": null,
    "vod_status_updates.percent_done": 0.9472
  },
  .
  .
  .
]

If the SSIMPLUS® Analyzer encounters an error while processing an asset, it will report the content of the error in the vod_status_updates.error_details field for inspection. Many errors will contain sufficient information such that a remedy can be readily applied and the analysis rerun with minimal effort (i.e. fixing an invalid asset path or filename). Some errors are more serious and may require input from a video analyst and/or manipulation of the assets themselves. A failure to achieve automatic alignment between the reference and subject asset, for example, will result in an alignment error and manual actions must be taken to apply fixes before resubmitting the analysis. If an error does occur for which the cause or solution is unknown, please post a trouble ticket using the SSIMWAVE Help Center.

Supported view fields

The following table lists the various fields of interest on the vod_status_analysis, vod_status_test and vod_status_updates views for extracting data on the status of an analysis. You can use these fields in the body of any request sent to the Insights REST API.

Metric/Measurement Field Details
vod_status_analysis.min_time The time that the analysis started
vod_status_analysis.time The time the status was updated
vod_status_analysis.step The current step of analysis
vod_status_analysis.percent_done The completion percentage of the current stage
vod_status_analysis.test_count The number of files analyzed
vod_quality_checks.count The number of quality check failures
Metric/Measurement Field Details
vod_status_test.min_time The time that the analysis started
vod_status_test.time The time the status was updated
vod_status_test.step The current step of analysis
vod_status_test.percent_done The completion percentage of the current stage
vod_quality_checks.count The number of quality check failures
vod_status_test.asset_ssimplus_viewer_score The SSIMPLUS® Asset Viewer Score
Metric/Measurement Field Details
vod_status_updates.time The time the event occurred
vod_status_updates.max_event_time The time that the event started
vod_status_updates.min_event_time The latest time associated with the event
vod_status_updates.stage The current stage of the analysis
vod_status_updates.percent_done The completion percentage of the current stage
vod_status_updates.details Additional details related to the event
vod_status_updates.error_details The error description extracted from status updates that indicate that there was an error
Using Postman with SSIMPLUS® VOD Monitor

Installation and configuration

Both the SSIMPLUS® VOD Analyzer Cluster and Insights support being used in a headless/programmatic manner via the SSIMPLUS® Analyzer REST API and Insights REST API, respectively. To familiarize yourself with the API experience, SSIMWAVE offers Postman collection and environment files which can be imported and configured into the aforementioned tool by following the instructions below:

  1. Download, install and launch the Postman app.

  2. Under Settings->General make sure you set the Max response size in MB to 0 so no responses from the Insight’s REST API are truncated. This is especially useful if you plan to fetch results at per-frame granularity.

  3. Under Settings->General make sure that the SSL certificate verifiation is set to Off.

  4. (Recommended) Create a new workspace within Postman for isolation and ease of organization.

    Tip

    Use a workspace name that indicates the product and version, such as SSIMPLUS® VOD Monitor vX.YY

  5. Import SSIMWAVE’s Postman collection and environment files (File->Import).

  6. From the Collections view (left sidebar), you should see a folder called SSIMPLUS® VOD Monitor with a set of subfolders and requests therein.

  7. Make sure Postman is using the SSIMPLUS® VOD Monitor environment you imported above by selecting it from the Environment drop-down near the top right corner of the Postman GUI.

  8. Edit the SSIMPLUS® VOD Monitor environment by clicking on the eyeball button (Environment Quick Look) to the right of the drop-down and then the Edit link in the top right corner of the popup. Postman should launch a new tab showing an editable table of the environment variables.

    Note

    Modern versions of Postman also have an Environments button/view that can be selected from the sidebar on the left side of the UI.

  9. In the table presented, modify the CURRENT VALUE column for the following key/value pairs:

    VARIABLE CURRENT VALUE
    analyzer_host <analyzer_host>
    insights_client_id <insights_client_id>
    insights_client_secret <insights_client_secret>

    where

    • <analyzer_host> is the fully-qualified domain name (FQDN) or IP address of your SSIMPLUS® VOD Analyzer Cluster and
    • <insights_client_id> and <insights_client_secret> are the values sent to you by your SSIMWAVE representative after completing the Getting Started section of the Insights Data Platform.

    Depending on the details of your deployment, the value for <analyzer_host> will differ:

    • For production VPC bare-metal/other deployments, <analyzer_host> will be the FQDN of the Ingress you installed in step 5
    • For production VPC/EKS deployments, <analyzer_host> will be the hostname you selected when executing the Installation Prerequisites
    • For trial/lab deployments using an AMI deployed to an EC2 instance, <analyzer_host> will be the public DNS entry of your EC2 instance
    • For trial/lab deployments on bare metal using a virtual machine (i.e. OVA/QEMU), <analyzer_host> will be the IP address/FQDN of your virtual machine instance (Don’t forget to include the port if you used NAT.)

Testing installation and configuration

To verify that the SSIMPLUS® VOD Monitor collection and envionment have been successfully imported, configured and selected:

  1. Navigate to the SSIMPLUS® VOD Monitor->SSIMPLUS® Analyzer REST API->System Services folder and select the Version GET request.

  2. Click the Send button.

  3. You should see a response with details about your product version in the Response container of the Postman GUI (to the right or bottom of the UI).

    Troubleshooting Tip

    If you don’t see the version details or receive an error, make sure you have selected and configured the SSIMPLUS® VOD Monitor environment (see steps 7 & 9 above).
    Next, make sure that your SSIMPLUS® Analyzer Cluster is up and running by loading https://<analyzer_host>/status into your browser.

Submitting requests and viewing responses

At this point, you should be able to start submitting the requests in the SSIMPLUS® VOD Monitor collection. In general, you will want to repeat the following process to submit new analyses and view their results via the REST APIs:

  1. Submit a new analysis by choosing a no-reference (NR) or full-reference (FR) request example of your choice (listed under the SSIMPLUS® Analyzer REST API->Submit New Analysis folder).

  2. Select the Body tab from the main view and edit the contents of your POST request to suit your needs (see the SSIMPLUS® Analyzer REST API and/or Insights REST API above for examples and details).

    For example, the following NR request modifications indicate that:

    • our asset is lives in an S3 bucket and we are relying on IAM roles to provide read-only access to the bucket,
    • we are configuring the SSIMPLUS® Analyzer to target the LG OLED65C9PUA device from an expert viewer’s perspective,
    • we want to capture SSIMPLUS® Banding Score values and
    • we are using a score check on our asset that will consider the video to have failed if there is any period of 5 or more seconds where the SSIMPLUS® Viewer Score (SVS) for our selected device falls below 80.

    {
      "content": {
        "title": "NR Analysis With Score-Based Quality Checks"
      },
      "subjectAssets": [
        {
          "name": "Big_Buck_Bunny_h264_qp_21.ts",
          "path": "royalty_free/big_buck_bunny/outputs",
          "storageLocation": {
            "type": "S3",
            "name": "video-files",
            "credentials": {
              "useAssumedIAMRole": true
            }
          },
          "qualityCheckConfig": {
            "scoreChecks": [
              {
                "metric": "SVS",
                "threshold": 80,
                "durationSeconds": 5,
                "viewingEnvironmentIndex": 0
              }
            ]
          }
        }
      ],
      "analyzerConfig": {
        "viewingEnvironments": [
          {
            "device": {
              "name": "oled65c9pua"
            },
            "viewerType": "EXPERT"
          }
        ]
      }
    }
    

  3. Click the Send button.

  4. Your response will be displayed in the Response container of the Postman GUI (to the right or bottom of the UI).

  5. Find and select the result query of interest under the Insights REST API folder. Hint: A simple one to start with is the Analysis Status->Status detail, which requires no editing.

    Important

    The Postman collection and environment work together to remember the UUID of the last successfully submitted analysis. As such, any request run from the SSIMPLUS® Analyzer REST API folder will have its resulting analysis UUID value stored in Postman and automatically fed into any subsequently executed query from the Insights REST API folder, to save you the bother of repeatedly copying and pasting the UUID. Additionally, all queries in the Insights REST API folder will automatically fetch and submit the OAuth tokens needed for secure interaction with the Insights REST API. If you wish to fetch results for a prior/different analysis, simply edit the environment paste the UUID of the desired analysis into the current value for last_analysis_uuid.

  6. (Optional) Select the Body tab from the main view and alter the details of your POST request to match your use case (see Insights REST API for examples and details).

    Note

    Many of the requests under the Insights REST API folder do not require editing in order to function unless a specific filter and/or sorting field/order is desired.

  7. Click the Send button.

  8. Your responses will be displayed in the Response container of the Postman GUI (to the right or bottom of the UI). Note: Postman also supports saving/exporting results to a file.

The requests in the SSIMPLUS® Analyzer REST API->System Services and SSIMPLUS® Analyzer REST API->Frame Services subfolders can be executed in a similar fashion as described above (i.e. by following steps 2-4 above; steps 5-8 are unnecessary as the aforementioned requests do not require the Insights data platform).

Tip

You aren’t required to analyze an asset before extracting its frames/maps, although it is a common first step so that you know which frames/maps you wish to inspect. Using the Frame Services, you can request frames/maps based on PTS (if you know it) or frame index and the resulting PNG images are returned directly from the SSIMPLUS® Analyzer REST API.

Release Notes

The following section contains all of the current and past release notes for the SSIMPLUS® VOD Monitor product.

Version 2.22.0

Build Date: October 2023
Build Number: 2.22.0-12

Overview

SSIMPLUS® VOD Monitor version 2.22.0 introduces several features and enhancements, as well as bug fixes.

New Product Features

  • Audio Clicks and Pops Detection and Quality Checks

    • Added a new quality check for audio clicks and pops detection. Clicks and pops are caused by a variety of factors, including a poor recording environment, bad equipment, or a misaligned recording.

  • Audio Clipping Detection and Quality Check

    • Added a new quality check for audio clipping detection. This distortion occurs when an audio signal exceeds the maximum limit of a recording or playback system. It typically happens when the volume level of the audio reaches or exceeds the maximum level that can be accurately reproduced, resulting in the waveform being “clipped” or truncated. This distortion introduces unwanted distortion and distortion artifacts to the audio signal, leading to a harsh and distorted sound.

Appropriate licensing must be issued by SSIMWAVE® and applied to the SSIMPLUS® VOD Monitor system to enable new product features. Please contact your Account Representative for pricing details about any features for which you need licensing.

Enhancements

  • Upgraded the virtual machine operating system for all VOD Monitor images (AMI/OVA/QEMU) from Centos 7.9.2009 to Ubuntu 22.04.3 LTS
  • Upgraded Kubernetes from 1.23.6 to 1.28.2 for all VOD Monitor images (AMI/OVA/QEMU)
  • Changed SSH credentials for all VOD Monitor images (AMI/OVA/QEMU) from centos:centos to ubuntu:ubuntu
  • Changed URL for the (optional) Kubernetes Dashboard from https://<ssimplus-vod-monitor>/ to https://<ssimplus-vod-monitor>/dashboard for all VOD Monitor images (AMI/OVA/QEMU)
  • Updated other third party libraries to address newly discovered security vulnerabilities

Resolved Issues

  • Addressed a potential analyzer crash when processing .ts file with content layout detection enabled
  • Fixed an error that could occur when decoding certain interlaced ProRes content

Caveats

  • None

Limitations

  • None
Version 2.21.0

Build Date: September 2023
Build Number: 2.21.0-25

Overview

SSIMPLUS® VOD Monitor version 2.21.0 introduces several features and enhancements, as well as bug fixes.

New Product Features

  • Audio Loudness Measurements and Quality Checks

    • SSIMPLUS® VOD Monitor now provides the ability to measure True Peak Levels (per-channel), Short-term Loudness, Momentary Loudness, Integrated Loudness and Loudness Range for each physical audio track belonging to an asset
    • Measurements can be configured to use one of the algorithms outlined in the ITU-R BS.1770 family of specifications
    • Range based quality checks can be configured for True Peak Level, Integrated Loudness and Loudness Range measurements
    • Maximum Level based quality checks can be configured for Short-term Loudness and Momentary Loudness measurements

  • Active Audio/Video Content Layout

    • SSIMPLUS® VOD Monitor is now capable of reporting the content layout timeline of an asset and determining problematic regions based on a combination of audio and video content
    • In addition to options for each content type, rules can be configured to identify which regions of an asset are active or inactive based on the detection of specific elements

  • Photosensitive Epilepsy (PSE) Harding Tests

    • Added support for a new video quality check, which performs PSE Harding Tests on the video content. The tests are performed using Harding FPA. Quality checks are raised if any of the following are detected
      • red flashing
      • luminance flashing
      • spatial patterns
      • extended failure (flash risk high for extended period of time)
    • PSE for Dolby Vision assets is only available for files with interleaved metadata (not a sidecar).

  • HDR Light level Metadata Validation

    • Added support for a new video quality check, which validates the MaxFALL and MaxCLL reported by video metadata (container, Dolby Vision sidecar, or IMF playlist) matches the actual/measured video light level values.

  • SDR vs HDR Content Similarity (Alpha)

    • Expanded content similarity to support comparison between SDR and HDR content for content similarity analysis.

Appropriate licensing must be issued by SSIMWAVE® and applied to the SSIMPLUS® VOD Monitor system to enable new product features. Please contact your Account Representative for pricing details about any features for which you need licensing.

Enhancements

Resolved Issues

  • Fixed a bug where an analysis could get stuck (instead of resuming or failing) after a network outage
  • As part of the audio quality check feature described above, resolved the longstanding use of the video frame index for start and end time reporting of silence detection; the audio frame index is now used with the richer support that has been added
  • Fixed an issue where bitrate was incorrectly reported for high bitrate videos (greater than 256 MB/s)
  • Fixed an issue where SDR video was reported as HDR even though it was 8-bit (due to some erroneous HDR metadata)
  • Various user interface bug fixes and improvements

Caveats

  • None

Limitations

  • None
Version 2.20.0

Build Date: May 2023
Build Number: 2.20.0-29

Overview

SSIMPLUS® VOD Monitor version 2.20.0 introduces several features and enhancements, as well as bug fixes.

New Product Features

  • Cadence Detection

    • VOD Monitor is now able to measure the video cadence of assets including the start and end frame within the asset from where the detection occurred
      • e.g. 2:2, 3:2, 2:3, 1:1:1:2, 2:3:3:2, 2:2:2:2:2:2:2:2:2:2:2:3, 5:5, 6:4, 7:8, 8:7
    • Quality checks can be made against the measured cadence including:
      • Multiple Cadences
        • If there are multiple measured cadences within the asset a quality check is raised
      • Broken Cadences
        • If there appears to be a dropped field within the asset a quality check is raised
      • Allowed Cadences
        • If a measured cadence is not within a list of allowed cadences (including “No Cadences Allowed”) a quality check is raised

  • Content Similarity

    • VOD Monitor can now run in content similarity detection mode, the purpose of which is to detect content differences arising from frame insertions and deletions for two versions of the same title
    • A content similarity mismatch quality check is raised when the first difference is detected, providing the frame index at which the insertion or deletion occurred

  • Dolby Vision Metadata Validation and Quality Check

    This was originally released as a beta feature in 2.19.0 and has now been certified by Dolby as of 2.20.

Enhancements

  • Ability to set a freeze frame sensitivity value between 1 to 100. Larger numbers, or those closer to 100 correspond to a more sensitive detector, meaning more events, and potentially more false positives will be detected. Smaller numbers, or those closer to 1 correspond to a less sensitive detector, meaning less events will be detected. Some recommended values:

    • Sensitivity 1: Will only detect a freeze if the frames are almost identical.
    • Sensitivity 2-49: Should be used for very smooth, high-quality videos, with little compression artifacts, and little noise or film grain.
    • Sensitivity 50: This is the default. Works for most cases.
    • Sensitivity 51-99: Should be used for lower quality videos (overcompressed, a lot of digital noise or film grain)
    • Sensitivity 100: Highly sensitive to detecting freeze frames. Will fail to see some motion. Likely never needed to be set to this value.

Resolved Issues

  • Fixed an off-by-one-frame error for the end time reported for audio silence QC checks under certain circumstances.
  • Addressed some inconsistencies between “all” and “left/right” silence detection in audio tracks.
  • Addressed case where mono audio tracks would report silence for the right channel.
  • Updated third party libraries to address security vulnerabilities.
  • Removed duration, skip start, and skip end from the FPS QC check configuration in the user interface, as the concept doesn’t apply.
  • Fixed a case where the host may be missing from the Analysis Submission Results page.
  • Addressed a corner case that could result in a failed job when submitting a large number of jobs simultaneously.
  • Resolved a corner case where banding score and max luminance QC checks could be raised if those values were zero.
  • Fixed a case where editing an existing analysis request did not fill in the S3 credentials drop-down correctly.

Caveats

  • None

Limitations

  • Freeze frame detection: In some cases where freeze images contain grain or noise, the frame may be detected as motion.
Version 2.19.0

Build Date: March 2023
Build Number: 2.19.0-4

Overview

SSIMPLUS® VOD Monitor version 2.19.0 introduces several features and enhancements, as well as bug fixes.

New Product Features

  • Quality check for video frame rate and scanning

    New quality checks for when metadata and measured frame rates do not match.

  • Color volume difference, pixel luminance, and frame luminance score checking

    • Color volume difference: You can now configure quality check events to be raised when the CVD is below a desired score threshold for a configurable duration.
    • Pixel/frame luminance: You can now configure quality check events to be raised when luminance is above or below configured thresholds.

  • Dolby Vision Metadata Validation and Quality Check (Beta)

    Note

    This release provides support for validation of Dolby Vision Metadata. The feature is currently in beta and is pending certification by Dolby. Official tools such as metafier should be used to confirm compliance.

    Metadata can be provided either through a sidecar XML file or interleaved with JPEG2000 frames inside of an MXF asset in PHDR (Prototype High Dynamic Range) format. If your license permits this feature, validation will be performed whenever metadata is detected in any of the aformentioned formats.

    An analysis can be configured on a per-asset basis to produce a Quality check event if the there are errors detected within the metadata. Metadata validation reports with verbose information can also be viewed through the VOD Monitor Application within Insights for each Analysis.

Enhancements

  • Migrated to version 4.0 of the Insights REST API

    Any scripts that make use of the Insights REST API, will need to update the URL from https://insights.ssimwave.com:19999/api/3.1/login to https://insights.ssimwave.com/api/4.0/login.

  • Added support for specifying MPEG-TS PIDs by their HEX values to the Analyzer REST API.

  • Added support for .raw and .v210 RAW video files to the Analyzer REST API.

  • Improved Insights-driven navigation experience

    The landing page for the user interface has been modified to improve navigation into the Insights-driven results viewing.

Resolved Issues

  • Fixed an issue where specifying an invalid MPEG-TS PID resulted in a probe timeout in the Analyzer REST API.

Caveats

  • None
Version 2.18.1

Build Date: February 2023
Build Number: 2.18.1-6

Overview

SSIMPLUS® VOD Monitor version 2.18.1 introduces several enhancements and performance improvements.

New Product Features

  • SSIMPLUS® VOD Monitor as AWS Managed Service

    This release provides support for deploying SSIMPLUS® VOD Monitor as an AWS Managed Service. This production deployment model installs the SSIMPLUS® Analyzer Cluster and keeps all customer video assets within the customer’s AWS account but, as with a traditional SaaS offering, all concerns associated with the SSIMPLUS® Analyzer Cluster, including provisioning the AWS resources and services required as well as deploying, managing, monitoring and upgrading the software system itself are handled by SSIMWAVE, with minimal interaction required on the customer’s part.

Enhancements

  • None

Resolved Issues

  • Fixed authentication issues when using S3 buckets and IAM role credentials.

Caveats

  • None
Version 2.18.0

Build Date: December 2022
Build Number: 2.18.0-19

Overview

SSIMPLUS® VOD Monitor version 2.18.0 introduces several enhancements and performance improvements.

New Product Features

  • Color gamut detection, color volume difference and Luminance for SDR Content

    This release now supports color gamut detection, color volume difference and luminance on SDR content.

  • IMF Mastering Display & Frame Rate Video Metadata Extraction

    This release now extracts additional metadata from IMF videos, including Video Frame Rate, Frame Layout, Content Creator, Content Originator, Audio Sample Rate, Audio Layouts and more, as well as Mastering Display information such as White Point Chromaticity, Max/Min Luminance, and Color Primaries.

    Note

    Appropriate licensing must be issued by SSIMWAVE® and applied to the SSIMPLUS® VOD Monitor system to enable new product features. Please contact your Account Representative for pricing details about any features for which you need licensing.

Enhancements

  • New target viewing device

    The television model LG OLED65C2PUA has been added as new viewing environment device.

  • Support for SBS score checks on Reference Assets

    Added support for SBS score checks on a reference asset.

  • Faster ProRes Decoder

    This release now includes a separately licensed multi-threaded ProRes decoder that is capable of faster video processing, speeding up overall job processing time for ProRes content.

Resolved Issues

  • Addressed an issue where the analyzer may fail to connect to Insights after the Insights host is updated in the license file.
  • Upgraded Java JDK version from 11.0.16 to 11.0.17 in order to address a security vulnerability.
  • Analysis submitted via the API now provides a more meaningful error when the resolution is too small.
  • Improvements made to report and recover from decoding errors during asset probing.

Caveats

  • None
Version 2.17.0

Build Date: November 2022
Build Number: 2.17.0-20

Overview

SSIMPLUS® VOD Monitor version 2.17.0 introduces several enhancements and performance improvements.

New Product Features

  • None

Enhancements

  • Insights Based Application Logging

    VOD Monitor now also streams application logs to Insights to allow for detailed debugging in cases where troubleshooting with SSIMWAVE support is required.

  • Support For Deleting An Analysis

    The VOD Monitor UI and API now support deleting a completed analysis. See the API documentation for more details on the delete endpoint.

  • Enhanced API Support For Frame/Map Cache

    The VOD Monitor API now supports viewing details on the frame/map cache and controlling the clearing of the aforementioned cache based on a date. See the API documentation for more details on the /cache endpoint.

  • API Support For Viewing and Updating Feature License

    The VOD Monitor API now supports viewing and updating the feature license associated with the VOD Monitor system without requiring redeployment. See the API documentation for more details on /featureLicense endpoint.

  • Start Timecode Support

    Support has been added for displaying video times with their SMPTE start timecode offset applied. By default dashboards will continue to use a 0 start time unless configured to apply the start timecode.

  • Host Management UI

    A new Manage Host view has been added to the Insights Web UI that allows one to see and control the state of each VOD Monitor system deployment. This view supports:

    • Viewing and testing system connection status to Insights
    • Viewing and controlling the frame/map cache
    • Viewing and updating one’s feature license, including features purchased/supported and license expiration
    • Viewing the system health/status

Resolved Issues

  • Certain color bar patterns which were previously not detected will now be correctly identified.
  • Added a limit of 20 to the number of viewing environments that can be requested in an analysis.
  • An arithmetic exception has been fixed when performing banding detection on certain videos.
  • When the source pixel format was rgb48le, a bad conversion could have occurred which would have resulted in the generation of incorrect banding maps. This has been addressed.
  • The Frame Viewer UI was incorrectly applying the region of interest (ROI) values before adjusting for the display aspect ratio (DAR). This has been addressed and DAR is now being applied prior to the ROI.
  • In cases where the Frame Viewer UI was being used to render frames and score plots for multiple analysis UUIDs, confusion between the same test IDs (e.g. 1-1) across analysis UUIDs was possible. This has been addressed.
  • For VOD Monitor lab deployments (AMI/OVA/QEMU), it was observed that some Docker software images were being unceremoniously removed from the Docker daemon registry, resulting in the system being unable to process new analyses. Additional measures have been put in place in attempt to address this situation.
  • Miscellaneous UI glitches were addressed.

Caveats

  • None
Version 2.16.0

Build Date: September 2022
Build Number: 2.16.0-18

Overview

SSIMPLUS® VOD Monitor version 2.16.0 introduces several enhancements and performance improvements.

New Product Features

  • None

Enhancements

  • Support for cancelling jobs from the UI

    Leveraging the existing API endpoint, users can now cancel in-progress jobs from the UI.

  • Ability to rerun an analysis from the UI

    An analysis can now be rerun from the UI without recreating the job settings manually.

  • Quality check improvements

    Quality checks (pass/fail) can now be applied to SVS, output EPS, and banding scores.

  • Added API endpoints

    A GET /status endpoint has been added to the Analyzer API and a DELETE /cache endpoint was added to the Analyzer and Frame Services API.

  • Miscellaneous performance improvements (memory/cpu)

Resolved Issues

  • Previously, skipStart and skipEnd were not applied to quality checks. This has been corrected.
  • API can now handle a leading slash (/) in the image sequence file path in S3. For versions 2.15.0 or older, the leading slash needs to be removed from the path of image sequence files for them to be processed.
  • Fixed an issue where .jpc files transcoded from .tiff with OpenJpeg obj_compress decoded as white frames

Caveats

  • None
Version 2.15.0

Build Date: July 2022
Build Number: 2.15.0-21

Overview

SSIMPLUS® VOD Monitor version 2.15.0 introduces several enhancements and performance improvements.

New Product Features

  • None

Enhancements

  • Banding Score and Banding Maps Improvements

    Banding score accuracy has been improved to more closely align with human perception. This change will be seen in both banding scores and banding maps’ features.

  • Video processing performance and stability improvements

    The underlying video processing technology has been upgraded to provide better performance and stability.

  • Dashboard Performance

    Performance improvements to the main status dashboard have been implemented. Most of these benefits have been delivered directly to the cloud and may be enjoyed without upgrading the software.

  • Temporal Alignment Improvements

    The temporal alignment algorithm has been rewritten in 2.15.0. Testing has shown that the new algorithm is either on par with the old algorithm, or considerably better at aligning videos. The old algorithm can be re-enabled through configuration. Regardless of the temporal alignment algorithm chosen, SSIMPLUS scores are unaffected.

  • Fail Fast on Unrecoverable Errors

    Assessment of what errors constitute recoverable versus unrecoverable errors have been improved, and the latter have been excised from the retry mechanism. This speeds up failure reporting for jobs that will not pass even with retries (such as a “file not found error”, or an HDR/SDR mismatch between reference and test videos), while maintaining the current retry mechanism for correctable errors.

  • Additional image sequence support

    Support for additional image formats such as j2c, j2k, jp2, and exr has been added.

  • Added new target devices for SSIMPLUS Viewer Scoring

    Canon DP-V2421.

Resolved Issues

  • Fixed a potential off-by-one frame mismatch when using frame view with a 30i reference video and multiple 60p test videos
  • Renamed “Content Complexity” in an API error message to “Complexity Analysis” to match the option in the UI
  • Increased the API request body limit from 10K to 1M
  • Corrected a potential accuracy issue in analysis progress/remaining estimation
  • Addressed a case of audio silence quality triggers not detecting entirely silent videos
  • Permit startFrame and temporal alignment to be specified together in the VOD Monitor API
  • Miscellaneous user interface improvements

Caveats

  • None
Version 2.14.2

Build Date: May 2022
Build Number: 2.14.2-12

Overview

SSIMPLUS® VOD Monitor version 2.14.2 provides several bug fixes.

New Product Features

  • None

Enhancements

Resolved Issues

  • Corrected a problem where if a map or frame view could not be generated within 1 minute, the operation would just fail even if the image was eventually created and cached. This problem would require the user to refresh the page in order to see the requested images.
  • Fixed an issue where audio silence quality check would fail to detect if the audio silence did not end before the end of the video.
  • Fixed an issue where Asset SVS scores were incorrect when an analysis included the same device with multiple viewer types. This fix applies to the SSIMWAVE Insights Data Platform and does not require a software upgrade.

Caveats

  • None
Version 2.14.1

Build Date: April 2022
Build Number: 2.14.1-10

Overview

SSIMPLUS® VOD Monitor version 2.14.1 introduces an enhancement and a bug fix.

New Product Features

Asset-level Banding Score

  • The previously released SSIMPLUS® Banding Score feature now has the ability to provide a banding score for the asset as a whole, in addition to the previously supported time-variable score.

Enhancements

  • Standard dynamic range (SDR) HEVC/H.265 encoded videos with a resolution of 1920x1080 are now supported for no-reference scoring; previously only 4K and higher resolutions were supported for NR mode.

Resolved Issues

  • Corrected a case when macroblocking is severe, the SVS score was not sufficiently impacted by the impairments

Caveats

  • None
Version 2.14.0

Build Date: March 2022
Build Number: 2.14.0-55

Overview

SSIMPLUS® VOD Monitor version 2.14.0 introduces several new features and enhancements.

New Product Features

Asset-level Banding Score

  • The previously released SSIMPLUS® Banding Score feature now has the ability to provide a banding score for the asset as a whole, in addition to the previously supported time-variable score.

Enhancements

  • User Experience (UX) improvements have been made to the analysis submission UI.
    • Support for browsing and selecting content from S3 bucket(s)
    • Support for picking the Viewer Type(s) to associate with your device
    • Support for setting default Viewer Type(s) and device(s)
    • Support for setting the starting frame on an asset
  • The ability to cancel a submitted/running analysis has been added. See the API documentation for details.
  • JPEG2000 decoding performance has been further improved by up to 30%.
  • Addressed security scan vulnerabilities on VOD Monitor container images
  • Added new target devices for SSIMPLUS® Viewer Scoring: Canon DP-V3120 & Sony BVM-X300.
  • Added guide/instructions for deploying on AWS EKS
  • Improved the performance of HDR color stats collection

Resolved Issues

  • Addressed UI inconsistencies when the reference video is longer than the test video.
  • Fixed a problem where generating quality maps for RGB Pixel format videos (.png, .mxf, etc) might sometimes fail.
  • Fixed an issue where the global QualityCheckConfig configurations did not apply to individual Quality Checks.
  • Fixed an issue where setting configuration for the colorBarFrame quality check through the REST API had no effect.
  • Fixed an issue where the test SVS score was higher than the source SVS score for the SSIMPlusCore device

Caveats

  • None
Version 2.13.2

Build Date: February 2022
Build Number: 2.13.2-5

Overview

SSIMPLUS® VOD Monitor version 2.13.2 addresses potential timeouts when streaming metrics to Insights.

New Product Features

  • Addressed an issue in environments where idle connections are terminated by a firewall rule. In this case, one of the insights connections, which can remain dormant for some time, could be terminated resulting in an analysis failure. There is now a keepalive message sent on the connection to ensure the connection stays active.

Enhancements

  • None

Resolved Issues

  • None

Caveats

  • None
Version 2.13.1

Build Date: January 2022
Build Number: 2.13.1-5

Overview

SSIMPLUS® VOD Monitor version 2.13.1 makes the temporal alignment algorithm more robust.

New Product Features

  • None

Enhancements

  • Improved alignment recovery when temporal alignment is lost part way through processing an asset

Resolved Issues

  • None

Caveats

  • None
Version 2.13.0

Build Date: November 2021
Build Number: 2.13.0-27

Overview

SSIMPLUS® VOD Monitor version 2.13.0 introduces several new features and enhancements including IMF, TIFF, and DPX support, as well as a new metric for visibility of color differences between a reference and test content.

New Product Features

  • TIFF Codec Support

    Reference files that use the TIFF codec are now supported for analysis.

  • DPX Codec Support

    Reference files that use the TIFF codec are now supported for analysis.

  • IMF Container Support

    Videos that use IMF as a container are now supported for analysis.

  • Metric for Color Difference Visibility

    SSIMPLUS® VOD Monitor version 2.13.0 introduces a new metric for comparing differences in color between reference and subject assets. It also includes a color difference map that allows users to visualize the magnitude of the color differences across an image.

Enhancements

  • The list of supported devices to use for human-perceived quality has been updated with new display models and sizes.
  • Banding maps have been updated with recent changes to the banding score so that detailed assessment of banding across an image will match the frame’s banding score.
  • Accuracy of the ‘faster’ banding score algorithm has been increased to more accurately reflect the reference algorithm, while also improving its performance.
  • An app for submitting and managing jobs has been added to the product to provide an alternative to API job submission when using SSIMPLUS® VOD Monitor in a more interactive mode.
  • Support is provided for disabling automatic temporal alignment when submitting analyses via the Analyzer REST API.

Resolved Issues

  • Fixed issue where setting the Asset startFrame in the Analyzer REST API had no effect.

Caveats

  • None
Version 2.12.0

Build Date: October 2021
Build Number: 2.12.0-24

Overview

SSIMPLUS® VOD Monitor Production version 2.12.0 introduces color gamut detection and HDR metadata validation.

New Product Features

  • Color Gamut Detection

    This feature performs per-pixel analysis to detect and report the color gamut coverage of individual frames. A comprehensive statistics view across the entire asset can be displayed in the results dashboard.

  • HDR Metadata Valiation

    This feature performs frame by frame analysis, calculates per-pixel luminance values in nits and reports minimum, average and peak luminance values of a frame. Furthermore, Maximum Content Light Level (MaxCLL) as well as Maximum Frame Average Light Level (MaxFALL) are derived from per frame analysis.

Enhancements

  • When accessing assets from S3 buckets, the mount stability has been improved and performance has been increased.

Resolved Issues

  • Updated images to address CVE-2021-3711 and CVE-2021-3712 security vulnerabilities.

Caveats

  • None
Version 2.11.0

Build Date: August 2021
Build Number: 2.11.0-51

Overview

SSIMPLUS® VOD Monitor Production version 2.11.0 introduces the frame viewer and quality map viewer, previously only available in VOD Monitor Inspector, to the production product. It also now allows any analyzer configuration parameters that can be set via configuration to be passed via the REST API. It adds support for scoring video quality of ProRes video without a reference source, and improves the performance of JPEG2000 decoding.

New Product Features

  • None

Enhancements

  • The frame viewer and quality maps features of VOD Monitor Inspector are now able to be used to view job results directly in VOD Production without running Inspector.
  • Support for ProRes videos (HDR and SDR) when assessing video quality without a reference source.
  • Any analyzer configuration parameters that can be specified in config.json can now also be passed through the REST API. See the REST API documentation for more details.
  • The performance of decoding JPEG2000 videos has been improved by up to 30%.

Resolved Issues

  • None

Caveats

  • None
Version 2.10.0

Build Date: June 2021
Build Number: 2.10.0-12

Overview

SSIMPLUS® VOD Monitor Production Version 2.10.0 adds HDR support for the JPEG2000 codec, as well as improving banding score alignment with human perception for HDR videos.

New Product Features

  • None

Enhancements

  • JPEG2000 HDR source scoring has been improved. Previously, HDR would not have been factored into the scoring.
  • Improved banding score alignment with human perception for HDR videos. Enhanced chroma and contrast sensitivity functions are now incorporated into the banding score to reflect the visibility of perceived banding more accurately.
  • Added support for AMD64 CPUs.

Resolved Issues

  • Fixed an issue where Dolby Digital videos would not decode if they had multiple streams and the video stream was not the first one.

Caveats

  • None
Version 2.9.0

Build Date: March 2021
Build Number: 2.9.0-20

Overview

SSIMPLUS® VOD Monitor Production Version 2.9.0 improves HDR support for typical and expert viewer profiles. It also improves the performance of JPEG2000 decoding, resulting in faster job processing for such content.

New Product Features

  • None

Enhancements

  • Upgraded the implementation of SSIMPLUS® scores for HDR content for typical viewers, to more accurately assess perceived quality based on the psychovisual behaviours of viewers that do not have a video processing background.
  • Upgraded the implementation of SSIMPLUS® scores for HDR content for expert viewers, to more accurately assess the perceived quality based on the psychovisual behaviours of viewers that have background knowledge and expertise in video processing.
  • Improved the performance of JPEG2000 processing.
  • Added support for Dolby Digital®, Dolby Digital Plus®, and Dolby Atmos® audio streams using a Dolby certified decoder.
  • Quality check parameters can now be configured on a per-job basis through the SSIMPLUS® Analyzer REST API.
  • Added a new analysis state (Analysis Initiated) which captures details about how the SSIMPLUS® Analyzer was started, configured and executed for a given analysis, including the version in use.
  • Provided the ability to fetch and filter video, audio and closed caption quality checks based on percentages of the length of a given asset.
  • Documentation updates, including:
    • Renaming of SSIMWAVE Viewer Intelligence Platform to SSIMWAVE Insights;
    • Added examples for fetching SSIMPLUS® SVS and EPS frame scores from Insights;
    • Various section renaming, reorganization and content clean-up.

Resolved Issues

  • None

Caveats

  • None
Version 2.8.0

Build Date: December 2020
Build Number: 2.8.0-20

Overview

SSIMPLUS® VOD Monitor Production Version 2.8.0 introduces support for:

New Product Features

Note

Appropriate licensing must be issued by SSIMWAVE® and applied to the SSIMPLUS VOD Monitor Production system to enable the following new add-on product features.

Please contact your Account Representative for pricing details.

  • Video, Audio and Closed Captions Quality Checks

    SSIMWAVE has added support for the following video, audio and closed captions quality checks:

    • Black frames
    • Freeze frames
    • Solid color frames
    • Color bar frames
    • Audio silence (left, right, all)
    • Closed captions missing

Enhancements

Resolved Issues

  • Fixed issue with automatic temporal alignment which resulted in an increased number of alignment failures.
  • Fixed issue where the Analyzer Docker container, when deployed to certain Centos distributions, would fail with a getentropy error.

Caveats

  • None
Version 2.7.0

Build Date: August 2020
Build Number: 2.7.0-17

Overview

SSIMPLUS® VOD Monitor Production Version 2.7.0 introduces support for:

New Product Features

Note

Appropriate licensing must be issued by SSIMWAVE® and applied to the SSIMPLUS VOD Monitor Production system to enable the following new add-on product features.

Please contact your Account Representative for pricing details.

  • SSIMWAVE Encoder Validation

    SSIMWAVE has provided support for an essential use case focused on providing content creators (i.e. Studios) with the ability to register known high-quality encodes against which candidate encodes, provided by distribution partners (i.e. Retail Partners), can be compared and judged as to their respective quality and suitability. Key to this workflow is the recognition that in any video asset there are scenes of interest that are of particular importance to the content creator and that these scenes are where quality assessments are most appropriately focused. Additionally, this workflow acknowledges that content creators may often need fine-grained control over the quality criteria that constitutes a passing or failing encode.

Enhancements

  • Removed the 5 device limit on the list of devices for which device-adaptive scores are captured

Resolved Issues

  • Fixed issue with SSIMPLUS® Analyzer producing a PID error on termination (e.g. wait: pid 12 is not a child of this shell), which resulted in an exit code of 127 and, if using the VPC deploment model, unnecessary analysis pod restarts.

Caveats

  • None
Version 2.6.0

Build Date: July 2020
Build Number: 2.6.0-12

Overview

SSIMPLUS® VOD Monitor Production Version 2.6.0 introduces exciting, industry first, perceptual quality assessment capabilities including:

  • SSIMPLUS Deep Learning based No Reference Quality Metric (DNN-NR)

These unique capabilities are the first of their kind to hit the market and do not exist anywhere else.

New Product Features

Note

Appropriate licensing must be issued by SSIMWAVE® and applied to the SSIMPLUS VOD Monitor Production system to enable the following new add-on product features.

Please contact your Account Representative for pricing details.

  • SSIMPLUS - Deep Learning based No Reference Quality Metric (DNN-NR)

    SSIMWAVE developed a deep learning based no-reference quality metric. It leverages SSIMWAVE’s knowledge of the human visual system to create a no-reference Single-ended quality assessment that captures spatial, temporal and joint video impairments by inspecting assets down to their constituent pixels. With a higher than 90% correlation with the most accurate full-reference metric (SSIMPLUS), SSIMPLUS no-reference QoE measures Viewer Experience in real-time. It is the only Single-ended quality assessment that can provide meaningful scores across all resolutions, frame rates, dynamic ranges adapted to target display devices. As of VOD Monitor Production Version 2.6.0, SSIMPLUS Single-ended quality assessment is the default and preferred no-reference quality measurement.

    • Content validation use cases that do not have a Mezzanine source available can fully rely on SSIMPLUS Single-ended metric to validate the Viewer Experience at any point in a delivery chain. Typical deployment scenarios include:

      • Source validation - how would OTT services, D2Cs, MVPDs that receive hundreds if not thousands of videos from different providers evaluate the quality of the assets? How to decide if those videos are worth processing further?

      • Encoder validation - in other situations, content delivery teams might have access only to the encoder output without the Source file. How to ensure that these encoded outputs are with the desired video quality?

      • Customer premises validation - another very common situation is when providers have access only to the HDMI out of a user device. Similarly to the other use cases they need a Viewer Experience metric they can rely on to measure and understand if and how the workflow processes and vendors have affected the Viewer Experience and what is the degradation vs. the targeted SSIMPLUS score.

        In all the above situations SSIMPLUS Single-ended quality assessment provides the needed KPI to make an informed and accurate decision. To learn more about SSIMPLUS Single-ended quality assessment at the edge - read here.

Enhancements

  • None

Resolved Issues

  • None

Caveats

  • None
Version 2.5.0

Build Date: May 2020
Build Number: 2.5.0-26

Overview

SSIMPLUS® VOD Monitor Production Version 2.5.0 introduces exciting, industry first, perceptual quality assessment capabilities including:

  • SSIMPLUS Viewer Score Measurement for High Dynamic Range (HDR) content for HDR10 and Dolby Vision® standards
  • Detection of Colour Banding artifacts

These unique capabilities are the first of their kind to hit the market and do not exist anywhere else.

This release also introduces the capability for HTTP Live Streaming (HLS) monitoring, expanding the ability for OTT VOD workflow assurance use cases beyond the source, encode and transcode checks to include the ability for perceptual quality assurance at packager output.

In addition, it contains several enhancements and bug fixes including additional job submission status and error codes, improved Temporal Alignment (TA) resiliency and support for 24 FPS vs 23.97 FPS for two-point Full Reference (FR) use cases.

New Product Features

Note

Appropriate licensing must be issued by SSIMWAVE® and applied to the SSIMPLUS VOD Monitor Production system to enable the following new add-on product features.

Please contact your Account Representative for pricing details.

  • HDR10 Support

    SSIMWAVE delivers the unparalleled ability for objective perceptual quality assessment of HDR10 content processing at scale, using a Viewer-Aware approach- a method that begins with the simple action of measuring the content’s Viewer Experience at each part of the workflow. The goal of using such a Viewer-Aware approach is to ensure the end-viewer is at the center of all your workflow decisions.

    VOD Monitor Production Version 2.5.0 enables customers to assess the impact of an encode or transcode process in an HDR10 workflow. VOD Monitor Production Version 2.5.0 delivers an updated SSIMPLUS Encoder Performance Score (EPS) metric, which quantifies the encoding or transcoding impact on perceptual quality for an HDR10 content encode or transcode output, given an HDR10 source.

  • Dolby Vision® Support

    In an industry first, SSIMWAVE delivers the ability for objective perceptual quality assessment of Dolby Vision® content processing at scale, using a Viewer-Aware approach. Customers can assess the impact of an encode or transcode process in a Dolby Vision® workflow. VOD Monitor Production Version 2.5.0 delivers an updated SSIMPLUS Encoder Performance Score (EPS) metric that quantifies the encoding or transcoding impact on perceptual quality for a Dolby Vision® content encode or transcode output, given a Dolby Vision® source.

  • Colour Banding Detection

    SSIMWAVE delivers the unprecedented ability to objectively detect and assess perceptual quality of the Colour Banding artifact at scale, using a Viewer-Aware* approach. Supported use cases include detection of Colour Banding in incoming third-party mezzanine asset sources, as well as detection if introduced or compounded by a downstream transcoding process.

    To achieve this, VOD Monitor Production Version 2.5.0 introduces the SSIMPLUS Banding Score (SBS) metric, which quantifies the amount of Colour Banding that is present within the video asset. The SSIMPLUS algorithm analyzes each frame of the video asset for the presence of Colour Banding and provides an SBS score on a per-second and per-asset level indicating the severity of the Banding as perceived by the end-viewer.

    See SSIMPLUS in action in our new video.

  • HLS Support

    With VOD Monitor Production Version 2.5.0, SSIMWAVE extends its OTT Video On Demand workflow assurance capabilities to support perceptual quality assessment of OTT profile ladders at the output of the packaging workflow stage. The initial release supports the HTTP Live Streaming (HLS) protocol. This capability supports both No-Reference (NR) and Full-Reference (FR) measurement methods using the SSIMPLUS Viewer Score (SVS) metric.

    The NR-based capability enables single-point deployment use cases, where the organization only requires monitoring of HLS-packaged assets without requiring monitoring of the corresponding mezzanine asset sources (e.g. VOD assets are obtained from a third-party as HLS-packaged OTT ladders).

    The FR-based capability enables two-point deployment use cases where the organization has a requirement to carry out perceptual quality assurance on both the mezzanine sources as well as the downstream-packaged HLS content. In the FR case, the organization can measure and ensure bad sources are detected (using NR at the first monitoring point), while also measuring and detecting bad transcodes (i.e. quantifying impact of the transcode process on perceptual quality), and assuring that the content makes its way downstream to the output of the packaging stage.

    *Viewer-aware approach - The goal of using a Viewer-Aware approach is to ensure the end-viewer is at the center of all your workflow decisions, so that the perceptual quality you deliver is at the desired levels you need to keep subscribers happy. This method begins with the simple action of measuring the Viewer Experience of the content at each part of the workflow.

Enhancements

  • More Granular Video Analysis Job And Error State Reporting

    To improve the operational aspects related to managing high asset volume VOD production workflow pipelines, additional video analysis job state and error codes were exposed in VOD Monitor Production Version 2.5.0. This provides operators with a more granular real-time view of submitted job progress.

    Video analysis job states added in this release:

    • Analysis Submitted
    • Estimate Scheduled
    • Estimate Running
    • Estimate Completed

    Video analysis error states added in this release:

    • Estimate Failed
    • Analysis Failed

    The Estimate Failed and Analysis Failed errors are only available when using the SSIMPLUS® Analyzer Cluster, which is leveraged in the VPC Kubernetes Analyzer Cluster and SaaS deployment models. See Video Analysis Status for details.

  • Improved Temporal Alignment (TA)

    Improved SSIMPLUS Viewer Score (SVS) when running in Full Reference (FR) mode due to enhancements to the Temporal Alignment (TA) algorithm which results in TA being more consistent and reliable.

  • Expanded Cross-Frame Rate Support

    VOD Monitor Production Version 2.5.0 enhances the cross-frame rate capability of the SSIMPLUS Viewer Score (SVS) metric by increasing the number of supported reference-test frame rate combinations when running in Full Reference (FR) mode. The newly supported reference-test frames per second (FPS) pairs are:

    • 23.98 vs 24
    • 24 vs 23.98
    • 29.97 vs 30
    • 30 vs 29.97
    • 59.94 vs 60
    • 60 vs 59.94

  • Updated The Default Device To The Latest LG OLED 65 Inch TV Model

    The default device was changed from the LG C7 series 65 inch model (OLED65C7P) to the latest LG C9 series 65 inch model (OLED65C9P). The OLED65C9P is the default device for both the No-Reference (NR) and Full-Reference (FR) perceptual quality analysis. The OLED65C9P was used by SSIMWAVE Labs in the latest series of subjective study evaluations, including during the development of the SSIMPLUS Banding Score (SBS). This update ensures that SSIMPLUS VOD Monitor Production Version 2.5.0 provides the latest advances in SSIMPLUS Viewer Score (SVS) metric perceptual quality scoring for the latest in consumer electronics equipment.

Resolved Issues

  • Support Digital vs Film (24fps vs 23.97fps)

    VOD Monitor Production Version 2.5.0 fixes a bug for two-point monitoring deployments, where monitoring point 1 (reference) and monitoring point 2 (test) asset’s Frames Per Second (FPS) are different, e.g. reference is 24 FPS and test is 23.97 FPS. In this case the SSIMPLUS Viewer Score (SVS) Full Reference (FR) measurement would suffer Temporal Alignment (TA) loss.

Caveats

  • None
Version 2.4.0

Build Date: January 2020
Build Number: 2.4.0-12

Enhancements

  • Content Complexity Measure
    • The SSIMPLUS Content Complexity Measure measurement of the complexity of an asset’s content and how hard it is for an encoder to encode. Complexity measurements can be used to make more intelligent decisions regarding the type of encoder, and/or profile settings to apply, when encoding asset for downstream packaging or consumption.

Fixes & Improvements

  • Addressed Temporal Alignment (TA) issues for situations with 30i source and 15i test / output videos.
  • Addressed Temporal Alignment (TA) issues for situations with 30i source and 15i test / output videos.
  • Fixed issue where a condition may exist when matching the top and bottom frame for temporal alignment causing SSIMPLUS Viewer Score irregularity.

Caveats

  • None
Version 2.3.0

Build Date: November 2019
Build Number: 2.3.0-41

Enhancements

  • SSIMPLUS VOD Monitor Production Workflow Improvements:
    • More efficient use of resources by probing for video properties in order to properly size jobs/pods.
    • Improved job lifecycle management by providing more details on job status, specifically the time in between job submission and when the job is deployed to Kubernetes.
    • Exposing the job status to SSIMWAVE Viewer Intelligence® Platform- e.g. “submitted” status.
  • Support for configuring the ports used by the SSIMWAVE Viewer Intelligence® Platform Proxy (required to comply with customer security protocols).
  • Provided an aggregated Viewer Score in order to assess whether assets Pass or Fail.
  • Failure Reasoning is provided based on the Viewer Score falling below the Pass/Fail threshold - will provide the minutes in the video asset where the Viewer Score dropped below the threshold in order to provide guidance as to where the encoders and transcoders can be tuned to improve asset quality.
  • A Source Qualification use case will be supported where sources will be qualified based on the aggregate Viewer Score.
  • Updated fields in the RESTful API - see Product Documentation for more details.

Fixes & Improvements

  • Fixed issue where Viewer Scores were entered for multiple assets when jobs were restarted.
  • Fixed issue with the job estimator resiliency - not being able to handle multiple simultaneous job requests.
  • Fixed issue where in some cases matching the top and bottom frame for temporal alignment is causing Viewer Score irregularity.

Caveats

  • None

Revision: Version 2.21.0

© 2023, SSIMWAVE Inc., all rights reserved

Except for the specific limited warranties provided herein and to the fullest extent allowed by applicable law, the API Specification is provided to the Customer on an “as is” basis, and SSIMWAVE hereby disclaims all warranties or conditions of every nature whatsoever (whether implied or arising by statute or otherwise in law, or from a course of dealing or usage of trade) with respect to the API Specification, and provides no representation as to accuracy, availability or usability, including without limitation, any implied warranties of merchantability or of fitness for a particular purpose, or that the functions contained in the Software will meet the Customer’s requirements, or that the operation of the Software will be uninterrupted, timely, secure or error free, or that the Software will operate precisely as described or that all errors will be corrected, or are free from infection by viruses, bugs or other defects that can impact on the Software. SSIMWAVE AND ITS AGENTS SHALL IN NO EVENT BE LIABLE FOR ANY LOSS, INJURY, CAUSE OF ACTION LIABILITY OR DAMAGE OF ANY KIND OR NATURE WHATSOEVER (INCLUDING PERSONAL INJURY OR PROPERTY DAMAGE), INCLUDING WITHOUT LIMITATION ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES OF ANY KIND (INCLUDING, WITHOUT LIMITATION, LEGAL FEES), (INCLUDING WITH RESPECT TO LOSS OR DAMAGE TO CUSTOMER OR OTHER DATA, LOSS OF BUSINESS PROFITS OR REVENUE OR BUSINESS INTERRUPTION) SUFFERED BY THE CUSTOMER OR ANY THIRD PARTY HOWSOEVER CAUSED, (WHETHER RESULTING FROM ANY FAILURE OF SOFTWARE, COMPUTER, SUPPORT OR SECURITY, THE USE OF OR INABILITY TO USE THE API SPECIFICATION OR ANY OTHER CAUSE), AND REGARDLESS OF THE FORM OR CAUSE OF ACTION OR BASIS OF LIABILITY (INCLUDING FOR BREACH OF CONTRACT, TORT, NEGLIGENCE, BY STATUTE OR OTHERWISE), EVEN IF SUCH DAMAGES ARE FORESEEABLE OR SSIMWAVE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.