Vewd Core Content Development Guide

Introduction

Scope

This document documents features and APIs available on devices powered by Vewd Core.

Vewd Core powers some TiVo OS, the new TV OS from Xperi/TiVo, - but also Retail TVs, Set-Top boxes and Car entertainment systems from other brands and vendors.

The document defines a complete OTT platform suitable for any OTT content globally, with rich features for media streaming, content protection, and security. The document is based on feedback from content owners and app developers worldwide and should answer most technical questions in the area of media streaming.

Versions

Vewd Core is updated yearly with features required for the next year of apps and content owners requirements. The version number is 4.x where x denotes the upcoming year. (e.g. 4.25.0 will be released the summer of 2024)

For each update of the Vewd Core, the version number of this specification is updated to match the product.

Backward compatibility

New versions of Vewd Core are normally backwards compatible with older versions, the Web is a very stable platform these days. The exception is when some features are deprecated by the major browsers (Chrome, Safari, Edge) due to no usage or security/performance concerns.

When we are planning to remove a feature, we will normally go through a DEPRECATION period first, before the feature is removed, but this may not always be true.

Features that are planned to be removed will then be marked as [DEPRECATED] in this document.

Definitions

Chromium and Google Chrome - Chromium is the open-source project that forms the basis of the Google Chrome browser (and of Vewd Core).

Vewd Core - An embeddable browser and streaming engine with an extensible API, based on the Chromium open-source project, which implements a set of international and industry standards to download and render webpages, execute web apps, and stream video and audio content.

Vewd Products - A set of products and solutions developed by Vewd Software AS (now a part of TiVo Software, again a part of Xperi Inc.) for TV and Set-Top Box (STB) manufacturers to enable HTML5 rendering and adaptive streaming in their devices.

Vewd Application - a Vewd-compliant web app that is certified to run on Vewd powered devices. Also referred to as App or Application in this document.

Vewd Device - A TV or STB device running software based on the Vewd Core, and certified to meet the requirements defined in this document.

Platform dependent features

DRM

All Vewd Core powered devices support content protection with Microsoft PlayReady, and many also support Google Widevine. Vewd Core itself does not implement DRM but integrates to content protection on the platform.

Codecs and media formats

Support for video codecs and media formats are dependent on the underlying platform, as these are dependent on the chipset powering the device, and on external licenses.

Some codecs normally supported are:

Audio:

Video:

Container:

Keys on the remote control

The design of the remote control is up to each manufacturer, and may vary in size and functionality. Some keys will always be present (such as. 4-way navigation keys), while others will only be supported when there is such a key on the remote control.

Resolution

The maximum resolution of a device is defined by the manufacturer. All devices support either HD (720p) or Full HD (1080p).

Technical Requirements

HTML5 <video> and <audio>

Vewd Devices support HTML5 <video> and <audio> elements according to the HTML 5.1 specification [9].

Media element

Support for video and audio media elements

All devices support the following features for the handling of <video> and <audio> media elements:

Support for video media elements

All devices support the following requirements for the handling of <video> media elements:

Codec support

All devices shall respond truthfully to codec support inquiries:

Track element

Devices support rendering of subtitles and closed captions as specified in HTML 5.1, “The track element” (4.7.13). Supported track formats are specified in the Subtitles and Closed Captioning section.

Common features for all track elements

Support for the following features for the handling of track elements:

Specific for text track elements

Media streaming

Transport protocols

Progressive download

Supported combinations:

ISO BMFF AAC-LC H.264 None None Not supported
  HE-AAC v1 H.265      
  HE-AAC v2        
  MP3        
  Dolby AC3        
  Dolby AC4        
  Dolby E-AC-3        
MPEG2-TS AAC-LC H.264 None None Not supported
  HE-AAC v1        
  HE-AAC v2        
  MP3        
  Dolby AC3        
  Dolby AC4        
  Dolby E-AC-3        
WebM Opus VP9 None None Not supported
ADTS / AAC AAC-LC None None None Not supported
MP3 HE-AAC v1        
  HE-AAC v2        
  MP3        

Note 1: All rules and restrictions for the support of media formats and codecs applies as outlined in the Video and audio formats section.

Adaptive Bitrate streaming protocols

The following Adaptive Bitrate (ABR) streaming protocols are supported:

Streaming Type MIME-Types Notes
application/vnd.apple.mpegurl VoD (append-mode window) and Event (sliding window) Apple HTTP Live Streaming (HLS)
MPEG-DASH application/dash+xml Main and Live profiles of MPEG-DASH  
application/vnd.ms-sstr+xml   Microsoft Smooth Streaming (MSS)

Apple HTTP Live Streaming (HLS)

Devices support HTTP Live Streaming Protocol version 7, as defined in Pantos versions up to 23 and in RFC 8216 [2] and HLS version 8, as defined in RFC 8216bis draft00 [2bis] with some exceptions. If you require a list of such exceptions please contact your Technical Account Manager.

Note that the implementation requires that all segments start with a keyframe. This is not an absolute requirement in the HLS specification, but necessary to achieve smooth change of quality when adapting bitrates.

