Always include extension renderers in SimplePlayer.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=123868547
This commit is contained in:
olly 2016-01-07 08:33:57 +00:00 committed by Oliver Woodman
parent 4888592c76
commit 00aef6ddb7
4 changed files with 27 additions and 24 deletions

View File

@ -87,7 +87,7 @@ public class PlayerActivity extends Activity implements SurfaceHolder.Callback,
public static final String DRM_SCHEME_UUID_EXTRA = "drm_scheme_uuid";
public static final String DRM_CONTENT_ID_EXTRA = "drm_content_id";
public static final String DRM_PROVIDER_EXTRA = "drm_provider";
public static final String USE_EXTENSION_DECODERS = "use_extension_decoders";
public static final String PREFER_EXTENSION_DECODERS = "prefer_extension_decoders";
// For use when launching the demo app using adb.
public static final String ACTION_VIEW = "com.google.android.exoplayer.demo.action.VIEW";
@ -246,7 +246,7 @@ public class PlayerActivity extends Activity implements SurfaceHolder.Callback,
private void initializePlayer() {
Intent intent = getIntent();
if (player == null) {
boolean useExtensionDecoders = intent.getBooleanExtra(USE_EXTENSION_DECODERS, false);
boolean preferExtensionDecoders = intent.getBooleanExtra(PREFER_EXTENSION_DECODERS, false);
UUID drmSchemeUuid = (UUID) intent.getSerializableExtra(DRM_SCHEME_UUID_EXTRA);
DrmSessionManager drmSessionManager = null;
if (drmSchemeUuid != null) {
@ -266,7 +266,7 @@ public class PlayerActivity extends Activity implements SurfaceHolder.Callback,
trackSelector.addListener(eventLogger);
trackSelectionHelper = new TrackSelectionHelper(trackSelector);
player = ExoPlayerFactory.newSimpleInstance(this, trackSelector, drmSessionManager,
useExtensionDecoders);
preferExtensionDecoders);
player.addListener(this);
player.addListener(eventLogger);
player.setDebugListener(eventLogger);

View File

@ -97,7 +97,7 @@ public class SampleChooserActivity extends Activity {
.putExtra(PlayerActivity.DRM_SCHEME_UUID_EXTRA, sample.drmSchemeUuid)
.putExtra(PlayerActivity.DRM_CONTENT_ID_EXTRA, sample.drmContentId)
.putExtra(PlayerActivity.DRM_PROVIDER_EXTRA, sample.drmProvider)
.putExtra(PlayerActivity.USE_EXTENSION_DECODERS, sample.useExtensionDecoders);
.putExtra(PlayerActivity.PREFER_EXTENSION_DECODERS, sample.preferExtensionDecoders);
startActivity(intent);
}
@ -171,7 +171,7 @@ public class SampleChooserActivity extends Activity {
UUID drmUuid = null;
String drmContentId = null;
String drmProvider = null;
boolean useExtensionDecoders = false;
boolean preferExtensionDecoders = false;
reader.beginObject();
while (reader.hasNext()) {
@ -191,8 +191,8 @@ public class SampleChooserActivity extends Activity {
drmContentId = drmComponents[1];
drmProvider = drmComponents[2];
break;
case "use_extension_decoders":
useExtensionDecoders = reader.nextBoolean();
case "prefer_extension_decoders":
preferExtensionDecoders = reader.nextBoolean();
break;
}
}
@ -202,7 +202,7 @@ public class SampleChooserActivity extends Activity {
throw new ParserException("Invalid sample (name or uri missing)");
}
return new Sample(sampleName, uri, type, drmUuid, drmContentId, drmProvider,
useExtensionDecoders);
preferExtensionDecoders);
}
private SampleGroup getGroup(String groupName, List<SampleGroup> groups) {
@ -341,17 +341,17 @@ public class SampleChooserActivity extends Activity {
public final UUID drmSchemeUuid;
public final String drmContentId;
public final String drmProvider;
public final boolean useExtensionDecoders;
public final boolean preferExtensionDecoders;
public Sample(String name, String uri, int type, UUID drmSchemeUuid, String drmContentId,
String drmProvider, boolean useExtensionDecoders) {
String drmProvider, boolean preferExtensionDecoders) {
this.name = name;
this.uri = uri;
this.type = type;
this.drmSchemeUuid = drmSchemeUuid;
this.drmContentId = drmContentId;
this.drmProvider = drmProvider;
this.useExtensionDecoders = useExtensionDecoders;
this.preferExtensionDecoders = preferExtensionDecoders;
}
}

View File

@ -61,13 +61,13 @@ public final class ExoPlayerFactory {
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
* will not be used for DRM protected playbacks.
* @param useExtensionDecoders True to include {@link TrackRenderer} instances defined in
* available extensions. Note that the required extensions must be included in the application
* build for setting this flag to have any effect.
* @param preferExtensionDecoders True to prefer {@link TrackRenderer} instances defined in
* available extensions over those defined in the core library. Note that extensions must be
* included in the application build for setting this flag to have any effect.
*/
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
DrmSessionManager drmSessionManager, boolean useExtensionDecoders) {
return newSimpleInstance(context, trackSelector, drmSessionManager, useExtensionDecoders,
DrmSessionManager drmSessionManager, boolean preferExtensionDecoders) {
return newSimpleInstance(context, trackSelector, drmSessionManager, preferExtensionDecoders,
DEFAULT_MIN_BUFFER_MS, DEFAULT_MIN_REBUFFER_MS);
}
@ -80,9 +80,9 @@ public final class ExoPlayerFactory {
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
* will not be used for DRM protected playbacks.
* @param useExtensionDecoders True to include {@link TrackRenderer} instances defined in
* available extensions. Note that the required extensions must be included in the application
* build for setting this flag to have any effect.
* @param preferExtensionDecoders True to prefer {@link TrackRenderer} instances defined in
* available extensions over those defined in the core library. Note that extensions must be
* included in the application build for setting this flag to have any effect.
* @param minBufferMs A minimum duration of data that must be buffered for playback to start
* or resume following a user action such as a seek.
* @param minRebufferMs A minimum duration of data that must be buffered for playback to resume
@ -90,9 +90,9 @@ public final class ExoPlayerFactory {
* not due to a user action such as starting playback or seeking).
*/
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
DrmSessionManager drmSessionManager, boolean useExtensionDecoders, int minBufferMs,
DrmSessionManager drmSessionManager, boolean preferExtensionDecoders, int minBufferMs,
int minRebufferMs) {
return new SimpleExoPlayer(context, trackSelector, drmSessionManager, useExtensionDecoders,
return new SimpleExoPlayer(context, trackSelector, drmSessionManager, preferExtensionDecoders,
minBufferMs, minRebufferMs);
}

View File

@ -104,7 +104,7 @@ public final class SimpleExoPlayer implements ExoPlayer {
private CodecCounters audioCodecCounters;
/* package */ SimpleExoPlayer(Context context, TrackSelector trackSelector,
DrmSessionManager drmSessionManager, boolean useExtensionDecoders, int minBufferMs,
DrmSessionManager drmSessionManager, boolean preferExtensionDecoders, int minBufferMs,
int minRebufferMs) {
mainHandler = new Handler();
bandwidthMeter = new DefaultBandwidthMeter();
@ -112,10 +112,13 @@ public final class SimpleExoPlayer implements ExoPlayer {
// Build the renderers.
ArrayList<TrackRenderer> renderersList = new ArrayList<>();
if (useExtensionDecoders) {
if (preferExtensionDecoders) {
buildExtensionRenderers(renderersList);
buildRenderers(context, drmSessionManager, renderersList);
} else {
buildRenderers(context, drmSessionManager, renderersList);
buildExtensionRenderers(renderersList);
}
buildRenderers(context, drmSessionManager, renderersList);
renderers = renderersList.toArray(new TrackRenderer[renderersList.size()]);
// Obtain counts of video and audio renderers.