Common Media Server Data

Origin CMSD is an experimental project for testing CTA-WAVE's Common Media Server Data (CMSD) proposal.

CMSD's proposal aims to generate a specification on how every media server (intermediate and origin) can communicate data with each media object response and have it received and processed consistently by every intermediate server and player. It is expected that using CMSD's proposal will increase efficiency and performance in distributing media workflows. Consequently, improve the quality of experience (QoE) for end-users.

A good overview here cmsd.pdf or slides.

CMSD key/value pairs

The following table shows the current key-value pairs used in CMSD proposal.

Key number

Description

Key Name

Header name

Type & Unit

Value definition

Timestamp

t

CMSD-Dynamic

Integer [milliseconds]

(See CMSD ref.)

Entity identifier

n

CMSD-Dynamic & CMSD-Static

String

(See CMSD ref.)

Estimated Throughput

etp

CMSD-Dynamic

Integer [kilobit per second]

(See CMSD ref.)

RTT

rtt

CMSD-Dynamic

Integer [milliseconds]

The maximum bitrate value that the player SHOULD play in its Adaptive Bit Rate (ABR) ladder. If the player is playing a bitrate higher than this value, it SHOULD immediately switch to a bitrate lower than this value.

Max suggested bitrate

mb

CMSD-Dynamic

Integer [kilobit per second]

(See CMSD ref.)

Next object

no

CMSD-Static

String

(See CMSD ref.)

Next range

nr

CMSD-Static

String of the form “<range-start>-<range-end>”

(See CMSD ref.)

Object type

ot

CMSD-Static

Token - one of [m,a,v,av,i,c,tt,k,o]

The media type of the current object being returned:

m = text file, such as a manifest or playlist a = audio only v = video only av = muxed audio and video i = init segment c = caption or subtitle tt = ISOBMFF timed text track k = cryptographic key, license or certificate. o = other

If the object type being returned is unknown, then this key MUST NOT be used.

Stream type

st

CMSD-Dynamic

Token - one of [v,l]

v = all segments are available – e.g., VOD

l = segments become available over time – e.g., LIVE

Streaming format

sf

CMSD-Static

Token - one of [d,h,s,o]

The streaming format that defines the current response:

d = MPEG DASH h = HTTP Live Streaming (HLS) s = Smooth Streaming o = other

If the streaming format being returned is unknown, then this key MUST NOT be used.

Publish time

pt

CMSD-Static

Integer

The wallclock time at which the first byte of this object became available for successful request. The time is expressed as integer milliseconds since the Unix epoch i.e the number of seconds that have elapsed since January 1, 1970 (midnight UTC/GMT), not counting leap seconds (in ISO 8601: 1970-01-01T00:00:00Z).

Held time

ht

CMSD-Dynamic

Integer

The number of milliseconds that this response was held back before returning. This is applicable to blocking responses under LL-HLS.

Served from cache

sc

CMSD-Dynamic

Boolean

(See CMSD ref.)

CPU load

cpu

CMSD-Dynamic

Token - one of [l,m,h]

(See CMSD ref.)

cached at the edge

TBD

TBD

TBD

TBD

Object duration

d

CMSD-Static

Integer [milliseconds]

(See CMSD ref.)

Encoded bitrate

br

CMSD-Static

Integer [Kilobit per second]

(See CMSD ref.)

Init segments

is

CMSD-Static

String

Relative path to the init segments referenced inside the playlist or manifest. Each init segment path is separated by a semi-colon and concatenated into a single String.

Startup

su

CMSD-Static

Boolean

(See CMSD ref.)

Request ID

rid

CMSD-Static

String

(See CMSD ref.)

Session ID

sid

CMSD-Static

String

(See CMSD ref.)

Version

v

CMSD-Static

Integer

(See CMSD ref.)

Example configurations

Current open source project supporting this proposal can be found in the following github repository.