At least the following M3U8 playlist tags are supported

Container Audio codecs Video codecs Encryption Decryption trigger In-band subtitles MIME type
MPEG2-TS AAC-LC H.264 None   Not supported application/ vnd.apple.mpeg url
MPEG2-TS HE-AAC v1 H.265        
MPEG2-TS HE-AAC v2         application/x- mpegURL
MPEG2-TS MP3          
MPEG2-TS Dolby AC3          
MPEG2-TS Dolby AC4          
MPEG2-TS Dolby E- AC-3          
MPEG2-TS AAC-LC H.264 AES-128 Manifest Not supported application/ vnd.apple.mpeg url
MPEG2-TS HE-AAC v1 H.265        
MPEG2-TS HE-AAC v2         application/x-
MPEG2-TS MP3         mpegURL
MPEG2-TS Dolby AC3          
MPEG2-TS Dolby AC4          
MPEG2-TS Dolby E- AC-3          
ADTS AAC-LC None None   Not supported application/ vnd.apple.mpeg
ADTS HE-AAC v1         url
ADTS HE-AAC v2         application/x- mpegURL
ADTS AAC-LC HE-AAC v1 HE-AAC v2 None AES-128 Manifest Not supported application/ vnd.apple.mpeg url application/x- mpegURL
MP3 MP3 None None   Not supported application/ vnd.apple.mpeg url application/x- mpegURL
MP3 MP3 None AES-128 Manifest Not supported application/ vnd.apple.mpeg url

Note 1: All rules and restrictions for the support of media formats and codecs applies as outlined in the Video and audio formats section.

Restrictions for HLS content

Devices are able to handle streams with the following limitations:

Parameter Requirements
Frame rate Up to 60fps
Audio sampling rate Up to 48000 Hz
Number of audio channels Up to 8 (7+LFE)
Media segment file size Up to 15MB
Segment duration In range 1s - 12s
Average bitrate over one segment Up to 8 Mbit/s (for up to 1080p)
Manifest file size Up to 2MB
Number of tracks in one M3U8 manifest file Up to 36

Devices MAY fail gracefully on streams that do not abide by the following restrictions:

  1. Audio/video encoding
    1. The same codec MUST be used across all variant streams (all quality levels).
    2. Audio parameters (number of channels and sample rates) MUST be the same across all variant streams.
  2. Media segments
    1. All media segments MUST be independently decodable. Consequently, the first video frame in every segment that contains video MUST be an IDR frame.
    2. Discontinuities in timestamps, frame rate, encoding profiles, or audio/video parameters MUST NOT occur within segments.
  3. Playlist files (M3U8)
    1. Audio and video playlists MUST use the same target duration, and MUST contain the same duration of content.
    2. A playlist MUST NOT contain invalid URLs.
    3. Media sequence numbers MUST be aligned across all variant streams (quality levels), so that media sequence numbers can be used to identify matching content.
    4. For live streams, media segments MUST remain available on the server for at least one target duration after the segment disappears from the playlist.
    5. Playlists MUST use sufficiently accurate segment durations to ensure that the sum of the #EXTINF durations of any contiguous group of segments is within one 1ideo frame duration of the actual duration.
    6. Playlists MUST provide at least 6 segments in live/linear streams.
    7. Discontinuities in timestamps, frame rate, encoding profiles, or audio/video parameters MAY occur between segments, but such discontinuities MUST be indicated 1sing the #EXT-X-DISCONTINUITY tag.
    8. EXT-X-STREAM-INF tags MUST always provide CODECS and RESOLUTION attributes.
  4. Subtitles
    1. The device MUST support subtitles that conform to the Subtitles and Closed Captions
  5. DRM
    1. The decryption key MUST be directly downloadable via an HTTP or HTTPS URLs
    2. Note that with AES-128 encrypted HLS, segments are completely encrypted.

MPEG-DASH

Profile Identifier Reference
ISO Base Media File Format Live urn:mpeg:dash:profile:isoff-live:2011 [3], section 8.4
ISO Base Media File Format Main urn:mpeg:dash:profile:isoff-main:2011 [3], section 8.5
DASH-AVC/264 http://dashif.org/guidelines/dash264 urn:com:dashif:dash264 [29], section 6.3
DASH-AVC/264 SD http://dashif.org/guidelines/ dash264#sd [29], section 7.3
DASH-AVC/264 HD http://dashif.org/guidelines/ dash264#hd [29], section 8.3
DASH-AVC/264 main http://dashif.org/guidelines/ dash264main [5], section 8.2
DASH-AVC/264 high http://dashif.org/guidelines/ dash264high [5], section 8.3

The DVB Profile of MPEG-DASH ([4], section 4.1), identified as urn:dvb:dash:profile:dvb-dash:2014, is supported.

The following combinations are supported by the device:

Container Audio Video DRM DRM Trigger In-band MIME type
  codecs codecs     subtitle  
