Commit 1151104e by tonihei Committed by Oliver Woodman

Use TrackGroup instead of TrackSelection in FakeAdaptiveDataSet.

This was a bug as the data set should contain sample data for all available
tracks. Also added a unit test.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=163806579
parent 08faafb4
...@@ -17,11 +17,11 @@ package com.google.android.exoplayer2.testutil; ...@@ -17,11 +17,11 @@ package com.google.android.exoplayer2.testutil;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.trackselection.TrackSelection; import com.google.android.exoplayer2.source.TrackGroup;
/** /**
* Fake data set emulating the data of an adaptive media source. * Fake data set emulating the data of an adaptive media source.
* It provides chunk data for all {@link Format}s in the given {@link TrackSelection}. * It provides chunk data for all {@link Format}s in the given {@link TrackGroup}.
*/ */
public final class FakeAdaptiveDataSet extends FakeDataSet { public final class FakeAdaptiveDataSet extends FakeDataSet {
...@@ -36,8 +36,8 @@ public final class FakeAdaptiveDataSet extends FakeDataSet { ...@@ -36,8 +36,8 @@ public final class FakeAdaptiveDataSet extends FakeDataSet {
this.chunkDurationUs = chunkDurationUs; this.chunkDurationUs = chunkDurationUs;
} }
public FakeAdaptiveDataSet createDataSet(TrackSelection trackSelection, long mediaDurationUs) { public FakeAdaptiveDataSet createDataSet(TrackGroup trackGroup, long mediaDurationUs) {
return new FakeAdaptiveDataSet(trackSelection, mediaDurationUs, chunkDurationUs); return new FakeAdaptiveDataSet(trackGroup, mediaDurationUs, chunkDurationUs);
} }
} }
...@@ -46,15 +46,14 @@ public final class FakeAdaptiveDataSet extends FakeDataSet { ...@@ -46,15 +46,14 @@ public final class FakeAdaptiveDataSet extends FakeDataSet {
private final long chunkDurationUs; private final long chunkDurationUs;
private final long lastChunkDurationUs; private final long lastChunkDurationUs;
public FakeAdaptiveDataSet(TrackSelection trackSelection, long mediaDurationUs, public FakeAdaptiveDataSet(TrackGroup trackGroup, long mediaDurationUs, long chunkDurationUs) {
long chunkDurationUs) {
this.chunkDurationUs = chunkDurationUs; this.chunkDurationUs = chunkDurationUs;
int selectionCount = trackSelection.length(); int trackCount = trackGroup.length;
long lastChunkDurationUs = mediaDurationUs % chunkDurationUs; long lastChunkDurationUs = mediaDurationUs % chunkDurationUs;
int fullChunks = (int) (mediaDurationUs / chunkDurationUs); int fullChunks = (int) (mediaDurationUs / chunkDurationUs);
for (int i = 0; i < selectionCount; i++) { for (int i = 0; i < trackCount; i++) {
String uri = getUri(i); String uri = getUri(i);
Format format = trackSelection.getFormat(i); Format format = trackGroup.getFormat(i);
int chunkLength = (int) (format.bitrate * chunkDurationUs / (8 * C.MICROS_PER_SECOND)); int chunkLength = (int) (format.bitrate * chunkDurationUs / (8 * C.MICROS_PER_SECOND));
FakeData newData = this.newData(uri); FakeData newData = this.newData(uri);
for (int j = 0; j < fullChunks; j++) { for (int j = 0; j < fullChunks; j++) {
...@@ -74,8 +73,8 @@ public final class FakeAdaptiveDataSet extends FakeDataSet { ...@@ -74,8 +73,8 @@ public final class FakeAdaptiveDataSet extends FakeDataSet {
return chunkCount; return chunkCount;
} }
public String getUri(int trackSelectionIndex) { public String getUri(int trackIndex) {
return "fake://adaptive.media/" + Integer.toString(trackSelectionIndex); return "fake://adaptive.media/" + trackIndex;
} }
public long getChunkDuration(int chunkIndex) { public long getChunkDuration(int chunkIndex) {
......
...@@ -50,7 +50,8 @@ public final class FakeChunkSource implements ChunkSource { ...@@ -50,7 +50,8 @@ public final class FakeChunkSource implements ChunkSource {
} }
public FakeChunkSource createChunkSource(TrackSelection trackSelection, long durationUs) { public FakeChunkSource createChunkSource(TrackSelection trackSelection, long durationUs) {
FakeAdaptiveDataSet dataSet = dataSetFactory.createDataSet(trackSelection, durationUs); FakeAdaptiveDataSet dataSet =
dataSetFactory.createDataSet(trackSelection.getTrackGroup(), durationUs);
dataSourceFactory.setFakeDataSet(dataSet); dataSourceFactory.setFakeDataSet(dataSet);
DataSource dataSource = dataSourceFactory.createDataSource(); DataSource dataSource = dataSourceFactory.createDataSource();
return new FakeChunkSource(trackSelection, dataSource, dataSet); return new FakeChunkSource(trackSelection, dataSource, dataSet);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment