GLIM User Guide

GLIM 1.3 User Guide

GLIM User Guide | 302017 March 2021

3

Contents

Preface 5 Copyright and Trademark Notice 5 MPEG-2 License Requirements 5 Limited Warranty and Disclaimers 6 Warranty Remedies 6 Software Updates 6 Restrictions and Conditions of Limited Warranty 6 Limitations of Warranties 7

Introduction 1

Installation 3 Topics 3 Installing 3 Offline Activation 6 Console Mode 6 System Requirements 6 GLIM Engine Requirements 6 GLIM Engine Setup 7 GLIM Client Requirements 7

Using GLIM 9 Topics 9 Introduction 9 Main Window 9 Subtitles 17 Audio Meters 18

Configuration 19 Topics 19 4 Contents

Introduction 19 Encode Section 19 Container Section 20 Overlay Section 21 RequireHttps Section 21 Authentication and Credentials Sections 22 LocationAliases Section 22 SurroundChannelMappings Section 23 Aliases 24 Logs 24 Plugins 24 Example Plugins 24 Plugin Design 25 Plugin functions 25 API 26 Rest API 26 gRPC API 26 5

Preface

Copyright and Trademark Notice Copyright © 2021 Telestream, LLC and its Affiliates. All rights reserved. Telestream products are covered by U.S. and foreign patents, issued and pending. Information in this publication supersedes that in all previously published material. Specification and price change privileges reserved. TELESTREAM is a registered trademark of Telestream, LLC. All other trade names referenced are the service marks, trademarks, or registered trademarks of their respective companies. Specifications subject to change without notice. Copyright © 2021 Telestream, LLC and its Affiliates. Telestream, CaptionMaker, Cerify, Episode, Flip4Mac, FlipFactory, Flip Player, Gameshow, GraphicsFactory, Lightspeed, MetaFlip, Post Producer, Prism, ScreenFlow, Split-and-Stitch, Switch, Tempo, TrafficManager, Vantage, VOD Producer, and Wirecast are registered trademarks and Aurora, Cricket, e-Captioning, Inspector, iQ, iVMS, iVMS ASM, MacCaption, Pipeline, Sentry, Surveyor, Vantage Cloud Port, CaptureVU, Cerify, FlexVU, Prism, Sentry, Stay Genlock, Aurora, and Vidchecker are trademarks of Telestream, LLC and its Affiliates. All other trademarks are the property of their respective owners.

Note: All other brand, product, and company names are property of their respective owners, and are used only for identification purposes.

MPEG-2 License Requirements Telestream has obtained a license from MPEG LA, to produce MPEG-2 video, to meet the following requirement on behalf of its FlipFactory and Pipeline licensees: The use of this product in any manner that complies with the MPEG-2 standard is expressly prohibited without a license under applicable patents in the MPEG-2 patent portfolio, which license is available from MPEG LA, L.L.C., 250 Steele Street, Suite 300, Denver, Colorado 80206. 6 Preface Limited Warranty and Disclaimers

Limited Warranty and Disclaimers Telestream, LLC. (the Company) warrants to the original registered end user that the product will perform as stated below for a period of one (1) year from the date of shipment from factory: Hardware and Media. The Product hardware components, including equipment supplied but not manufactured by the Company but NOT including any third party equipment that has been substituted by the Distributor for such equipment (the “Hardware”), will be free from defects in materials and workmanship under normal operating conditions and use. Software. If software is supplied as part of the product, the software will operate in substantial conformance with specifications set forth in its product user's guide. The Company does not warrant that the software will operate uninterrupted or error-free, will meet your requirements, or that software errors will be corrected.

Warranty Remedies Your sole remedies under this limited warranty are as follows: Hardware and Media. The Company will either repair or replace (at its option) any defective Hardware component or part, or Software Media, with new or like new Hardware components or Software Media. Components may not be necessarily the same, but will be of equivalent operation and quality. Software. If software is supplied as part of the product and it fails to substantially conform to its specifications as stated in the product user's guide, the Company shall, at its own expense, use its best efforts to correct (with due allowance made for the nature and complexity of the problem) such defect, error or nonconformity.