ISO BMFF AAC-LC H.264 None None Supported application/ dash+xml
  HE-AAC v1 H.265        
  HE-AAC v2          
  MP3          
  Dolby AC3          
  Dolby AC4          
  Dolby E-AC-3          
ISO BMFF AAC-LC AV1 None None Supported application/ dash+xml
ISO BMFF AAC-LC H.264 ClearKey EME Supported application/ dash+xml
  HE-AAC v1 H.265 PlayReady      
  HE-AAC v2   Widevine      
  MP3          
  Dolby AC3          
  Dolby AC4          

Note 1: All rules and restrictions to the support of media formats and codecs applies as outlined in the Video and audio formats section.

Note 2: All rules and restrictions for the support of DRM applies as outlined in the DRM and EME sections.

MPEG-DASH content restrictions

Limitations on MPEG-DASH streams:

Parameter Restrictions
Frame rate Up to 60fps
Audio sampling rate Up to 48000 Hz
Number of audio channels Up to 8 (7+LFE)
Media segment file size Up to 15MB
Segment duration In range 1s - 12s
Average bitrate over one segment Up to 10Mbit/s (for 1080p content)
Manifest file size Up to 2MB
Number of tracks in one MPD file Up to 36

Devices may fail gracefully on streams that do not abide by the following restrictions and are not compliant with the [5] DASH-IF Interoperability Points documentation:

Microsoft Smooth Streaming (MSSS)

Microsoft Smooth Streaming Transport Protocol v2.2 as defined in [2], both Live and On-Demand streams is supported.

NOTE: The version number refers to the MajorVersion and MinorVersion attributes in the manifest, not the Smooth Streaming Protocol Specification version.

As of revision 6.0 of the specification, the only valid versions are 2.0 and 2.2 (see section 2.2.2.1 in [3]).

Container Audio codecs Video codecs DRM DRM Trigger In-band subtitle MIME type
PIFF v1.1 [13] AAC-LC HE-AAC v1 HE-AAC v2 H.264 None None Supported application/ vnd.ms-sstr+xml
PIFF v1.1 [13] AAC-LC HE-AAC v1 H.264 PlayReady Manifest Supported application/ vnd.ms-sstr+xml
PIFF v1.1 [13] AAC-LC HE-AAC v1 H.264 PlayReady WebInitiator Supported application/ vnd.ms- playready.initiat or+xml

Note 1: all rules and restrictions to the support of media formats and codecs applies as outlined in the Video and audio formats section.

Note 2: All rules and restrictions to the support of DRM applies according to the DRM and WebInitiator sections.

Smooth Streaming content restrictions

Parameter Requirements
Frame rate Up to 60fps
Audio sampling rate Up to 48000 Hz
Number of audio channels Up to 8 (7+LFE)
Media segment file size Up to 15MB
Segment duration In range 1s - 12s
Average bitrate over one segment Up to 10Mbit/s (for 1080p content)
Manifest file size Up to 2MB

Streaming can fail gracefully on streams that do not abide by the following restrictions:

Media Source Extensions (MSE)

Media Source Extensions is supported according to the MSE specification [7]. The following combinations of containers and codecs are supported:

Container Audio codecs Video codecs
MP4 AAC / MP3 H.264 / H.265
WebM Opus VP9
MP4 AAC / MP3
WebM Opus
MP4 H.264 / H.265
WebM VP9
MP4 AV1
MP4 AAC / MP3 AV1

Note: All rules and restrictions to the support of media formats and codecs in MSE applies as outlined in the Video and audio formats section.

Subtitles and Closed Captioning

To display subtitles or Closed Captions, WebVTT is supported as specified in [15] to the extent that it is supported by the Chromium engine, and the EBU-TT-D text track profile of TTML, as specified in [17], is supported

In-band and out-of-band text tracks are supported as defined below:

Media delivery method In-band subtitles Out-of-band subtitles
Progressive playback Not supported Yes
HLS Not supported Yes
MPEG-DASH Yes Yes
Smooth Streaming Yes Yes
MSE Not supported Yes

DRM

As stated in 2.4.1, DRM Support is platform dependent and may vary between manufacturers and device models.

In general, all devices supporting HbbTV will support Microsoft PlayReady, and all Android-based devices will support Google Widevine, but many devices support both PlayReady and Widewine and some also support other DRM systems such as Marlin.

ClearKey

PlayReady

If Microsoft PlayReady is supported:

Play Ready - License Acquisition

WebInitiator

WebInitiator can be used with Microsoft PlayReadyPlayReady :

Widevine

If Google Widevine is supported:

Marlin

If Marlin DRM is supported:

ES-128 encrypted streams

DRM Invocation Methods

Encrypted Media Extensions (EME)

Encrypted Media Extensions (EME) is supported un-prefixed according to the W3C Working Draft 05 July 2016 [6].

Note: EME can only be used in secure contexts, it can not be used on any pages served over HTTP.

The following EME features are supported:

EME MUST can be used with MSE and with adaptive streaming with the native player.

Detecting encrypted content and triggering license acquisition is supported from:

