xref: /aosp_15_r20/external/exoplayer/tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/docs/glossary.md (revision 30877f796caf59d855b10b687a5d6b3918d765cb)
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](https://developer.android.com/reference/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](https://developer.android.com/reference/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](https://developer.android.com/reference/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](https://developer.android.com/reference/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](https://developer.android.com/reference/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](https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/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](https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/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](https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/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](https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/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](https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/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](https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/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](https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/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](https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/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](https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/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](https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/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](https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/trackselection/TrackSelector.html).
309