Software Updates If software is supplied as part of the product, the Company will supply the registered purchaser/licensee with maintenance releases of the Company’s proprietary Software Version Release in manufacture at the time of license for a period of one year from the date of license or until such time as the Company issues a new Version Release of the Software, whichever first occurs. To clarify the difference between a Software Version Release and a maintenance release, a maintenance release generally corrects minor operational deficiencies (previously non-implemented features and software errors) contained in the Software, whereas a Software Version Release adds new features and functionality. The Company shall have no obligation to supply you with any new Software Version Release of Telestream software or third party software during the warranty period, other than maintenance releases.

Restrictions and Conditions of Limited Warranty This Limited Warranty will be void and of no force and effect if (i) Product Hardware or Software Media, or any part thereof, is damaged due to abuse, misuse, alteration, Preface 7 Limited Warranty and Disclaimers

neglect, or shipping, or as a result of service or modification by a party other than the Company, or (ii) Software is modified without the written consent of the Company.

Limitations of Warranties THE EXPRESS WARRANTIES SET FORTH IN THIS AGREEMENT ARE IN LIEU OF ALL OTHER WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. No oral or written information or advice given by the Company, its distributors, dealers or agents, shall increase the scope of this Limited Warranty or create any new warranties. Geographical Limitation of Warranty. This limited warranty is valid only within the country in which the Product is purchased/licensed. Limitations on Remedies YOUR EXCLUSIVE REMEDIES, AND THE ENTIRE LIABILITY OF TELESTREAM, LLC. WITH RESPECT TO THE PRODUCT, SHALL BE AS STATED IN THIS LIMITED WARRANTY. Your sole and exclusive remedy for any and all breaches of any Limited Warranty by the Company shall be the recovery of reasonable damages which, in the aggregate, shall not exceed the total amount of the combined license fee and purchase price paid by you for the Product. Damages TELESTREAM, LLC. SHALL NOT BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF YOUR USE OR INABILITY TO USE THE PRODUCT, OR THE BREACH OF ANY EXPRESS OR IMPLIED WARRANTY, EVEN IF THE COMPANY HAS BEEN ADVISED OF THE POSSIBILITY OF THOSE DAMAGES, OR ANY REMEDY PROVIDED FAILS OF ITS ESSENTIAL PURPOSE. Further information regarding this limited warranty may be obtained by writing: Telestream, LLC. 848 Gold Flat Road Nevada City, CA 95959 You can call Telestream, LLC. via telephone at (530) 470-1300. 8 Preface Limited Warranty and Disclaimers 9

Introduction

GLIM is a software solution designed to enable the remote viewing of broadcast media files. It consists of two parts: • A stateless server component using standardized protocols to encode a representation of a broadcast media file for delivery over the internet. • A web client application that is delivered by the server to the user's internet connected browser to enable remote viewing of video. GLIM is different from other remote viewing platforms because it does not require the creation of proxy video files and does not consume any storage on the server. Its use of HTTP based protocols and stateless design mean that it can utilize readily available components such as gateways, caches and load balancers to enhance its functionality. In addition, the server can be used without the web client to add remote file viewing support to existing customer web apps. GLIM plays any media file, from anywhere, in a browser: • Enables remote playback and inspection of any container/codec/resolution/fps/ audio channel/color space combination in a web browser • Supports playback from NAS/SAN/LOCAL storage as well as cloud object storage (S3/BLOB*/GCS*) • Offers the broadest format support of any media player on the planet including audio only and image only files • Supports audio channel routing and automatic mixdown for multi-channel (5.1) sources • Caption/subtitle display: embedded and sidecar loadable caption and subtitle playback • Native framerate playback and 80-90% bitrate reduction of original source GLIM fundamentally reduces the many rough edges when playing mezzanine media: • A vastly superior alternative to the ‘remote desktop/virtual desktop’ playback experience • Play high resolution/high bit rate media media files over bandwidth constrained (<5mbps) connections 10 Introduction