Not all DRM invocation methods and DRM systems are available with all transfer protocols. This is specified in detail in the section for each protocol. Every CDM MUST be supported with all combinations of MSE-supported formats and codecs.

Video and audio formats

Media container formats

The following media container formats are supported:

Video codecs

Video codec support is platform dependent, but the following video codecs formats are normally supported:

Audio codecs

Audi codec support is platform dependent, and the following codecs are normally supported:

CMAF multimedia format

Common Media Application Format (CMAF) [36] combines and constrains several MPEG specifications to define a multimedia format optimized for delivery of a single adaptive multimedia presentation to a variety of devices, using various adaptive streaming formats, broadcast, download, and storage methods.

AAC audio CMAF tracks

List of supported AAC profiles [36], section 10.3 AAC audio CMAF tracks

AAC profile MIME type Codecs parameter
MPEG-4 AAC (AAC-LC) audio/mp4 mp4a.40.2
MPEG-4 high efficiency AAC (HE-AAC) audio/mp4 mp4a.40.5
MPEG-4 high efficiency AAC v2 (HE-AACv2) audio/mp4 mp4a.40.29

Subtitles and captions

CMAF defines the following formats for carrying subtitles and captions [36], section 11.1 Subtitles and captions overview:

AVC video CMAF media profiles and brands

AVC video CMAF media profile shall comply to one of the media profiles in table above [36], annex A.2:

Media profile Profile Level Colour primaries Max frame height Max frame width Max frame rate CMAF File Brand
SD High 3.1 BT.709 576 864 60 ‘cfsd’
HD High 4 BT.709 1080 1920 60 ‘cfhd’
HDHF High 4.2 BT.709 1080 1920 60 ‘chdf’

HEVC video CMAF media profiles and brands

HEVC video CMAF media profile shall comply to one of the media profiles in table above [36], annex B.5:

Media profile Profile Level Colour primaries Max frame height Max frame width Max frame rate CMAF File Brand
HHD8 Main MainTier 4.1 BT.709 1080 1920 60 ‘chhd’
HHD10 Main10 4.1 BT.709 1080 1920 60 ‘chh1’
UHD8 Main MainTier 5 BT.709 2160 3840 60 ‘cud8’
UHD10 Main10 MainTier 10- bit 5.1 BT.709 BT.2020 2160 3840 60 ‘cud1’
HDR10 Main10 MainTier 10- bit 5.1 BT-2020 2160 3840 60 ‘chd1’
HLG10 Main10 MainTier 10- 5.1 BT-2020 2160 3840 60 ‘clg1’

Media format combinations

Protocols and formats supported

Transport Formats Comment
Transmission Transport Protocol Container Video format DRM Subtitles  
Broadcast (Note 1)

Out-of-band N/A N/A N/A N/A N/A N/A for Broadcast, Note 2
Inband
DVB
MPEG 2-TS AVC_SD_25, AVC_HD_25 None None, Note 3 Subtitles handled by TV Middleware
MP4 AVC_SD_25, AVC_HD_25, HEVC_HD_25_8, HEVC_HD_25_10, HEVC_UHD_25 None None, Note 3 Subtitles handled by TV Middleware
Broadband















Out-of- band
Any
N/A
N/A
N/A
WebVTT No container, subtitle served as file
EBU-TTD No container, subtitle served as file
Inband













Progressive Download




MPEG 2-TS
H.264
None
DVB- Subtitles DVB Bitmap subtitles, https:// www.etsi. org/ deliver/
Teletext Note 8
MP4 H.264, H.265 None WebVTT  
WebM VP8, VP9 None WebVTT  
ADTS / AAC None, Note 6 None None  
MP3 None, Note 6 None None  
MSE/EME
MP4 H.264, H.265 Play Ready Widevine None Note 4
WebM VP8, VP9 Play Ready Widevine None Note 4
HbbTV DASH MP4
H.264, H.265
Play Ready Marlin
EBU-TT- D Note 5, Note 10
DVB DASH WebVTT
Apple HLS


MPEG 2-TS H.264 Encryption WebVTT frag. Plain Text WebVTT fragment s (outside container )
MP4 H.264, H.265 Encryption WebVTT Plain Text WebVTT fragment s (outside container )
ADTS / AAC None, Note 6 None None  
MP3 None, Note 6 Non None    
Microsoft Smooth PIFF H.264 Play Rea EBU-TT- D, WebVTT Note 5

Note 1: Broadcast only supported for HbbTV contexts

Note 2: Out-Of-Band Subtitles with track element is not possible with Broadcast, but it is Possible to serve a Subtitle track in a separate HTML5 video element and synchronize this with broadcast (requires the Media Sync Module)

Note 3: Subtitles NOT handled by the browser

Note 4: Using MSE, subtitles can either be served and handled with an out-of-band <track> element, or extracted and rendered by JavaScript from the stream

Note 5: EBU-TT-D is a rich profile of Timed Text Markup Language (TTML) defined by DVB. Since TTML is XMLbased, most (simpler) TTML based subtitle profiles will work where TTML is stated

