public abstract class

SubtitleOutputBuffer

extends DecoderOutputBuffer

implements Subtitle

 java.lang.Object

androidx.media3.decoder.Buffer

androidx.media3.decoder.DecoderOutputBuffer

↳androidx.media3.extractor.text.SubtitleOutputBuffer

Gradle dependencies

compile group: 'androidx.media3', name: 'media3-extractor', version: '1.5.0-alpha01'

  • groupId: androidx.media3
  • artifactId: media3-extractor
  • version: 1.5.0-alpha01

Artifact androidx.media3:media3-extractor:1.5.0-alpha01 it located at Google repository (https://maven.google.com/)

Overview

Base class for SubtitleDecoder output buffers.

Summary

Fields
from DecoderOutputBuffershouldBeSkipped, skippedOutputBufferCount, timeUs
Constructors
publicSubtitleOutputBuffer()

Methods
public voidclear()

Clears the buffer.

public java.util.List<Cue>getCues(long timeUs)

public longgetEventTime(int index)

public intgetEventTimeCount()

public intgetNextEventTimeIndex(long timeUs)

public voidsetContent(long timeUs, Subtitle subtitle, long subsampleOffsetUs)

Sets the content of the output buffer, consisting of a Subtitle and associated metadata.

from DecoderOutputBufferrelease
from BufferaddFlag, clearFlag, getFlag, hasSupplementalData, isEndOfStream, isFirstSample, isKeyFrame, isLastSample, notDependedOn, setFlags
from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructors

public SubtitleOutputBuffer()

Methods

public void setContent(long timeUs, Subtitle subtitle, long subsampleOffsetUs)

Sets the content of the output buffer, consisting of a Subtitle and associated metadata.

Parameters:

timeUs: The time of the start of the subtitle in microseconds.
subtitle: The subtitle.
subsampleOffsetUs: An offset that must be added to the subtitle's event times, or Format.OFFSET_SAMPLE_RELATIVE if timeUs should be added.

public int getEventTimeCount()

public long getEventTime(int index)

public int getNextEventTimeIndex(long timeUs)

public java.util.List<Cue> getCues(long timeUs)

public void clear()

Clears the buffer.

Source

/*
 * Copyright (C) 2016 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.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package androidx.media3.extractor.text;

import androidx.annotation.Nullable;
import androidx.media3.common.Format;
import androidx.media3.common.text.Cue;
import androidx.media3.common.util.Assertions;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.decoder.DecoderOutputBuffer;
import java.util.List;

/** Base class for {@link SubtitleDecoder} output buffers. */
@UnstableApi
public abstract class SubtitleOutputBuffer extends DecoderOutputBuffer implements Subtitle {

  @Nullable private Subtitle subtitle;
  private long subsampleOffsetUs;

  /**
   * Sets the content of the output buffer, consisting of a {@link Subtitle} and associated
   * metadata.
   *
   * @param timeUs The time of the start of the subtitle in microseconds.
   * @param subtitle The subtitle.
   * @param subsampleOffsetUs An offset that must be added to the subtitle's event times, or {@link
   *     Format#OFFSET_SAMPLE_RELATIVE} if {@code timeUs} should be added.
   */
  public void setContent(long timeUs, Subtitle subtitle, long subsampleOffsetUs) {
    this.timeUs = timeUs;
    this.subtitle = subtitle;
    this.subsampleOffsetUs =
        subsampleOffsetUs == Format.OFFSET_SAMPLE_RELATIVE ? this.timeUs : subsampleOffsetUs;
  }

  @Override
  public int getEventTimeCount() {
    return Assertions.checkNotNull(subtitle).getEventTimeCount();
  }

  @Override
  public long getEventTime(int index) {
    return Assertions.checkNotNull(subtitle).getEventTime(index) + subsampleOffsetUs;
  }

  @Override
  public int getNextEventTimeIndex(long timeUs) {
    return Assertions.checkNotNull(subtitle).getNextEventTimeIndex(timeUs - subsampleOffsetUs);
  }

  @Override
  public List<Cue> getCues(long timeUs) {
    return Assertions.checkNotNull(subtitle).getCues(timeUs - subsampleOffsetUs);
  }

  @Override
  public void clear() {
    super.clear();
    subtitle = null;
  }
}