• Visual audio meters and waveform with frame-based metadata display • Quick inspection of technical properties of any media file • Ingest or general file QC • Review and approval with in/out point link sharing • Front end for Vantage and other third-party systems via an and innovative plugin architecture 11

Installation

Topics  Installing  Offline Activation  Console Mode  System Requirements

Installing

Note: GLIM is currently only available for Windows operating systems and is provided in the form of a Windows installer.

The installer requires that a user agreement be accepted and installs the application to the c:\Program Files\Telestream\GLIM . This directory contains a plugins directory with example plugins, and a certificate directory with a self-signed certificate to demonstrate GLIM's HTTPS capability. When uninstalling GLIM, all files are removed with the exception of the appSettings.json configuration file. When reinstalling GLIM, delete this file to reset GLIM to its defaults or to enable creation of new settings. To install GLIM, follow these steps: Double-click the GLIM installer application.

Double-click the installer 12 Installation Installing

Check the acceptance box and click Install.

Check acceptance Click Install

Wait for the progress window to finish.

When the completion window displays, click Finish.

Click Finish Installation 13 Installing

When GLIM opens in the default browser, click the key icon to enter your activation key.

Click key icon

When the license window opens, enter your activation key, and click Activate.

Enter activation key

Click Activate

After GLIM activates, the Deactivate window displays. It displays all license status and allows you to deactivate GLIM when you want to transport your license to another computer.

Optionally, click Deactivate 14 Installation Offline Activation

Offline Activation For offline activation, follow these steps: 1. On the Glimpse engine, or from a client with access to the Glimpse engine, navigate to: http://127.0.0.1:5000/license/id?key=[GlimpseLicenseKeyHere] 2. It returns a long string of characters similar to this: GXXXXTCIIUWUCNSGHAWUOVJWLAWUIOKXKUWUISSOGJ7FOMBNHE3DENZNGV DEGNRNHFDEIMBNG42UGNBNGNCTMMBNGVCXXXX 3. From a computer with internet connectivity, navigate to: https://cws.telestream.net/ offlineactivation.aspx 4. Enter the string returned from step #2 above, and click submit 5. Your browser will then download a file 6. Move this downloaded file to the Glimpse server 7. On the same system used in step #1 above, navigate to: http://localhost:5000/ license/activate- offline?key=YourGlimpseKeyHere&license=C:\\To\TelestreamLicense 8. In Chrome refresh or navigate again to http://localhost:5000 - the license icon in top right should now be green 9. Your system is now licensed and activated

Console Mode GLIM is installed as a Windows service which can be started and stopped from the Services control panel. In some cases, it may be preferable to run GLIM as a Console application. The recommended method is to disable the GLIM service and run the GlimService.exe executable directly from the installation directory.

System Requirements

GLIM Engine Requirements • Windows installer issued, licensed annually via serial number • OS: Windows Server 2012R2/2016/2019 Required • Minimum of 12 core CPU/16 GB RAM required (AMD or INTEL) 24+ core CPU/32 GB RAM recommended • High performance access to storage required (1+Gbps) • HTTP or HTTPS ingress traffic • HTTPS is not supported on 2012R2 Installation 15 System Requirements

GLIM Engine Setup • External access requires TCP 5000/5001 ingress to GLIM Engine – Ports are admin configurable • User Account Control should be disabled (never notify) • GLIM user must be local administrator • NAS/SAN/Local Storage access is passed through GLIM service via logged on user – Passed through actively logged on user if running in console • S3 storage access requires AK/SAK to be provided in settings UI – 1.2 onward: Keys are encrypted and decrypted during access and never at rest in the clear

GLIM Client Requirements • HTTP/HTTPS connectivity (route-ability) to GLIM engine (Locally, or via VPN) • MacOS Catalina or greater • Windows 10/Windows Server 2016 • Chrome version 80 or later • iOS 14/iPadOS 14

