1--- 2title: Glossary 3--- 4 5## General - Media ## 6 7###### ABR 8 9Adaptive Bitrate. An ABR algorithm is an algorithm that selects between a number 10of [tracks](#track) during playback, where each track presents the same media 11but at different bitrates. 12 13###### Adaptive streaming 14 15In adaptive streaming, multiple [tracks](#track) are available that present the 16same media at different bitrates. The selected track is chosen dynamically 17during playback using an [ABR](#abr) algorithm. 18 19###### Access unit 20 21A data item within a media [container](#container). Generally refers to a small 22piece of the compressed media bitstream that can be decoded and presented to the 23user (a video picture or fragment of playable audio). 24 25###### AV1 26 27AOMedia Video 1 [codec](#codec). 28 29For more information, see the 30[Wikipedia page](https://en.wikipedia.org/wiki/AV1). 31 32###### AVC 33 34Advanced Video Coding, also known as the H.264 video [codec](#codec). 35 36For more information, see the 37[Wikipedia page](https://en.wikipedia.org/wiki/Advanced_Video_Coding). 38 39###### Codec 40 41This term is overloaded and has multiple meanings depending on the context. The 42two following definitions are the most commonly used: 43 44* Hardware or software component for encoding or decoding 45 [access units](#access-unit). 46* Audio or video sample format specification. 47 48###### Container 49 50A media container format such as MP4 and Matroska. Such formats are called 51container formats because they contain one or more [tracks](#track) of media, 52where each track uses a particular [codec](#codec) (e.g. AAC audio and H.264 53video in an MP4 file). Note that some media formats are both a container format 54and a codec (e.g. MP3). 55 56###### DASH 57 58Dynamic [Adaptive Streaming](#adaptive-streaming) over HTTP. An industry driven 59adaptive streaming protocol. It is defined by ISO/IEC 23009, which can be found 60on the 61[ISO Publicly Available Standards page](https://standards.iso.org/ittf/PubliclyAvailableStandards/). 62 63###### DRM 64 65Digital Rights Management. 66 67For more information, see the 68[Wikipedia page](https://en.wikipedia.org/wiki/Digital_rights_management). 69 70###### Gapless playback 71 72Process by which the end of a [track](#track) and/or the beginning of the next 73track are skipped to avoid a silent gap between tracks. 74 75For more information, see the 76[Wikipedia page](https://en.wikipedia.org/wiki/Gapless_playback). 77 78###### HEVC 79 80High Efficiency Video Coding, also known as the H.265 video [codec](#codec). 81 82###### HLS 83 84HTTP Live Streaming. Apple’s [adaptive streaming](#adaptive-streaming) protocol. 85 86For more information, see the 87[Apple documentation](https://developer.apple.com/streaming/). 88 89###### Manifest 90 91A file that defines the structure and location of media in 92[adaptive streaming](#adaptive-streaming) protocols. Examples include 93[DASH](#dash) [MPD](#mpd) files, [HLS](#hls) multivariant playlist files and 94[Smooth Streaming](#smooth-streaming) manifest files. Not to be confused with an 95AndroidManifest XML file. 96 97###### MPD 98 99Media Presentation Description. The [manifest](#manifest) file format used in 100the [DASH](#dash) [adaptive streaming](#adaptive-streaming) protocol. 101 102###### PCM 103 104Pulse-Code Modulation. 105 106For more information, see the 107[Wikipedia page](https://en.wikipedia.org/wiki/Pulse-code_modulation). 108 109###### Smooth Streaming 110 111Microsoft’s [adaptive streaming](#adaptive-streaming) protocol. 112 113For more information, see the 114[Microsoft documentation](https://www.iis.net/downloads/microsoft/smooth-streaming). 115 116###### Track 117 118A single audio, video, text or metadata stream within a piece of media. A media 119file will often contain multiple tracks. For example a video track and an audio 120track in a video file, or multiple audio tracks in different languages. In 121[adaptive streaming](#adaptive-streaming) there are also multiple tracks 122containing the same content at different bitrates. 123 124## General - Android ## 125 126###### AudioTrack 127 128An Android API for playing audio. 129 130For more information, see the 131[Javadoc]({{ site.android_sdk }}/android/media/AudioTrack). 132 133###### CDM 134 135Content Decryption Module. A component in the Android platform responsible for 136decrypting [DRM](#drm) protected content. CDMs are accessed via Android’s 137[`MediaDrm`](#mediadrm) API. 138 139For more information, see the 140[Javadoc]({{ site.android_sdk }}/android/media/MediaDrm). 141 142###### IMA 143 144Interactive Media Ads. IMA is an SDK that makes it easy to integrate multimedia 145ads into an app. 146 147For more information, see the 148[IMA documentation](https://developers.google.com/interactive-media-ads). 149 150###### MediaCodec 151 152An Android API for accessing media [codecs](#codec) (i.e. encoder and decoder 153components) in the platform. 154 155For more information, see the 156[Javadoc]({{ site.android_sdk }}/android/media/MediaCodec). 157 158###### MediaDrm 159 160An Android API for accessing [CDMs](#cdm) in the platform. 161 162For more information, see the 163[Javadoc]({{ site.android_sdk }}/android/media/MediaDrm). 164 165###### Audio offload 166 167The ability to send compressed audio directly to a digital signal processor 168(DSP) provided by the device. Audio offload functionality is useful for low 169power audio playback. 170 171For more information, see the 172[Android interaction documentation](https://source.android.com/devices/tv/multimedia-tunneling). 173 174###### Passthrough 175 176The ability to send compressed audio directly over HDMI, without decoding it 177first. This is for example used to play 5.1 surround sound on an Android TV. 178 179For more information, see the 180[Android interaction documentation](https://source.android.com/devices/tv/multimedia-tunneling). 181 182###### Surface 183 184See the [Javadoc]({{ site.android_sdk }}/android/view/Surface) 185and the 186[Android graphics documentation](https://source.android.com/devices/graphics/arch-sh). 187 188###### Tunneling 189 190Process by which the Android framework receives compressed video and either 191compressed or [PCM](#pcm) audio data and assumes the responsibility for 192decoding, synchronizing and rendering it, taking over some tasks usually handled 193by the application. Tunneling may improve audio-to-video (AV) synchronization, 194may smooth video playback and can reduce the load on the application processor. 195It is mostly used on Android TVs. 196 197For more information, see the 198[Android interaction documentation](https://source.android.com/devices/tv/multimedia-tunneling) 199and the 200[ExoPlayer article](https://medium.com/google-exoplayer/tunneled-video-playback-in-exoplayer-84f084a8094d). 201 202## ExoPlayer ## 203 204{% include figure.html url="/images/glossary-exoplayer-architecture.png" index="1" caption="ExoPlayer architecture overview" %} 205 206{% include figure.html url="/images/glossary-rendering-architecture.png" index="1" caption="ExoPlayer rendering overview" %} 207 208###### BandwidthMeter 209 210Component that estimates the network bandwidth, for example by listening to data 211transfers. In [adaptive streaming](#adaptive-streaming), bandwidth estimates can 212be used to select between different bitrate [tracks](#track) during playback. 213 214For more information, see the component 215[Javadoc]({{ site.exo_sdk }}/upstream/BandwidthMeter.html). 216 217###### DataSource 218 219Component for requesting data (e.g. over HTTP, from a local file, etc). 220 221For more information, see the component 222[Javadoc]({{ site.exo_sdk }}/upstream/DataSource.html). 223 224###### Extractor 225 226Component that parses a media [container](#container) format, outputting 227[track](#track) information and individual [access units](#access-unit) 228belonging to each track suitable for consumption by a decoder. 229 230For more information, see the component 231[Javadoc]({{ site.exo_sdk }}/extractor/Extractor.html). 232 233###### LoadControl 234 235Component that decides when to start and stop loading, and when to start 236playback. 237 238For more information, see the component 239[Javadoc]({{ site.exo_sdk }}/LoadControl.html). 240 241###### MediaSource 242 243Provides high-level information about the structure of media (as a 244[`Timeline`](#timeline)) and creates [`MediaPeriod`](#mediaperiod) instances 245(corresponding to periods of the `Timeline`) for playback. 246 247For more information, see the component 248[Javadoc]({{ site.exo_sdk }}/source/MediaSource.html). 249 250###### MediaPeriod 251 252Loads a single piece of media (e.g. audio file, ad, content interleaved between 253two ads, etc.), and allows the loaded media to be read (typically by 254[`Renderers`](#renderer)). The decisions about which [tracks](#track) within the 255media are loaded and when loading starts and stops are made by the 256[`TrackSelector`](#trackselector) and the [`LoadControl`](#loadcontrol) 257respectively. 258 259For more information, see the component 260[Javadoc]({{ site.exo_sdk }}/source/MediaPeriod.html). 261 262###### Renderer 263 264Component that reads, decodes and renders media samples. [`Surface`](#surface) 265and [`AudioTrack`](#audiotrack) are the standard Android platform components to 266which video and audio data are rendered. 267 268For more information, see the component 269[Javadoc]({{ site.exo_sdk }}/Renderer.html). 270 271###### Timeline 272 273Represents the structure of media, from simple cases like a single media file 274through to complex compositions of media such as playlists and streams with 275inserted ads. 276 277For more information, see the component 278[Javadoc]({{ site.exo_sdk }}/Timeline.html). 279 280###### TrackGroup 281 282Group containing one or more representations of the same video, audio or text 283content, normally at different bitrates for 284[adaptive streaming](#adaptive-streaming). 285 286For more information, see the component 287[Javadoc]({{ site.exo_sdk }}/source/TrackGroup.html). 288 289###### TrackSelection 290 291A selection consisting of a static subset of [tracks](#track) from a 292[`TrackGroup`](#trackgroup), and a possibly varying selected track from the 293subset. For [adaptive streaming](#adaptive-streaming), the `TrackSelection` is 294responsible for selecting the appropriate track whenever a new media chunk 295starts being loaded. 296 297For more information, see the component 298[Javadoc]({{ site.exo_sdk }}/trackselection/TrackSelection.html). 299 300###### TrackSelector 301 302Selects [tracks](#track) for playback. Given track information for the 303[`MediaPeriod`](#mediaperiod) to be played, along with the capabilities of the 304player’s [`Renderers`](#renderer), a `TrackSelector` will generate a 305[`TrackSelection`](#trackselection) for each `Renderer`. 306 307For more information, see the component 308[Javadoc]({{ site.exo_sdk }}/trackselection/TrackSelector.html). 309