@Override protected SimpleOutputBuffer createOutputBuffer() { return new SimpleOutputBuffer(this); }
ByteBuffer outputData = outputBuffer.init(inputBuffer.timeUs, outputBufferSize); int result = ffmpegDecode(nativeContext, inputData, inputSize, outputData, outputBufferSize); if (result == DECODER_ERROR_INVALID_DATA) { outputBuffer.setFlags(C.BUFFER_FLAG_DECODE_ONLY); return null; } else if (result == DECODER_ERROR_OTHER) {
@Override protected AudioDecoderException decode(DecoderInputBuffer inputBuffer, SimpleOutputBuffer outputBuffer, boolean reset) { if (inputBuffer.isEndOfStream()) { outputBuffer.setFlags(C.BUFFER_FLAG_END_OF_STREAM); } return null; }
if (outputBuffer.isEndOfStream()) { if (decoderReinitializationState == REINITIALIZATION_STATE_WAIT_END_OF_STREAM) { outputBuffer.release(); outputBuffer = null; processEndOfStream(); outputBuffer.release(); outputBuffer = null; return true;
@Override public FlacDecoderException decode(DecoderInputBuffer inputBuffer, SimpleOutputBuffer outputBuffer, boolean reset) { if (reset) { decoderJni.flush(); } decoderJni.setData(inputBuffer.data); ByteBuffer outputData = outputBuffer.init(inputBuffer.timeUs, maxOutputBufferSize); int result; try { result = decoderJni.decodeSample(outputData); } catch (IOException | InterruptedException e) { // Never happens. throw new IllegalStateException(e); } if (result < 0) { return new FlacDecoderException("Frame decoding failed"); } outputData.position(0); outputData.limit(result); return null; }
private void flushDecoder() throws ExoPlaybackException { waitingForKeys = false; if (decoderReinitializationState != REINITIALIZATION_STATE_NONE) { releaseDecoder(); maybeInitDecoder(); } else { inputBuffer = null; if (outputBuffer != null) { outputBuffer.release(); outputBuffer = null; } decoder.flush(); decoderReceivedBuffers = false; } }
if (result <= skipBytes) { skipSamples -= result / bytesPerSample; outputBuffer.addFlag(C.BUFFER_FLAG_DECODE_ONLY); outputData.position(result); } else {
@Override protected SimpleOutputBuffer createOutputBuffer() { return new SimpleOutputBuffer(this); }
@Override protected SimpleOutputBuffer createOutputBuffer() { return new SimpleOutputBuffer(this); }
@Override public SimpleOutputBuffer createOutputBuffer() { return new SimpleOutputBuffer(this); }