Note: Mobile devices do not support file browsing or audio channel selection only playback from links generated by GLIM 16 Installation System Requirements 17

Using GLIM

Topics  Introduction  Main Window  Subtitles  Audio Meters

Introduction The GLIM video controls should be familiar to most users. They allow the selection of video, audio and subtitle renditions using a menu accessed from the settings icon. • GLIM re-encodes the source media for transmission over the internet and users are able to choose the quality of that encode from the video sub menu. • A browser based player is only able to render a single audio track at a time, and so GLIM provides a method of selecting the channels that are required to be rendered by first selecting a track, and then the desired channels. The ability to quickly toggle the audio system to only render a single channel (soloing) is easily achieved by clicking the column header in the channel dialog. • Subtitles can only be displayed one at a time. The subtitle sub-menu allows selection of the desired sidecar file, channel (CEA-608), service (CEA-708) or page (teletext).

Main Window The main panel includes a tabbed properties display which allows metadata from the container, video, audio and metadata tracks to be displayed to the user. 18 Using GLIM Main Window

Click the File Browser button to open a media file (or select a previously opened file from the file history list).

Click File Browser

File history list

Browse and select a media location, then click on a file to open it. Select a media location Click on a file Using GLIM 19 Main Window

Once the file is displayed in GLIM, use the control panel to play and navigate through it.

Pull-down menu

File displayed

Control panel

Play Video Slider Mute Full Screen Step Reverse Go forward or backward Volume Gear icon and Forward 10 seconds

Click the Pull-down menu and select Settings.

Click Pull-down menu

Select Settings 20 Using GLIM Main Window

Under Temporary storage, Max size GB refers to the total disk space for the GLIM Engine to cache source clip data for all users. The total size of all source clips that could be loaded concurrently is a good guide for administrators to consider when sizing that cache. The Default Preload Threads refer to how many concurrent requests may be issued for each loaded clip accessed from IP storage locations such as HTTP and S3 type volumes. Historically there was only one read issued at a time. This tends to improve performance up to about four threads. Diminishing returns are likely at higher values and you can tune this setting. But, four threads is a well tested value for most scenarios.

Under Displayed qualities, you can optionally check two mode boxes that enable advanced interlacing or best quality.

click options Using GLIM 21 Main Window

Click the gear icon to open the settings menu, the select Video Quality.

Select Video Quality

Click gear icon

When the Video Quality menu displays, select a video quality setting.

Note: The Best Quality settings are more dynamic and they adjust the encoding parameters based on the source media, the clients display size, or the windowed video player size, respectively. The selections below the divider line are only applicable if the content is interlaced and it provides different methods of displaying that interlaced content. 22 Using GLIM Main Window

To view the container, video, audio or metadata properties, click the Properties tab, then click one of the sub-tabs to display the settings.

Click Properties Click a sub-tab

Settings

NOTE: You can hover over each setting to to further define the data/values presented.

Hover over Function a setting display

To define a Backend Path, click the Plugins tab, select Backend Path, then click Submit. The Backend Path used for the location where the is displayed. Click the copy icon to copy the Backend Path to your clipboard. Click Plugins

Select Backend Path

Click Submit

Backend Path display

Click to copy the Backend Path

Note: In addition to a collection of stock plugins (Backend Path, Clip Link, Image Link, and Unload), plugins allow users to define (or script) a way for GLIM to interact with RESTful APIs of external systems. For example, you can build a plugin that allows for a Using GLIM 23 Main Window

user to enter in/out point variables and submit the loaded file to Vantage for it to subclip and transcode it to a different format. There are also plugins that can be built to perform simple manipulations, or send an email of a Clip or Image link to users.

To create a clip link that can be copied and used by others, click the Plugins tab and select Clip Link. Click on the time bar and then on a time icon to set Mark In and Out values. Select desired options, and click Submit to display the Clip Link. Click the copy icon to copy the Clip Link to your clipboard.

