Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

r2.6.1 #3659

Merged
merged 105 commits into from
Jan 3, 2018
Merged

r2.6.1 #3659

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
566170f
Add javadoc to ExoPlayerTestRunner.
tonihei Nov 10, 2017
bff221b
Introduce Builder pattern to create MediaSource.
botaydotcom Nov 13, 2017
877c89a
Make it possible to extend DashManifestParser to parse revision-id.
Nov 13, 2017
5bf4c24
Notify TrackSelection when it's enabled and disabled.
botaydotcom Nov 13, 2017
79a9155
Add support for 608/708 captions in HLS+fMP4
AquilesCanta Nov 3, 2017
25dd8aa
Fix cenc mode support and add support for the .mp4a extension.
AquilesCanta Nov 13, 2017
8d81698
Continue adding Builder to MediaSource.
botaydotcom Nov 14, 2017
77b4869
Suppress reference equality warning in EventLogger.
tonihei Nov 14, 2017
eea8cd1
Replaced the duplicated EMPTY track group array with the one already …
tonihei Nov 14, 2017
76ba189
Add method to FakeMediaSource to trigger source info refresh.
tonihei Nov 14, 2017
4bb5cda
Some test cleanup
ojw28 Nov 15, 2017
5786809
Add Builder pattern to HlsMediaSource.
botaydotcom Nov 15, 2017
d49fc54
Use ArrayDeque for playback parameters checkpoints
andrewlewis Nov 15, 2017
108900c
Add support for float output in DefaultAudioSink
andrewlewis Nov 16, 2017
820a445
Add support for float output for FfmpegAudioRenderer
andrewlewis Nov 16, 2017
f5a3a27
Deduplicate ExtractorMediaPeriod discontinuity reporting
ojw28 Nov 16, 2017
1f70d3c
Add Builder to ExtractorMediaSource.
botaydotcom Nov 17, 2017
bb4be43
Add simplified FakeTimeline constructor.
tonihei Nov 17, 2017
14299e0
Simplify LoopingMediaSourceTest setup
ojw28 Nov 17, 2017
1b7c950
Add MediaSourceTestRunner for MediaSource tests.
ojw28 Nov 17, 2017
09f3055
Add Builder to SingleSampleMediaSource.
botaydotcom Nov 20, 2017
dc425a9
Use consistent case for sideloaded
AquilesCanta Nov 20, 2017
2ad87f4
Add time unit and javadocs to fields in DashManifest
AquilesCanta Nov 20, 2017
82ce680
Move MockitoUtils to testutils and use it for all Mockito set-ups.
tonihei Nov 20, 2017
c3b92f8
Add support for Dolby Atmos
andrewlewis Nov 20, 2017
7903166
Allow human readable strings as DRM intent extras.
AquilesCanta Nov 20, 2017
5c0e1f3
Use MediaSourceTestRunner in additional source tests
ojw28 Nov 20, 2017
fa5cc5b
Bump target API level to 27
ojw28 Nov 20, 2017
f2a78ad
Parse DASH manifest's publish time.
botaydotcom Nov 21, 2017
d5b79f3
Update gradle wrapper
ojw28 Nov 22, 2017
cf3ab90
Guard against out-of-range timestamp
Nov 24, 2017
b19512f
Propagate the player error to ExoPlayerTestRunner
andrewlewis Nov 24, 2017
6c1f562
Switch from currentTimeMillis to elapsedRealtime
andrewlewis Nov 24, 2017
86d91a5
Remove race condition when stopping FakeExoPlayer.
tonihei Nov 27, 2017
ce557b1
Add final to boolean used within Runnable.
tonihei Nov 27, 2017
c1c892f
Support undefined text track language when preferred is not available
AquilesCanta Nov 27, 2017
1861aea
Add throws IllegalSeekPositionException doc to seekTo(windowIndex, po…
tonihei Nov 27, 2017
23a7f2d
Force wrapping of HLS ID3 timestamp
ojw28 Nov 27, 2017
d3fd2d1
Update ISSUE_TEMPLATE
ojw28 Nov 28, 2017
e175bf9
Iso8601Parser improved to be able to parse timestamp offsets from UTC
pstambrecht Dec 4, 2017
ee05b60
Iso8601Parser improved to be able to parse timestamp offsets from UTC
pstambrecht Dec 4, 2017
1d96492
Update moe equivalence
ojw28 Nov 27, 2017
7a03198
Add some clarifications to MediaSource documentation
ojw28 Nov 28, 2017
0e0300b
Extractor cleanup
ojw28 Nov 28, 2017
a8d4ad9
Fix DefaultTrackSelector#Parameter withSelectUndeterminedTextLanguage
AquilesCanta Nov 28, 2017
9eed115
Clean up some extrator SeekMap implementations
ojw28 Nov 28, 2017
c12349e
Allow setting supported formats on AdsLoaders
andrewlewis Nov 28, 2017
63dbf56
Allow multiple video and audio debug listeners in SimpleExoPlayer.
tonihei Nov 28, 2017
91b324f
Fix weird XingSeeker indexing
ojw28 Nov 29, 2017
800cfee
Optimize seeking for unseekable SeekMaps
ojw28 Nov 29, 2017
f0f726d
Add manifestless captions support. This code fits into the pre-existing
Nov 30, 2017
2567bf5
Log load errors from AdsMediaSource in the demo app
andrewlewis Nov 30, 2017
9526e85
Use a MediaSource factory internally in AdsMediaSource
andrewlewis Nov 30, 2017
315a6c3
Update getPosition(0) positions for FragmentedMp4Extractor
andrewlewis Nov 30, 2017
4e8b928
Add a notice that NDK <= version 15c is required for VP9
andrewlewis Nov 30, 2017
8fbc2a5
Snap to frame boundary in ConstantBitrateSeeker
ojw28 Nov 30, 2017
022b85a
Move resetting audio processors to initialize()
andrewlewis Nov 30, 2017
0ea8c8b
Fix VBRI and XING seekers
ojw28 Nov 30, 2017
b61d09c
Fix mp3 extractor test
ojw28 Nov 30, 2017
393a762
Use AdaptiveMediaSourceEventListener for ExtractorMediaSource
andrewlewis Dec 4, 2017
e759462
Update internal usages of deprecated AdaptiveMediaSourceEventListener
andrewlewis Dec 4, 2017
10b24be
Fix build
ojw28 Dec 12, 2017
a8298b4
Tentative fix for roll-up row count
ojw28 Dec 4, 2017
29f6351
Support timezone offsets in ISO8601 timestamps
ojw28 Dec 4, 2017
bc7bfb4
Fix setting supported ad MIME types without preloading
andrewlewis Dec 4, 2017
13a7037
Fix playback of FLV live streams with no audio track
ojw28 Dec 4, 2017
aef9063
Add @SuppressWarnings("ComparableType") for instances of a class impl…
Dec 4, 2017
82122b9
Make one ad request in ImaAdsLoader
andrewlewis Dec 5, 2017
3c0bb72
Invoke onLoadCanceled/Completed for ExtractorMediaSource
andrewlewis Dec 5, 2017
9cb0c2f
Remove self @link
ojw28 Dec 5, 2017
02e32a1
Hide subtitles when switching player in SimpleExoPlayerView
ojw28 Dec 5, 2017
39e8f07
Add missing Nullable annotation
ojw28 Dec 6, 2017
e7d4524
Use mappedTrackInfo local
andrewlewis Dec 7, 2017
a4a02f7
Skip ads before the initial player position
andrewlewis Dec 7, 2017
f677d13
Blacklist Moto Z from using secure DummySurface.
ojw28 Dec 7, 2017
a99295b
Fix ad loading when there is no preroll
andrewlewis Dec 7, 2017
88d012b
Treat captions that are wider than expected as middle aligned
ojw28 Dec 8, 2017
3e9c86f
Add an option to turn off hiding controls during ads
andrewlewis Dec 8, 2017
a0d42b5
Make DashMediaSource.Builder a factory for DashMediaSources
andrewlewis Dec 8, 2017
4c71d63
Make SsMediaSource.Builder a factory for SsMediaSources
andrewlewis Dec 8, 2017
42b612a
Make HlsMediaSource.Builder a factory for HlsMediaSources
andrewlewis Dec 8, 2017
babd575
Use surfaceless context in DummySurface, if available
andrewlewis Dec 11, 2017
f31696b
Make ExtractorMediaSource.Builder a factory for ExtractorMediaSources
andrewlewis Dec 11, 2017
7a089c3
Support non-extractor ads in AdsMediaSource and demo apps
andrewlewis Dec 11, 2017
b223988
Add Builder for ImaAdsLoader and allow early requestAds
andrewlewis Dec 12, 2017
bf9a919
Propagate extras from queue item to metadata item.
marcbaechinger Dec 12, 2017
65ccff2
Update release notes to reflect builder -> factory change
ojw28 Dec 13, 2017
ae514b6
Update release notes for current 2.6.1 feature set
ojw28 Dec 13, 2017
8a6c375
Check if native libraries are available in tests.
tonihei Dec 13, 2017
67b94a7
Update SingleSampleMediaSource with factory/listener changes
ojw28 Dec 13, 2017
403f773
Add missing attrs to SimpleExoplayerView
ojw28 Dec 14, 2017
b97ce44
Pass -1 not C.TIME_UNSET when duration is unknown
andrewlewis Dec 15, 2017
04108ee
Fix condition for detecting that an ad has ended
andrewlewis Dec 15, 2017
52794e7
Fix typo
ojw28 Dec 15, 2017
ab75038
Use playAd/stopAd to control position updates switching
andrewlewis Dec 15, 2017
236df9a
Remove DefaultLoadControl buffer time state
andrewlewis Nov 21, 2017
1e36c76
Allow to configure maximum buffer size in DefaultLoadControl.
tonihei Dec 14, 2017
3fae0b8
Fix analyze/lint errors
ojw28 Dec 15, 2017
16ad280
Bump version to 2.6.1
ojw28 Dec 15, 2017
ad95a14
Fix a bug that makes ClippingMediaSource not stop in some occasions.
botaydotcom Dec 22, 2017
f657893
Make SsaDecoder more robust against malformed content
ojw28 Jan 2, 2018
f8c76f6
Fix ClippingSampleStream
ojw28 Jan 3, 2018
42a3e2e
Add support for extracting 32-bit float WAVE
andrewlewis Dec 22, 2017
134c494
Typo fixes
erdemguven Dec 27, 2017
b704a1d
Typo fix
ojw28 Jan 2, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions ISSUE_TEMPLATE
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
*** ISSUES THAT IGNORE THIS TEMPLATE WILL BE CLOSED WITHOUT INVESTIGATION ***

Before filing an issue:
-----------------------
- Search existing issues, including issues that are closed.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ individually.

In addition to library modules, ExoPlayer has multiple extension modules that
depend on external libraries to provide additional functionality. Some
extensions are available from JCenter, whereas others must be built manaully.
extensions are available from JCenter, whereas others must be built manually.
Browse the [extensions directory][] and their individual READMEs for details.

More information on the library and extension modules that are available from
Expand Down
44 changes: 43 additions & 1 deletion RELEASENOTES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,47 @@
# Release notes #

### 2.6.1 ###

* Add factories to `ExtractorMediaSource`, `HlsMediaSource`, `SsMediaSource`,
`DashMediaSource` and `SingleSampleMediaSource`.
* Use the same listener `MediaSourceEventListener` for all MediaSource
implementations.
* IMA extension:
* Support non-ExtractorMediaSource ads
([#3302](https://github.com/google/ExoPlayer/issues/3302)).
* Skip ads before the ad preceding the player's initial seek position
([#3527](https://github.com/google/ExoPlayer/issues/3527)).
* Fix ad loading when there is no preroll.
* Add an option to turn off hiding controls during ad playback
([#3532](https://github.com/google/ExoPlayer/issues/3532)).
* Support specifying an ads response instead of an ad tag
([#3548](https://github.com/google/ExoPlayer/issues/3548)).
* Support overriding the ad load timeout
([#3556](https://github.com/google/ExoPlayer/issues/3556)).
* DASH: Support time zone designators in ISO8601 UTCTiming elements
([#3524](https://github.com/google/ExoPlayer/issues/3524)).
* Audio:
* Support 32-bit PCM float output from `DefaultAudioSink`, and add an option
to use this with `FfmpegAudioRenderer`.
* Add support for extracting 32-bit WAVE files
([#3379](https://github.com/google/ExoPlayer/issues/3379)).
* Support extraction and decoding of Dolby Atmos
([#2465](https://github.com/google/ExoPlayer/issues/2465)).
* Fix handling of playback parameter changes while paused when followed by a
seek.
* SimpleExoPlayer: Allow multiple audio and video debug listeners.
* DefaultTrackSelector: Support undefined language text track selection when the
preferred language is not available
([#2980](https://github.com/google/ExoPlayer/issues/2980)).
* Add options to `DefaultLoadControl` to set maximum buffer size in bytes and
to choose whether size or time constraints are prioritized.
* Use surfaceless context for secure `DummySurface`, if available
([#3558](https://github.com/google/ExoPlayer/issues/3558)).
* FLV: Fix playback of live streams that do not contain an audio track
([#3188](https://github.com/google/ExoPlayer/issues/3188)).
* CEA-608: Fix handling of row count changes in roll-up mode
([#3513](https://github.com/google/ExoPlayer/issues/3513)).

### 2.6.0 ###

* Removed "r" prefix from versions. This release is "2.6.0", not "r2.6.0".
Expand Down Expand Up @@ -142,7 +184,7 @@
easy and seamless way of incorporating display ads into ExoPlayer playbacks.
You can read more about the IMA extension
[here](https://medium.com/google-exoplayer/playing-ads-with-exoplayer-and-ima-868dfd767ea).
* MediaSession extension: Provides an easy to to connect ExoPlayer with
* MediaSession extension: Provides an easy way to connect ExoPlayer with
MediaSessionCompat in the Android Support Library.
* RTMP extension: An extension for playing streams over RTMP.
* Build: Made it easier for application developers to depend on a local checkout
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ buildscript {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.novoda:bintray-release:0.5.0'
}
// Workaround for the following test coverage issue. Remove when fixed:
Expand Down
6 changes: 3 additions & 3 deletions constants.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ project.ext {
// However, please note that the core media playback functionality provided
// by the library requires API level 16 or greater.
minSdkVersion = 14
compileSdkVersion = 26
targetSdkVersion = 26
compileSdkVersion = 27
targetSdkVersion = 27
buildToolsVersion = '26.0.2'
testSupportLibraryVersion = '0.5'
supportLibraryVersion = '27.0.0'
Expand All @@ -28,7 +28,7 @@ project.ext {
junitVersion = '4.12'
truthVersion = '0.35'
robolectricVersion = '3.4.2'
releaseVersion = '2.6.0'
releaseVersion = '2.6.1'
modulePrefix = ':'
if (gradle.ext.has('exoplayerModulePrefix')) {
modulePrefix += gradle.ext.exoplayerModulePrefix
Expand Down
2 changes: 2 additions & 0 deletions demos/ima/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,7 @@ android {
dependencies {
compile project(modulePrefix + 'library-core')
compile project(modulePrefix + 'library-ui')
compile project(modulePrefix + 'library-dash')
compile project(modulePrefix + 'library-hls')
compile project(modulePrefix + 'extension-ima')
}
6 changes: 3 additions & 3 deletions demos/ima/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.android.exoplayer2.imademo"
android:versionCode="2600"
android:versionName="2.6.0">
android:versionCode="2601"
android:versionName="2.6.1">

<uses-permission android:name="android.permission.INTERNET"/>
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26"/>
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="27"/>

<application android:label="@string/application_name" android:icon="@mipmap/ic_launcher"
android:largeHeap="true" android:allowBackup="false">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,21 @@

import android.content.Context;
import android.net.Uri;
import android.os.Handler;
import android.support.annotation.Nullable;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.C.ContentType;
import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.ExoPlayerFactory;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.ext.ima.ImaAdsLoader;
import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory;
import com.google.android.exoplayer2.extractor.ExtractorsFactory;
import com.google.android.exoplayer2.source.ExtractorMediaSource;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.MediaSourceEventListener;
import com.google.android.exoplayer2.source.ads.AdsMediaSource;
import com.google.android.exoplayer2.source.dash.DashMediaSource;
import com.google.android.exoplayer2.source.dash.DefaultDashChunkSource;
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.TrackSelection;
Expand All @@ -37,19 +43,27 @@
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util;

/**
* Manages the {@link ExoPlayer}, the IMA plugin and all video playback.
*/
/* package */ final class PlayerManager {
/** Manages the {@link ExoPlayer}, the IMA plugin and all video playback. */
/* package */ final class PlayerManager implements AdsMediaSource.MediaSourceFactory {

private final ImaAdsLoader adsLoader;
private final DataSource.Factory manifestDataSourceFactory;
private final DataSource.Factory mediaDataSourceFactory;

private SimpleExoPlayer player;
private long contentPosition;

public PlayerManager(Context context) {
String adTag = context.getString(R.string.ad_tag_url);
adsLoader = new ImaAdsLoader(context, Uri.parse(adTag));
manifestDataSourceFactory =
new DefaultDataSourceFactory(
context, Util.getUserAgent(context, context.getString(R.string.application_name)));
mediaDataSourceFactory =
new DefaultDataSourceFactory(
context,
Util.getUserAgent(context, context.getString(R.string.application_name)),
new DefaultBandwidthMeter());
}

public void init(Context context, SimpleExoPlayerView simpleExoPlayerView) {
Expand All @@ -69,17 +83,21 @@ public void init(Context context, SimpleExoPlayerView simpleExoPlayerView) {
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context,
Util.getUserAgent(context, context.getString(R.string.application_name)));

// Produces Extractor instances for parsing the content media (i.e. not the ad).
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();

// This is the MediaSource representing the content media (i.e. not the ad).
String contentUrl = context.getString(R.string.content_url);
MediaSource contentMediaSource = new ExtractorMediaSource(
Uri.parse(contentUrl), dataSourceFactory, extractorsFactory, null, null);
MediaSource contentMediaSource =
new ExtractorMediaSource.Factory(dataSourceFactory)
.createMediaSource(Uri.parse(contentUrl));

// Compose the content media source into a new AdsMediaSource with both ads and content.
MediaSource mediaSourceWithAds = new AdsMediaSource(contentMediaSource, dataSourceFactory,
adsLoader, simpleExoPlayerView.getOverlayFrameLayout());
MediaSource mediaSourceWithAds =
new AdsMediaSource(
contentMediaSource,
/* adMediaSourceFactory= */ this,
adsLoader,
simpleExoPlayerView.getOverlayFrameLayout(),
/* eventHandler= */ null,
/* eventListener= */ null);

// Prepare the player with the source.
player.seekTo(contentPosition);
Expand All @@ -103,4 +121,32 @@ public void release() {
adsLoader.release();
}

// AdsMediaSource.MediaSourceFactory implementation.

@Override
public MediaSource createMediaSource(
Uri uri, @Nullable Handler handler, @Nullable MediaSourceEventListener listener) {
@ContentType int type = Util.inferContentType(uri);
switch (type) {
case C.TYPE_DASH:
return new DashMediaSource.Factory(
new DefaultDashChunkSource.Factory(mediaDataSourceFactory),
manifestDataSourceFactory)
.createMediaSource(uri, handler, listener);
case C.TYPE_HLS:
return new HlsMediaSource.Factory(mediaDataSourceFactory)
.createMediaSource(uri, handler, listener);
case C.TYPE_OTHER:
return new ExtractorMediaSource.Factory(mediaDataSourceFactory)
.createMediaSource(uri, handler, listener);
case C.TYPE_SS:
default:
throw new IllegalStateException("Unsupported type: " + type);
}
}

@Override
public int[] getSupportedTypes() {
return new int[] {C.TYPE_DASH, C.TYPE_HLS, C.TYPE_OTHER};
}
}
6 changes: 3 additions & 3 deletions demos/main/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.android.exoplayer2.demo"
android:versionCode="2600"
android:versionName="2.6.0">
android:versionCode="2601"
android:versionName="2.6.1">

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-feature android:name="android.software.leanback" android:required="false"/>
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26"/>
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="27"/>

<application
android:label="@string/application_name"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,43 @@
package com.google.android.exoplayer2.demo;

import android.text.TextUtils;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.drm.UnsupportedDrmException;
import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.util.Util;
import java.util.Locale;
import java.util.UUID;

/**
* Utility methods for demo application.
*/
/*package*/ final class DemoUtil {
/* package */ final class DemoUtil {

/**
* Derives a DRM {@link UUID} from {@code drmScheme}.
*
* @param drmScheme A protection scheme UUID string; or {@code "widevine"}, {@code "playready"} or
* {@code "clearkey"}.
* @return The derived {@link UUID}.
* @throws UnsupportedDrmException If no {@link UUID} could be derived from {@code drmScheme}.
*/
public static UUID getDrmUuid(String drmScheme) throws UnsupportedDrmException {
switch (Util.toLowerInvariant(drmScheme)) {
case "widevine":
return C.WIDEVINE_UUID;
case "playready":
return C.PLAYREADY_UUID;
case "clearkey":
return C.CLEARKEY_UUID;
default:
try {
return UUID.fromString(drmScheme);
} catch (RuntimeException e) {
throw new UnsupportedDrmException(UnsupportedDrmException.REASON_UNSUPPORTED_SCHEME);
}
}
}

/**
* Builds a track name for display.
Expand Down
Loading