Note 6: Audio-only Container, no video format, supported Audio codecs are listed in the table below

Note 7 Multiple parallel video streams and simultaneous video elements are supported, but device support for this is dependent on platform, integration and resources.

Note 8 Rendering of Teletext formatted subtitles served over Progressive Download in MPEG2-TS Containers over broadband is mandated in HbbTV but not supported by Vewd SW!. Vewd believe that there are no real life usecases for this feature and is working to have it deprecated from the HbbTV specification.

Note 9 All Codec support is dependent on and limited by capabilities of the underlying platform and APIs.

Note 10: MPEG DASH is supported according to MPEG DASH IOSFF-live defined by HbbTV (HbbTV 1.5) and MPEG DASH Main Profile, defined by DVB (HbbTV 2.x)

Supported Audio codecs are dependent on container format:

Container Supported Audio Codecs
MPEG2-TS AA-LLC, HE-AAC v1, HE-AAC v2, MP3, Dolby AC3, Dolby E- AC-3
MP4 (ISO-BMFF) AA-LLC, HE-AAC v1, HE-AAC v2, MP3, Dolby AC3, Dolby E- AC-3
MP4 (when served in DASH) Dolby AC4, MPEG-H
PIFF AA-LLC, HE-AAC v1, HE-AAC v2
ADTS / AAC AA-LLC, HE-AAC v1, HE-AAC v2
MP3 MP3
WebM Opus

Input handling

Key mappings

A set of standardized key codes are defined, which are mapped from a remote control. The codes in the ‘JavaScript key code’ column are available to web applications and pages in the global JavaScript context.

Hardware key Linux key code Android key code JavaScript key code Requirement
OMI_KEY_LEFT KEYCODE_DPAD_LEFT VK_LEFT Mandatory
OMI_KEY_RIGHT KEYCODE_DPAD_RIG HT VK_RIGHT Mandatory
OMI_KEY_UP KEYCODE_DPAD_UP VK_UP Mandatory
OMI_KEY_DOWN KEYCODE_DPAD_DO WN VK_DOWN Mandatory
Confirm / Select / OK OMI_KEY_ENTER KEYCODE_DPAD_CE NTER / KEYCODE_ENTER VK_ENTER Mandatory
Back / Return OMI_KEY_BACK KEYCODE_BACK VK_BACK Mandatory
Exit/Close N/A N/A N/A CONDITIONALLY REQUIRED*
BLUE OMI_KEY_BLUE KEYCODE_PROG_BLU E VK_BLUE CONDITIONALLY REQUIRED*
RED OMI_KEY_RED KEYCODE_PROG_RE D VK_RED CONDITIONALLY REQUIRED*
GREEN OMI_KEY_GREEN KEYCODE_PROG_GR EEN VK_GREEN CONDITIONALLY REQUIRED*
YELLOW OMI_KEY_YELLOW KEYCODE_PROG_YEL LOW VK_YELLOW CONDITIONALLY REQUIRED*
Menu OMI_KEY_MENU KEYCODE_MENU VK_MENU CONDITIONALLY REQUIRED*
0 OMI_KEY_0 KEYCODE_0 VK_0 CONDITIONALLY REQUIRED*
1 OMI_KEY_1 KEYCODE_1 VK_1 CONDITIONALLY REQUIRED*
2 OMI_KEY_2 KEYCODE_2 VK_2 CONDITIONALLY REQUIRED*
3 OMI_KEY_3 KEYCODE_3 VK_3 CONDITIONALLY REQUIRED*
4 OMI_KEY_4 KEYCODE_4 VK_4 CONDITIONALLY REQUIRED*
5 OMI_KEY_5 KEYCODE_5 VK_5 CONDITIONALLY REQUIRED*
6 OMI_KEY_6 KEYCODE_6 VK_6 CONDITIONALLY REQUIRED*
7 OMI_KEY_7 KEYCODE_7 VK_7 CONDITIONALLY REQUIRED*
8 OMI_KEY_8 KEYCODE_8 VK_8 CONDITIONALLY REQUIRED*
9 OMI_KEY_9 KEYCODE_9 VK_9 CONDITIONALLY REQUIRED*
PLAY OMI_KEY_PLAY KEYCODE_MEDIA_PL AY VK_PLAY CONDITIONALLY REQUIRED*
PAUSE OMI_KEY_PAUSE KEYCODE_MEDIA_PA USE VK_PAUSE CONDITIONALLY REQUIRED*
PLAY/PAUSE OMI_KEY_PLAY_PA USE KEYCODE_MEDIA_PL AY_PAUSE VK_PLAY_PAUSE CONDITIONALLY REQUIRED*
STOP OMI_KEY_STOP KEYCODE_MEDIA_ST OP VK_STOP CONDITIONALLY REQUIRED*
NEXT OMI_KEY_TRACK_N EXT KEYCODE_MEDIA_NE XT VK_TRACK_NEXT CONDITIONALLY REQUIRED*
PREV OMI_KEY_TRACK_P REV KEYCODE_MEDIA_PR EVIOUS VK_TRACK_PREV CONDITIONALLY REQUIRED*
FF (Fast-Forward) OMI_KEY_FAST_FW D KEYCODE_MEDIA_FA ST_FORWARD VK_FAST_FWD CONDITIONALLY REQUIRED*
REWIND OMI_KEY_REWIND KEYCODE_MEDIA_RE WIND VK_REWIND CONDITIONALLY REQUIRED*
SUBTITLE OMI_KEY_SUBTITLE KEYCODE_CAPTIONS VK_SUBTITLE CONDITIONALLY REQUIRED*
AUDIO OMI_KEY_AUDIO_T RACK KEYCODE_MEDIA_AU DIO_TRACK VK_AUDIO_TRACK CONDITIONALLY REQUIRED*
INFORMATION OMI_KEY_INFO KEYCODE_INFO VK_INFO CONDITIONALLY REQUIRED*