Click Plugins Select Clip Link

Click on time bar then on time icon

Click on time bar then on time icon

Select options

Click Submit

Clip Link display Click to copy the Clip Link 24 Using GLIM Main Window

To create an Image Link, click the Plugins tab and select Image Link. Click on the time bar and then on a time icon to set the Start Frame value, then click Submit to display the Image Link. Click the copy icon to copy the Image Link to your clipboard.

Click Plugins

Select Image Link

Click on time bar then on time icon Click Submit Image Link display Click to copy the Image Link

To unload, click the Plugins tab, select Unload, then click Submit. When the plugin finishes the clip that was in use will be released by the OS so that users can move or delete the clip. Click Plugins

Select Unload

Click Submit Using GLIM 25 Subtitles

To view the history of opened files, click the History tab, then click on any media in the list to re-open it. Use the controls at the bottom of the window to select rows per page (of files), and which page to view. Click History

Rows control Page controls

The GLIM player includes following shortcuts: Space Toggle Play / Pause Arrow Left Frame step backwards Arrow right Frame step forwards “J“ key Play backwards “K“ key Pause “L“ key Play forwards

Subtitles The media player allows the selection of a subtitle track from which to create caption or subtitle overlays that are rendered in the media player. By default, a set of CEA-608, CEA-708 and teletext tracks are added to the subtitle menu. Occasionally, a media file has an associated metadata file that contains the captions or subtitles that correspond with the media. This metadata file is referred to as a sidecar subtitle or caption file, and the track can be added to the subtitle menu by specifying the file using the Add subtitles menu. Sidecar files supported are: .scc, .srt, .stl, .mcc, TTML in .xml, and .vtt. 26 Using GLIM Audio Meters

When a media file is playing, you can hover over the play window to cause the controls to appear. Included in these controls is a captioning icon, just to the left of the speaker icon. Clicking this icon turns captioning on and off. This takes the first source of available captions and uses that source. If you want more manual control, click the gear icon, then click Subtitles to view all the caption sources that are available in the source.

Captioning text

Captioning icon Gear icon

Audio Meters The media player allows a floating audio meter panel to be toggled on and off for display. The audio meters are displayed for all the channels in the currently selected track, regardless of how many are currently being rendered to the speakers. The audio meters operate similarly to loudness meters commonly found in other media applications, but they have been optimized to work for QC and editing applications. The peak and average loudness measurements (displayed in dB) are calculated over the period of time occupied by the current frame. For a 60 fps source video, the audio samples over a period of 1/60th of a second are used to find the peak and average (RMS) loudness for display with that frame. If the player is instructed to frame step to the next video frame then the audio meters will change to display the peak and average loudness measurements for the subsequent 1/60th of a second of time. 27

Configuration

Topics  Introduction  Encode Section  Container Section  Overlay Section  RequireHttps Section  Authentication and Credentials Sections  LocationAliases Section  SurroundChannelMappings SectionAliases  Aliases  Logs  Plugins  API

Introduction Settings for logging are in the JSON file located at: C:\program files\telestream\glim\appsettings.json GLIM is configured by the JSON file located at: C:\programdata\telestream\glim\appsettings.other.json This JSON file has various keys which are described below.

Encode Section The following is an example of a typical "Encode" section

"Encode": { "Subtitle": true, 28 Configuration Container Section

"VideoSegmentDuration": 1.0, "SubtitleSegmentDuration": 1.0, "Interpolation": "NearestNeighbor", "Preset": "fast", "Threads": 0, "Levels": [ { "Width": 360, "Bitrate": 750000 }, { "Width": 480, "Bitrate": 1000000 } ] },

