Terms and definitions

Overview

As the RxPlayer manages multiple type of streaming technologies, which can use their own definition and terminology, we had to find a compromise and use our own terminology, which try to take the best from these.

We here define various terms used in the documentation which might not be obvious right along.

Definitions

Adaptation

An Adaptation is an element of a Period (and by extension of the Manifest) which represents a single type of media.

An adaptation can be for example any of those things:

  • A video track
  • A french audio track
  • An italian text track
  • A thumbnail track

Many Streaming Technology have this concept even though their name can change, an Adaptation is equivalent to:

  • DASH’s AdaptationSet
  • Microsoft Smooth Streaming’s StreamIndex

Bitrate

In the RxPlayer, a bitrate of a Representation indicates the number of bits per second of content described by that Representation.

For example, a video Adaptation could have two Representation:

  1. one with a bitrate: 1.000.000
  2. the other with the bitrate: 500.000

The first representation here will be considered to encode each second of content by a million bits (or 1Mb).

The second one will represent the same content for the same time and duration for hald the bits (500kb).

The second one is thus more attracting for situations where the current network conditions are too poor to play the first one smoothly. The catch is that most often a Representation with a lower bitrate will describe a content of a lower quality.

Buffer

RxPlayer’s Buffer can describe two things, depending on the context:

  • the part of a code downloading media segments and doing what is needed to play them.

  • The content downloaded (and thus “bufferized”) itself.

Buffer Type

RxPlayer’s buffer types describe a single “type” of media.

Example of such types are:

  • “video”: which represents only the video content
  • “audio”: the audio content without the video
  • “text”: the subtitles, for example
  • “image”: the thumbnail tracks.

Those are called buffer types here (or simply “types”) as each type will have a single, uncorellated Buffer.

Chunk

Synonymous to Media Segment.

Initialization Segment

An initialization Segment is a Media Segment, which includes metadata necessary to play the other segment of the same Representation.

This is used by multiple Streaming Technologies to avoid inserting the same data in multiple Media Segments.

As such initialization Segments are the first segment downloaded, to indicate the metadata of the following content.

Manifest

Document which describes the content you want to play.

This is equivalent to the DASH’s Media Presentation Description (or MPD), the Microsoft Smooth Streaming’s Manifest and the HLS’ playlist.

Such document can describe for example:

  • multiple qualities for the same video or audio tracks
  • multiple audio tracks in different languages
  • presence of subtitles

Note that this concept is only used in Streaming technologies. You won’t interact with a Manifest if you’re directly playing a MP4 or webM file.

Media Segment

A media segment (or simply segment), is a small chunk of media data.

In many streaming technologies, a content is separated into multiple chunks of small duration (usually between 2 and 10 seconds).

This allows, for reasons to long to detail here, to easily implements many features:

  • live streaming,
  • language switching
  • adaptive streaming

When you play a content with the RxPlayer, it will most of the time download media segments of different types (audio, video, text…) rather than the whole content a single time.

Period

A Period is an element of the Manifest which describes the media to play at a certain points in time.

They are directly a DASH’ concept, called… Period.

Simply put, it allows to set various types of content successively in the same manifest.

For example, let’s take a manifest describing a live content with chronologically:

  1. an english TV Show
  2. an old italian film with subtitles
  3. an American film with closed captions.

Those contents are drastically different (they have different languages, the american film might have more available bitrates than the old italian one).

Moreover, even a library user might want to be able to know when the italian film is finished, to report about it immediately in a graphical interface.

As such, they have to be considered separately - in a different Period:

        Period 1                Period 2                Period 3
08h05              09h00                       10h30                now
  |==================|===========================|===================|
        TV Show               Italian Film            American film

Representation

A Representation is an element of an Adaptation, and by extension of the Manifest) that describes an interchangeable way to represent the parent Adaptation.

For example, a video Adaptation can have several representation, each having its own bitrate, its own width or its own height. The idea behind a Representation is that it can be changed by any other one in the same Adaptation as the content plays.

This is most often implemented to allow multiple bitrates for the same Adaptation, to be more flexible to poor network (low bandwidth) or computing (slow computer) conditions.

A Representation has its equivalent in multiple Streaming technologies. It is roughly the same as:

  • DASH’s Representation
  • Microsoft Smooth Streaming’s QualityIndex
  • HLS’ variant