Navigation and Select keys are sendt corresponding key codes with key events into the web app according to the DOM Level 3 Events specification ([23]).

Back key

The Back/Return button is a mandatory button on the remote control to go back or close the app. The JavaScript window.VK_BACK is passed to the app, so it can be handled by JavaScript. The caption for this button should be “Back” or “Return” or similar, as long as it remains clear to the end user. The caption should also be consistent with the entire device UI.

Exit/Close key

The Exit/Close key is an optional but recommended key on the remote control. The device firmware handles the key, and it should close the app immediately with no event exposed to the app. Its caption should be clear so the end-user understands what they are pressing (example: Exit/Close).

window.close()

When a web app calls window.close() in JavaScript, the device will handle the call by closing the specific window (app) immediately.

Entering text

The will normally provide an on-screen keyboard to input characters into edit or password fields on web pages.

User Agent string

Vewd Core uses the following User Agent String:

Component Comment
Mozilla/5.0 ( )

  • The browser states it’s ‘Mozilla-compatible’
  • OS - operating system, e.g. Linux or Andr0id (Andr0id is used to avoid confusion with Mobile)
  • Architecture - CPU architecture, e.g. MIPS or ARM
Chrome/xx.0.* The Chrome version
Safari/xxx.xx Safari version
OPR/xx.0.2207.0 Opera Desktop version
OMI/4.2x.0.* The Vewd Core version
Model/<CustomerName>-<DeviceModel>

‘CustomerName’ MUST represent the name of the OEM company
‘DeviceModel’ MUST represent generalized or particular model name of the OEM device
( Note : not all devices use these fields)

The entire User Agent string MAY resemble the following example:

Mozilla/5.0 (Linux x86_64 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.11 Safari/537.36 OPR/ 46.0.2207.0 OMI/4.22.0.161.master Model/MyManufacturerName-MyModelName

User agent client hints

Vewd Core support the User Agent Client Hints API.

The Chromium version on which Vewd Core is based on together with the Vewd Core version are reported in the brands and fullVersion properties.

Screen resolution

Depending on the resolution of the graphics plane, logical resolution and CSS pixel resolutions ([28]) as outlined in the following table:

Graphics plane resolution
Window resolution Window resolution
1280 x 720 1920 x 1080
1280 x 720 resolution 1dppx -
1920 x 1080 resolution 1.5dppx resolution 1dppx

Note that the resolution seen in a generic browser window, and specified in this document, may differ from the resolution seen by apps running in a HbbTV Windows

Security

Same-Origin policy

Applications must comply withSame-Origin policy with no exceptions. And signal and use CORS requests if required.

Mixed content

The following active mixed content is NOT allowed:

Passive/Display mixed content may be allowed, such as:

Root certificates

Vewd Core powered devices support a common set of Root Certificates that is normally kept updated after the device ships. On Android based platforms, Vewd Core leverages the Root Store on the platform as installed by the manufacturer.

Cipher suites

The following Chiper suites are normally supported:

Cipher suite Status
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b) Yes
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) Yes
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c) Normally yes
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) Normally yes
TLS_RSA_WITH_AES_128_CBC_SHA (0x002f) Yes: this is a fallback and should be after all other mentioned ciphers
Cipher suites with anonymous key exchange
(TLS_DH_anon_* suites)
No
Cipher suites with NULL encryption No
Cipher suites using RC4 encryption, for example: No

  • TLS_RSA_WITH_RC4_128_SHA (0x0005)
  • TLS_RSA_WITH_RC4_128_MD5 (0x0004)
Cipher suites using encryption or signing algorithms offering less than 112 bits of security No

Debugging tools

Vewd Core supports the development debugging tool (Chrome DevTools) as specified in [25]. This tool will normally ONLY be enabled in special debug versions of the device firmware and therefore in general not be available to content developers

Default colors

Empty and undefined browser elements will use the following default colors:

Background color

White

Font color

Black

Storage

The following minimum storage is available for apps:

The memory for the localStorage is shared between all apps, and each app may use up to 10MB. The localStorage and sessionStorage is limited to 5MB per origin.