• "Subtitle": Enables the subtitles setting to be displayed in the UI • "VideoSegmentDuration": Controls the duration (in seconds) that the video and audio media will be segmented into for delivery over the internet. • "SubtitleSegmentDuration": Controls the duration (in seconds) that the subtitles will be segmented into for delivery over the internet. • "Interpolation": Sets the mode of the scaling algorithm used to resize the original media before encoding. The possible values in order of increasing CPU complexity are "NearestNeighbor", "Linear", "Cubic", "Lanczos". • "Levels": Each object consists of a "Width" and "Bitrate" key. The desired width of the encoded picture is specified in pixels and the desired bitrate in bits per second. • "Preset": Specifies the video encoder preset. For x264, recommended values include "ultrafast", "superfast", "veryfast", "faster" and "fast". • "Threads": Allows control over the number of CPU threads that should be used to perform the video encoding. A value of 0 indicates auto-configuration.

Container Section Certain aspects of file loading can be configured in GLIM. The following is an example of a typical "Container" section Configuration 29 Overlay Section

"Container": { "IdleTimeout": 180.0, "ImageSequence": false, "DefaultFrameDuration": 1001, "DefaultTimeScale": 30000 "OpenTimeOut": [value] }, • "IdleTimeout": The time (in seconds) after which the underlying file will be released back to the operating system if no segments are retrieved by the client. • "ImageSequence": Set to true if images within the same folder should be treated as an image sequence rather than individual pictures. • "DefaultFrameDuration", "DefaultTimeScale": Used in combination to determine the frame rate of the media if none is provided by the container. • "OpenTimeOut": The amount of time to check if the clip is still in the open mode.

Overlay Section GLIM provides the ability to overlay agn SVG file on top of the playing video. SVG can be used to specify vector graphics, images or text to appear over the video and does support transparency. The following is an example of a typical "Overlay" section.

"Overlay": { "Path": "protect.svg", "Top": 100, "Left": 100 }, • "Path": A user specified path to a valid SVG file that will be used to create the overlay. • "Top": Specifies the number of pixels from the top of the image where the overlay will be placed. • "Left": Specifies the number of pixels from the left of the image where the overlay will be placed.

RequireHttps Section The "RequireHttps" key is a simple boolean taking a true if GLIM will require that all communications must be secured with HTTPS or false if unencrypted HTTP is permissible. 30 Configuration Authentication and Credentials Sections

Authentication and Credentials Sections GLIM ships with authentication is disabled, i.e. a user is not required to login to the system before being able to remotely view their media files. If user authentication is required, "Authentication" can be set to "Windows" to use the Windows native users, or "BuiltIn" to allow users to be specified directly in the configuration file using the "UserName" and "Password" keys.

"Authentication": "BuiltIn", "Credentials": { "UserName": "user", "Password": "pass" }, LocationAliases Section By default, GLIM presents a file browser whose roots are the known hard drives on the system. This can be overridden to only display certain directories using the "LocationAliases" array.

Note: It is recommend that you use the UI to configure locations rather than manually altering the json files.

