aboutsummaryrefslogtreecommitdiff
path: root/tuner/src/com/android/tv/tuner/exoplayer2/buffer/SampleQueue.java
diff options
context:
space:
mode:
Diffstat (limited to 'tuner/src/com/android/tv/tuner/exoplayer2/buffer/SampleQueue.java')
-rw-r--r--tuner/src/com/android/tv/tuner/exoplayer2/buffer/SampleQueue.java41
1 files changed, 22 insertions, 19 deletions
diff --git a/tuner/src/com/android/tv/tuner/exoplayer2/buffer/SampleQueue.java b/tuner/src/com/android/tv/tuner/exoplayer2/buffer/SampleQueue.java
index 30c0f532..e001849a 100644
--- a/tuner/src/com/android/tv/tuner/exoplayer2/buffer/SampleQueue.java
+++ b/tuner/src/com/android/tv/tuner/exoplayer2/buffer/SampleQueue.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,44 +16,47 @@
package com.android.tv.tuner.exoplayer2.buffer;
-import com.google.android.exoplayer.SampleHolder;
-import com.google.android.exoplayer.SampleSource;
+import com.google.android.exoplayer2.C;
+import com.google.android.exoplayer2.decoder.DecoderInputBuffer;
+
import java.util.LinkedList;
/** A sample queue which reads from the buffer and passes to player pipeline. */
public class SampleQueue {
- private final LinkedList<SampleHolder> mQueue = new LinkedList<>();
- private final SamplePool mSamplePool;
+ private final LinkedList<DecoderInputBuffer> mQueue = new LinkedList<>();
+ private final InputBufferPool mInputBufferPool;
private Long mLastQueuedPositionUs = null;
- public SampleQueue(SamplePool samplePool) {
- mSamplePool = samplePool;
+ public SampleQueue(InputBufferPool inputBufferPool) {
+ mInputBufferPool = inputBufferPool;
}
- public void queueSample(SampleHolder sample) {
+ public void queueSample(DecoderInputBuffer sample) {
mQueue.offer(sample);
mLastQueuedPositionUs = sample.timeUs;
}
- public int dequeueSample(SampleHolder sample) {
- SampleHolder sampleFromQueue = mQueue.poll();
+ public int dequeueSample(DecoderInputBuffer sample) {
+ DecoderInputBuffer sampleFromQueue = mQueue.poll();
if (sampleFromQueue == null) {
- return SampleSource.NOTHING_READ;
+ return C.RESULT_NOTHING_READ;
}
- sample.ensureSpaceForWrite(sampleFromQueue.size);
- sample.size = sampleFromQueue.size;
- sample.flags = sampleFromQueue.flags;
+ int size = sampleFromQueue.data.position();
+ sample.ensureSpaceForWrite(size);
+ sample.setFlags((sampleFromQueue.isKeyFrame() ? C.BUFFER_FLAG_KEY_FRAME : 0)
+ | (sampleFromQueue.isDecodeOnly() ? C.BUFFER_FLAG_DECODE_ONLY : 0)
+ | (sampleFromQueue.isEncrypted() ? C.BUFFER_FLAG_ENCRYPTED : 0));
sample.timeUs = sampleFromQueue.timeUs;
- sample.clearData();
- sampleFromQueue.data.position(0).limit(sample.size);
+ sample.data.clear();
+ sampleFromQueue.flip();
sample.data.put(sampleFromQueue.data);
- mSamplePool.releaseSample(sampleFromQueue);
- return SampleSource.SAMPLE_READ;
+ mInputBufferPool.releaseSample(sampleFromQueue);
+ return C.RESULT_BUFFER_READ;
}
public void clear() {
while (!mQueue.isEmpty()) {
- mSamplePool.releaseSample(mQueue.poll());
+ mInputBufferPool.releaseSample(mQueue.poll());
}
mLastQueuedPositionUs = null;
}