The memory for temporary storage is shared between all apps, and each app may use up to 20% of the shared pool (3.2MB).

Cookies

The platform is capable of storing at least 180 cookies per domain, with at least 4096 bytes (for example, a total of 8MB cookie storage). Persistent cookies will not be removed earlier than 30 days from last access.

Accessibility

Text-to-speech

Text-to-Speech (TTS) is an accessibility feature enabling audible spoken words of the text strings shown in an application. Users with impaired vision disability benefit from using Text-to-Speech.

Accessibility (Text to Speech) in applications should be implemented by using the Web Speech API, but not all platforms support this.

Peer-to-peer Data API

The Peer-to-peer Data API lets a web application send and receive generic application data peer-to-peer. The API for sending and receiving data uses Web Sockets.

The following interfaces and extensions are supported:

The following parts of the WebRTC 1.0 specification are supported over a peer-to-peer connection:

Media Capture and Streams

The Media Capture and Streams defines a set of JavaScript APIs that allow local media, including audio and video, to be requested from a platform []

Support for Media Capture is platform dependent, but if supported, the MediaDevices object is supported, this is the entry point to the API used to examine and get access to media devices available to the browser.

Access to the sources:

Web Audio API

The Web Audio API specification describes a high-level Web API for processing and synthesizing audio in web applications.

This is supported as defined in the W3C Recommendation of the Web Audio API [39].

Abbreviations

AAC Advanced Audio Coding
AC-3 (Dolby Digital) Audio Compression 3
ADTS Audio Data Transport Stream
CENC Common Encryption
CDM Content Decryption Module
DASH Dynamic Adaptive Streaming over HTTP
DASH-IF DASH Industry Forum
DRM Digital Rights Management
E-AC-3 (Dolby Digital) Enhanced Audio Compression 3
EBU-TT-D EBU Timed Text format, part D - the format for the distribution of subtitles over IP
EME Encrypted Media Extensions
HbbTV Hybrid Broadcast Broadband TV
HDR High Dynamic Range
HE-AAC High-Efficiency Advanced Audio Coding
HLS HTTP Live Streaming
HTTP Hypertext Transfer Protocol
HTTPS Hypertext Transfer Protocol Secure
IDR Instantaneous Decoder Refresh
ISO BMFF ISO base media file format
KEYIDS Stream-independent format for specifying a list of key ID(s) for DRM initialization
LC-AAC Low-Complexity Advanced Audio Coding
LFE Low Frequency Effects
MPD DASH Media Presentation Description
MPEG Moving Picture Experts Group
MPEG2-TS MPEG-2 Transport Stream
MSS Microsoft Smooth Streaming
PIFF Protected Interoperable File Format
SHA Secure Hash Algorithm
TLS Transport Layer Security
TTF TrueType Font
TTML Timed Text Markup Language
WebM WebM Stream Format
WebVTT Web Video Text Tracks format
WOFF Web Open File Format
WOFF2 WOFF File Format 2.0

References

Annex A (informative). Media type strings for video and audio codecs

This section specifies codecs and media identifiers for audio and video codecs that MUST be supported with the HTML5 <video> tag. It also provides identifiers for some examples of combinations of those codecs and media containers. The Codec ID strings’ list is not comprehensive, because not all the rules from section 3.6. Video and audio formats are shown below.

MP4 video and audio

H.264 profiles

Profile Level Codec ID string [ rfc6381 ]
Baseline
3.1
avc1.42E01F
avc3.42E01F
Main
3.1
avc1.4D401F
avc3.4D401F
Main
4
avc1.4D4028
avc3.4D4028
High
4
avc1.640028
avc3.640028

H.265/HEVC profiles

Profile Level Constraints Codec ID string
Main


3.1 None hev1.1.6.L93.00 hvc1.1.6.L93.00
4 None hev1.1.6.L120.00 hvc1.1.6.L120.00
4.1 None hev1.1.6.L123.00 hvc1.1.6.L123.00
5.1 None hev1.1.6.L153.00 hvc1.1.6.L153.00
Main 10
4.1 None hev1.2.4.L123.00 hvc1.2.4.L123.00
5.1 None hev1.2.4.L153.00 hvc1.2.4.L153.00

AV1 profiles

Profile Level Constraints Codec ID string
Main




2 None av01.0.00M.08
2.1 None av01.0.01M.08
3 None av01.0.04M.08
3.1 None av01.0.05M.08
4 None av01.0.08M.08
4.1 None av01.0.09M.08

AAC profiles

Profile name Codec ID string
AAC-LC mp4a.40.2
HE-AAC v1 (SBR) mp4a.40.5
HE-AAC v2 (SBR+PS) mp4a.40.29

MP3 (MPEG-1 Layer III) profiles

Codec ID string
mp4a.69
mp4a.6B

Dolby profiles

Profile name Codec ID string
AC-3
ac-3
mp4a.a5
E-AC-3
ec-3
mp4a.a6
AC-4 ac-4

Combination examples of media type strings