"LocationAliases": [ { "Name": "Location name", "Path": "\\\\host-name\\share-name" // Use '\\' as a single '\' }, { "Name": "Local location", "Path": "C:\\Media" } ], Each element in the array includes a "Name" which is simply an alias that will be displayed in the UI to assist the user and a "Path" which can either be a UNC path or a local path. Note that backslash characters must be escaped with an additional backslash in JSON files. Configuration 31 SurroundChannelMappings Section

The UNC path must be accessible to the user logged in to the service. In practice, this is will mean that UNC paths will not be available when GLIM is running as a service since the Local Service user does not have network access. Instead, GLIM can be run in Console Mode with the same privileges as the logged in user.

Note: You may want to use a user group to define which users have access to particular LocationsAliases.

SurroundChannelMappings Section Wherever possible, GLIM attempts to identify audio channel labels to allow the remote player to correctly play surround sound tracks. However, some source files may not be attributed with these labels and require the appSettings.json file to hint at the probable channel layout.

"SurroundChannelMappings": { // Applied when channels are not labeled in an 8 channel PCM track "8": { "L": 0, "R": 1, "C": 2, "LFE": 3, "Ls": 4, "Rs": 5 }, // Applied when channels are not labeled in a 6 channel PCM track "6": { "L": 0, "C": 1, "R": 2, "LFE": 3, "Ls": 4, 32 Configuration Aliases

"Rs": 5 } } The example above describes a configuration where GLIM will assume that the channel layout for an 8 channel unlabelled track is L, R, C, LFE, Ls, Rs whereas the channel layout for a 6 channel unlabelled track would be L, C, R, LFE, Ls, Rs.

Aliases GLIM operates in one of two modes depending on whether any Location Aliases have been configured. If no aliases have been configured then the entire file system of the remote machine is browsable and the actual path of the remote media is displayed in the user interface. This may be considered a security risk and is mitigated by the second mode which is entered when one or more aliases are configured. In this mode, only the directories corresponding to the configured aliases are browsable, and all references to the remote media is relative to the alias name (denoted by a two colon prefix, e.g ::alias.)

Logs GLIM will log errors to a log file which may be examined if the application behaves in an unexpected manner. The most expedient way to navigate to the log directory is to issue the command %programdata%\Telestream\GLIM from the "Run" prompt.

Plugins GLIM is designed to be extensible through the use of plugins. Users may implement their own plugins using the C# programming language which are compiled each time the application is started.

Example Plugins Example plugins are provided during installation and placed in the c:\Program Files\Telestream\GLIM\plugins directory. • clip link.cs : Demonstrates creating a shareable link that creates a GLIM sub-clip given a mark in and mark out point. • image link.cs : Shows how a plugin may return a link to a full resolution JPEG of a specified frame. • sample.cs : Example plugin demonstrating advanced techniques such as limiting the plugin to certain users. Configuration 33 Plugins

Plugin Design GLIM plugins require the user to conform their plugin code to the following design • Plugins make heavy use of JSON Schema and the associated uiSchema. Ensure that the desired UI is describable using these concepts. • The plugin must derive their class from Telestream.Glimpse.Plugin. • The implementation must include overrides for GetSchema and Execute and may include overrides for GetEnabled Execute function The core function that must be implemented in a plugin has the definition public override string Execute(string model, string path, Context context). The parameters model and path contain the UI parameters as a JSON string and the path of the file it pertains to. Note that the path may be specified relative to the alias, the path relative to the backend can be obtained using the Context object which is defined as ...

public struct Context { // the identity of the logged on user public IIdentity Identity { get; set; } // the backend host relative to the client public string Host { get; set; } // the query parameters requested by the client public string Parameters { get; set; } // the path of the file relative to the backend public string Path { get; set; } } Plugin functions A plugin may call the following functions. • public Int32 GetFrameNumberForTimeCode(string path, string timeCode) • public void Unload(string path, Action OnIdle) • public void Alert(string message) Unload may be used when a plugin is used to perform some operation on the file that requires it isn't currently loaded into GLIM e.g. moving the file to another directory. The Unload method requires the plugin to provide a delegate that will be called when the clip has been completely unloaded. The following code snippet demonstrates the use of the Unload and Alert functions. 34 Configuration API

public void OnIdle(string path) { Alert(path + " has been unloaded."); // ... execute logic that requires clip be unloaded goes here }

public override string Execute(string model, string path, Context context) { // ... execute logic that does not require clip be unloaded goes here Alert("Unload request for " + path + " submitted."); Unload(path, OnIdle); } API The server component can be used without the web client to provide a method of enhancing the capability of external applications with remote viewing of broadcast files. There are two main APIs

Rest API An HLS endpoint is available at play/master.m3u8?path=. e.g. if a GLIM server is running on port 5000 at an IP address of 192.168.100.1, and the user wishes to connect to an HLS rendering of the file at c:\media\file.mov then the appropriate URL is http:// 192.168.100.1:5000/play/master.m3u8?path=c:\media\file.mov Other endpoints, for sub-clips, full resolution JPEG images etc. are available on request.

gRPC API Details of the gRPC API are available on request.