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.