public abstract class BaseTrackTranscoder extends java.lang.Object implements TrackTranscoder
TrackTranscoder that reads
from MediaExtractor and does feeding and draining job.| Modifier | Constructor and Description |
|---|---|
protected |
BaseTrackTranscoder(DataSource dataSource,
DataSink dataSink,
TrackType trackType) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
isFinished() |
protected void |
onCodecsStarted(android.media.MediaFormat inputFormat,
android.media.MediaFormat outputFormat,
android.media.MediaCodec decoder,
android.media.MediaCodec encoder)
Called when both codecs have been started with the given formats.
|
protected void |
onConfigureDecoder(android.media.MediaFormat format,
android.media.MediaCodec decoder)
Wraps the configure operation on the decoder.
|
protected void |
onConfigureEncoder(android.media.MediaFormat format,
android.media.MediaCodec encoder)
Wraps the configure operation on the encoder.
|
protected void |
onDecoderOutputFormatChanged(android.media.MediaCodec decoder,
android.media.MediaFormat format)
Called when the decoder has defined its actual output format.
|
protected abstract void |
onDrainDecoder(android.media.MediaCodec decoder,
int bufferIndex,
java.nio.ByteBuffer bufferData,
long presentationTimeUs,
boolean endOfStream)
Called to drain the decoder.
|
protected void |
onEncoderOutputFormatChanged(android.media.MediaCodec encoder,
android.media.MediaFormat format)
Called when the encoder has defined its actual output format.
|
protected abstract boolean |
onFeedEncoder(android.media.MediaCodec encoder,
MediaCodecBuffers encoderBuffers,
long timeoutUs)
Called to feed the encoder with processed data.
|
protected void |
onStartDecoder(android.media.MediaFormat format,
android.media.MediaCodec decoder)
Wraps the start operation on the decoder.
|
protected void |
onStartEncoder(android.media.MediaFormat format,
android.media.MediaCodec encoder)
Wraps the start operation on the encoder.
|
void |
release() |
void |
setUp(android.media.MediaFormat desiredOutputFormat) |
boolean |
transcode(boolean forceInputEos)
Perform transcoding if output is available in any step of it.
|
protected BaseTrackTranscoder(@NonNull
DataSource dataSource,
@NonNull
DataSink dataSink,
@NonNull
TrackType trackType)
public final void setUp(@NonNull
android.media.MediaFormat desiredOutputFormat)
setUp in interface TrackTranscoderprotected void onConfigureEncoder(@NonNull
android.media.MediaFormat format,
@NonNull
android.media.MediaCodec encoder)
format - output formatencoder - encoder@CallSuper
protected void onStartEncoder(@NonNull
android.media.MediaFormat format,
@NonNull
android.media.MediaCodec encoder)
format - output formatencoder - encoderprotected void onConfigureDecoder(@NonNull
android.media.MediaFormat format,
@NonNull
android.media.MediaCodec decoder)
format - input formatdecoder - decoder@CallSuper
protected void onStartDecoder(@NonNull
android.media.MediaFormat format,
@NonNull
android.media.MediaCodec decoder)
format - input formatdecoder - decoderprotected void onCodecsStarted(@NonNull
android.media.MediaFormat inputFormat,
@NonNull
android.media.MediaFormat outputFormat,
@NonNull
android.media.MediaCodec decoder,
@NonNull
android.media.MediaCodec encoder)
inputFormat - input formatoutputFormat - output formatdecoder - decoderencoder - encoderpublic final boolean isFinished()
isFinished in interface TrackTranscoderpublic void release()
release in interface TrackTranscoderpublic final boolean transcode(boolean forceInputEos)
TrackTranscodertranscode in interface TrackTranscoder@CallSuper
protected void onDecoderOutputFormatChanged(@NonNull
android.media.MediaCodec decoder,
@NonNull
android.media.MediaFormat format)
format - format@CallSuper
protected void onEncoderOutputFormatChanged(@NonNull
android.media.MediaCodec encoder,
@NonNull
android.media.MediaFormat format)
format - formatprotected abstract void onDrainDecoder(@NonNull
android.media.MediaCodec decoder,
int bufferIndex,
@NonNull
java.nio.ByteBuffer bufferData,
long presentationTimeUs,
boolean endOfStream)
MediaCodec.releaseOutputBuffer(int, boolean)
with the given bufferIndex at some point.decoder - the decoderbufferIndex - the buffer index to be releasedbufferData - the buffer datapresentationTimeUs - frame timestampendOfStream - whether we are in end of streamprotected abstract boolean onFeedEncoder(@NonNull
android.media.MediaCodec encoder,
@NonNull
MediaCodecBuffers encoderBuffers,
long timeoutUs)
encoder - the encodertimeoutUs - a timeout for this op