Video codec Video profile Audio codec Audio profile Media type string
H.264 level 3.1


baseline


AAC
aac_he
aac_lc
video/mp4; codecs="avc1.42E01F, mp4a.40.5"
video/mp4; codecs="avc1.42E01F, mp4a.40.2"
MP3
 
video/mp4; codecs="avc1.42E01F, mp4a.69"
video/mp4; codecs="avc1.42E01F, mp4a.6B"
H.264 level 3.1


main


AAC
aac_he
aac_lc
video/mp4; codecs="avc1.4D401F, mp4a.40.5"
video/mp4; codecs="avc1.4D401F, mp4a.40.2"
MP3
 
video/mp4; codecs="avc1.4D401F, mp4a.69"
video/mp4; codecs="avc1.4D401F, mp4a.6B"
H.264 level 4.0


main


AAC
aac_he
aac_lc
video/mp4; codecs="avc1.4D4028, mp4a.40.5"
video/mp4; codecs="avc1.4D4028, mp4a.40.2"
MP3
 
video/mp4; codecs="avc1.4D4028, mp4a.69"
video/mp4; codecs="avc1.4D4028, mp4a.6B"
H.264 level 4.0


high


AAC
aac_he
aac_lc
video/mp4; codecs="avc1.640028, mp4a.40.5"
video/mp4; codecs="avc1.640028, mp4a.40.2"
MP3
 
video/mp4; codecs="avc1.640028, mp4a.69"
video/mp4; codecs="avc1.640028, mp4a.6B"

WebM video and audio

Video format Video codec Audio codec Media type string
WebM

VP9 profile 0
Opus
video/webm; codecs="vp9, opus"
video/webm; codecs="vp9.0, opus"
VP9 profile 2 Opus video/webm; codecs="vp9.2, opus"

Audio only

Audio codec Audio profile Media type string
AAC
aac_he audio/mp4; codecs="mp4a.40.5"
aac_lc


audio/mp4; codecs="mp4a.40.2"
MP3
audio/mp4; codecs="mp4a.69"
audio/mp4; codecs="mp4a.6B"
Ogg Vorbis audio/ogg; codecs="vorbis"

Revision History

Version Number Chromium Date Comment
4.9.0 53 2016-08-18 Publication Release
4.9.0-r1








53








2016-11-04








Changes:
  • Updated Chromium version
  • Fixed MSE reference
  • Removed text about terminal- defined behaviour in the exit key. The application may now manage this key event freely.
  • The Application MUST handle both VK_BACK_SPACE and VK_BACK.
  • The Application MUST support HD, Full HD or both resolutions
  • Removed mention of viewport META tag
  • The Application MUST explicitly set colors
  • Restructured content
  • Improved clarity and grammar
4.10


56


2017-03-16


Publication release
Changes:
  • Added ‘’
  • Added “” table
4.10-r1 56 2017-09-14
  • Rebranded to a new company entity
4.11


59.0


2018-02-19


Changes:
  • Updated Chromium version
  • Fixed MSE reference Added sections on HDR and 4K
  • Added sections on HDR and 4K video support
4.12




63




2018-04-03




Changes:
  • Added cipher suites requirements: section
  • Added Advert Insertion performance requirements: sectio
  • Devtools must be disabled: section
  • Added requirement for MPEG-DASH period in section
  • Added requirement for PlayReady automatic license acquisition:
4.13
67
2018-07-20
Changes:
  • Added text-to-speech requirements
4.13-r1



67



2018-02-05



Changes:
  • Added AV1 codec requirements: section
  • Added Ogg Vorbis audio codec requirements in a new chapter: section
  • Added CustomData and License Acquisition override feature optional requirement
  • Removed VP8 requirement.
4.20


77.0


2019-09-20


Changes:
  • Added Dolby AC4 codec and Dolby Atmos requirements: section
  • Added Marlin DRM requirements: section
  • Added image rendering performance requirements: section
4.20-r1


77.0


2019-12-19


Changes:
  • Added CBCS requirement for PlayReady and Widevine DRM: section
  • Added CMAF requirement:
  • Stricter Widevine and PlayReady DRM security level requirement
4.21 84.0 2020-07-24 No changes in requirements.
4.22
92.0
2021-09-02
Changes:
  • Added AV1 codec support in
4.22-r1

92.0

2022-02-06

Changes:
  • Added WebRTC requirements: 3.14. WebRTC
  • Added Widevine automatic license acquisition:
4.23.0
102.0
2022-09-16
Changes:
  • Updated section
4.24.0

114.0

2023-06-07

Changes:
  • Added WebAudio requirements:
  • Added requirement for PlayReady key system ID ‘com.youtube.playready’
4.25.0



 



2024-06



Changes:
  • Moved document to TiVo.com
  • Removed legacy information (except this change log)
  • Cleaned up language
  • Inserted new table 3.6.5 Media Format combinations
4.25
 
2024-08
Changes
  • added info on keycodes for AUDIO and PLAY/PAUSE buttons
4.25
 
2025-01
Changes
  • fixed references to HLS