Search in sources :

Example 1 with SubtitleOutputBuffer

use of com.google.android.exoplayer2.text.SubtitleOutputBuffer in project ExoPlayer by google.

the class CeaDecoder method dequeueOutputBuffer.

@Override
public SubtitleOutputBuffer dequeueOutputBuffer() throws SubtitleDecoderException {
    if (availableOutputBuffers.isEmpty()) {
        return null;
    }
    // be deferred until they would be applicable
    while (!queuedInputBuffers.isEmpty() && queuedInputBuffers.first().timeUs <= playbackPositionUs) {
        SubtitleInputBuffer inputBuffer = queuedInputBuffers.pollFirst();
        // return immediately with an output buffer propagating that
        if (inputBuffer.isEndOfStream()) {
            SubtitleOutputBuffer outputBuffer = availableOutputBuffers.pollFirst();
            outputBuffer.addFlag(C.BUFFER_FLAG_END_OF_STREAM);
            releaseInputBuffer(inputBuffer);
            return outputBuffer;
        }
        decode(inputBuffer);
        // check if we have any caption updates to report
        if (isNewSubtitleDataAvailable()) {
            // Even if the subtitle is decode-only; we need to generate it to consume the data so it
            // isn't accidentally prepended to the next subtitle
            Subtitle subtitle = createSubtitle();
            if (!inputBuffer.isDecodeOnly()) {
                SubtitleOutputBuffer outputBuffer = availableOutputBuffers.pollFirst();
                outputBuffer.setContent(inputBuffer.timeUs, subtitle, Format.OFFSET_SAMPLE_RELATIVE);
                releaseInputBuffer(inputBuffer);
                return outputBuffer;
            }
        }
        releaseInputBuffer(inputBuffer);
    }
    return null;
}
Also used : Subtitle(com.google.android.exoplayer2.text.Subtitle) SubtitleInputBuffer(com.google.android.exoplayer2.text.SubtitleInputBuffer) SubtitleOutputBuffer(com.google.android.exoplayer2.text.SubtitleOutputBuffer)

Aggregations

Subtitle (com.google.android.exoplayer2.text.Subtitle)1 SubtitleInputBuffer (com.google.android.exoplayer2.text.SubtitleInputBuffer)1 SubtitleOutputBuffer (com.google.android.exoplayer2.text.SubtitleOutputBuffer)1