Here are the examples of the java api class com.google.android.exoplayer.chunk.ChunkOperationHolder taken from open source projects.
1. DashChunkSourceTest#testSegmentIndexInitializationOnVod()
Project: ExoPlayer
File: DashChunkSourceTest.java
File: DashChunkSourceTest.java
public void testSegmentIndexInitializationOnVod() { DashChunkSource chunkSource = new DashChunkSource(buildVodMpd(), DefaultDashTrackSelector.newVideoInstance(null, false, false), mock(DataSource.class), null); chunkSource.prepare(); chunkSource.enable(0); List<MediaChunk> queue = new ArrayList<>(); ChunkOperationHolder out = new ChunkOperationHolder(); // request first chunk; should get back initialization chunk chunkSource.getChunkOperation(queue, 0, out); assertNotNull(out.chunk); assertNotNull(((InitializationChunk) out.chunk).dataSpec); }
2. DashChunkSourceTest#checkSegmentRequestSequenceOnMultiPeriodLive()
Project: ExoPlayer
File: DashChunkSourceTest.java
File: DashChunkSourceTest.java
private static void checkSegmentRequestSequenceOnMultiPeriodLive(DashChunkSource chunkSource) { List<MediaChunk> queue = new ArrayList<>(); ChunkOperationHolder out = new ChunkOperationHolder(); long seekPositionMs = 0; long availableRangeStartMs = 0; long availableRangeEndMs = MULTI_PERIOD_LIVE_DURATION_MS; long chunkStartTimeMs = 0; long chunkEndTimeMs = 1000; // request first chunk checkLiveEdgeConsistency(chunkSource, queue, out, seekPositionMs, availableRangeStartMs, availableRangeEndMs, chunkStartTimeMs, chunkEndTimeMs); queue.add((MediaChunk) out.chunk); // request second chunk chunkStartTimeMs += 1000; chunkEndTimeMs += 1000; out.chunk = null; checkLiveEdgeConsistency(chunkSource, queue, out, seekPositionMs, availableRangeStartMs, availableRangeEndMs, chunkStartTimeMs, chunkEndTimeMs); queue.add((MediaChunk) out.chunk); // request third chunk chunkStartTimeMs += 1000; chunkEndTimeMs += 1000; out.chunk = null; checkLiveEdgeConsistency(chunkSource, queue, out, seekPositionMs, availableRangeStartMs, availableRangeEndMs, chunkStartTimeMs, chunkEndTimeMs); queue.add((MediaChunk) out.chunk); // request fourth chunk chunkStartTimeMs += 1000; chunkEndTimeMs += 1000; out.chunk = null; checkLiveEdgeConsistency(chunkSource, queue, out, seekPositionMs, availableRangeStartMs, availableRangeEndMs, chunkStartTimeMs, chunkEndTimeMs); queue.add((MediaChunk) out.chunk); // request fifth chunk chunkStartTimeMs += 1000; chunkEndTimeMs += 1000; out.chunk = null; checkLiveEdgeConsistency(chunkSource, queue, out, seekPositionMs, availableRangeStartMs, availableRangeEndMs, chunkStartTimeMs, chunkEndTimeMs); queue.add((MediaChunk) out.chunk); // request sixth chunk; this is the first chunk in the 2nd period chunkStartTimeMs += 1000; chunkEndTimeMs += 1000; out.chunk = null; checkLiveEdgeConsistency(chunkSource, queue, out, seekPositionMs, availableRangeStartMs, availableRangeEndMs, chunkStartTimeMs, chunkEndTimeMs); queue.add((MediaChunk) out.chunk); // request seventh chunk; chunkStartTimeMs += 1000; chunkEndTimeMs += 1000; out.chunk = null; checkLiveEdgeConsistency(chunkSource, queue, out, seekPositionMs, availableRangeStartMs, availableRangeEndMs, chunkStartTimeMs, chunkEndTimeMs); queue.add((MediaChunk) out.chunk); // request eigth chunk chunkStartTimeMs += 1000; chunkEndTimeMs += 1000; out.chunk = null; checkLiveEdgeConsistency(chunkSource, queue, out, seekPositionMs, availableRangeStartMs, availableRangeEndMs, chunkStartTimeMs, chunkEndTimeMs); queue.add((MediaChunk) out.chunk); // request ninth chunk chunkStartTimeMs += 1000; chunkEndTimeMs += 1000; out.chunk = null; checkLiveEdgeConsistency(chunkSource, queue, out, seekPositionMs, availableRangeStartMs, availableRangeEndMs, chunkStartTimeMs, chunkEndTimeMs); queue.add((MediaChunk) out.chunk); // request tenth chunk chunkStartTimeMs += 1000; chunkEndTimeMs += 1000; out.chunk = null; checkLiveEdgeConsistency(chunkSource, queue, out, seekPositionMs, availableRangeStartMs, availableRangeEndMs, chunkStartTimeMs, chunkEndTimeMs); queue.add((MediaChunk) out.chunk); // request "eleventh" chunk; this chunk isn't available yet, so we should get null out.chunk = null; chunkSource.getChunkOperation(queue, seekPositionMs * 1000, out); assertNull(out.chunk); }
3. DashChunkSourceTest#checkLiveEdgeConsistency()
Project: ExoPlayer
File: DashChunkSourceTest.java
File: DashChunkSourceTest.java
private static void checkLiveEdgeConsistency(MediaPresentationDescription mpd, long liveEdgeLatencyMs, long seekPositionMs, long availableRangeStartMs, long availableRangeEndMs, long chunkStartTimeMs, long chunkEndTimeMs) { DashChunkSource chunkSource = buildDashChunkSource(mpd, true, liveEdgeLatencyMs); List<MediaChunk> queue = new ArrayList<>(); ChunkOperationHolder out = new ChunkOperationHolder(); checkLiveEdgeConsistency(chunkSource, queue, out, seekPositionMs, availableRangeStartMs, availableRangeEndMs, chunkStartTimeMs, chunkEndTimeMs); }