/** * Processes a change in the output buffers. */ private void processOutputBuffersChanged() { if (Util.SDK_INT < 21) { outputBuffers = codec.getOutputBuffers(); } }
private void getCodecBuffers(MediaCodec codec) { if (Util.SDK_INT < 21) { inputBuffers = codec.getInputBuffers(); outputBuffers = codec.getOutputBuffers(); } }
private void drainEncoder() { ByteBuffer[] outBuffers = mMediaCodec.getOutputBuffers(); while (isStarted) { encodeLock.lock(); if(mMediaCodec != null) { int outBufferIndex = mMediaCodec.dequeueOutputBuffer(mBufferInfo, 12000); if (outBufferIndex >= 0) { ByteBuffer bb = outBuffers[outBufferIndex]; if (mListener != null) { mListener.onVideoEncode(bb, mBufferInfo); } mMediaCodec.releaseOutputBuffer(outBufferIndex, false); } else { try { // wait 10ms Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } encodeLock.unlock(); } else { encodeLock.unlock(); break; } } } }
private void drainEncoder() { ByteBuffer[] outBuffers = mMediaCodec.getOutputBuffers(); while (isStarted) { encodeLock.lock(); if(mMediaCodec != null) { int outBufferIndex = mMediaCodec.dequeueOutputBuffer(mBufferInfo, 12000); if (outBufferIndex >= 0) { ByteBuffer bb = outBuffers[outBufferIndex]; if (mListener != null && !mPause) { mListener.onVideoEncode(bb, mBufferInfo); } mMediaCodec.releaseOutputBuffer(outBufferIndex, false); } else { try { // wait 10ms Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } encodeLock.unlock(); } else { encodeLock.unlock(); break; } } } }
ByteBuffer[] encoderOutputBuffers = mEncoder.getOutputBuffers(); while (true) encoderOutputBuffers = mEncoder.getOutputBuffers(); } else if (encoderStatus == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED)
synchronized void offerEncoder(byte[] input) { if(mMediaCodec == null) { return; } ByteBuffer[] inputBuffers = mMediaCodec.getInputBuffers(); ByteBuffer[] outputBuffers = mMediaCodec.getOutputBuffers(); int inputBufferIndex = mMediaCodec.dequeueInputBuffer(12000); if (inputBufferIndex >= 0) { ByteBuffer inputBuffer = inputBuffers[inputBufferIndex]; inputBuffer.clear(); inputBuffer.put(input); mMediaCodec.queueInputBuffer(inputBufferIndex, 0, input.length, 0, 0); } int outputBufferIndex = mMediaCodec.dequeueOutputBuffer(mBufferInfo, 12000); while (outputBufferIndex >= 0) { ByteBuffer outputBuffer = outputBuffers[outputBufferIndex]; if(mListener != null) { mListener.onAudioEncode(outputBuffer, mBufferInfo); } mMediaCodec.releaseOutputBuffer(outputBufferIndex, false); outputBufferIndex = mMediaCodec.dequeueOutputBuffer(mBufferInfo, 0); } } }
public MediaCodecBufferCompatWrapper(MediaCodec mediaCodec) { mMediaCodec = mediaCodec; if (Build.VERSION.SDK_INT < 21) { mInputBuffers = mediaCodec.getInputBuffers(); mOutputBuffers = mediaCodec.getOutputBuffers(); } else { mInputBuffers = mOutputBuffers = null; } }
return DRAIN_STATE_SHOULD_RETRY_IMMEDIATELY; case MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED: mEncoderOutputBuffers = mEncoder.getOutputBuffers(); return DRAIN_STATE_SHOULD_RETRY_IMMEDIATELY;
mEncoder.start(); mEncoderStarted = true; mEncoderOutputBuffers = mEncoder.getOutputBuffers();
MediaCodecBufferCompatWrapper(MediaCodec mediaCodec) { this.mediaCodec = mediaCodec; if (Build.VERSION.SDK_INT < 21) { inputBuffers = mediaCodec.getInputBuffers(); putputBuffers = mediaCodec.getOutputBuffers(); } else { inputBuffers = putputBuffers = null; } }
private ByteBuffer getOutputBuffer(MediaCodec codec, int index) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { return codec.getOutputBuffer(index); } else { return codec.getOutputBuffers()[index]; } } }
MediaCodecBufferCompatWrapper(MediaCodec mediaCodec) { this.mediaCodec = mediaCodec; if (Build.VERSION.SDK_INT < 21) { inputBuffers = mediaCodec.getInputBuffers(); putputBuffers = mediaCodec.getOutputBuffers(); } else { inputBuffers = putputBuffers = null; } }
public MediaCodecBufferCompatWrapper(MediaCodec mediaCodec) { mMediaCodec = mediaCodec; if (Build.VERSION.SDK_INT < 21) { mInputBuffers = mediaCodec.getInputBuffers(); mOutputBuffers = mediaCodec.getOutputBuffers(); } else { mInputBuffers = mOutputBuffers = null; } }
public MediaCodecInputStream(MediaCodec mediaCodec){ this.mMediaCodec = mediaCodec; this.mBuffers = mMediaCodec.getOutputBuffers(); this.mBufferInfo = new MediaCodec.BufferInfo(); }
public MediaCodecBufferCompatWrapper(MediaCodec mediaCodec) { mMediaCodec = mediaCodec; if (Build.VERSION.SDK_INT < 21) { mInputBuffers = mediaCodec.getInputBuffers(); mOutputBuffers = mediaCodec.getOutputBuffers(); } else { mInputBuffers = mOutputBuffers = null; } }
public MediaCodecBufferCompatWrapper(MediaCodec mediaCodec) { mMediaCodec = mediaCodec; if (Build.VERSION.SDK_INT < 21) { mInputBuffers = mediaCodec.getInputBuffers(); mOutputBuffers = mediaCodec.getOutputBuffers(); } else { mInputBuffers = mOutputBuffers = null; } }
MediaCodecBufferCompatWrapper(MediaCodec mediaCodec) { this.mediaCodec = mediaCodec; if (Build.VERSION.SDK_INT < 21) { inputBuffers = mediaCodec.getInputBuffers(); putputBuffers = mediaCodec.getOutputBuffers(); } else { inputBuffers = putputBuffers = null; } }
private MediaCodecWrapper(MediaCodec codec) { mDecoder = codec; codec.start(); mInputBuffers = codec.getInputBuffers(); mOutputBuffers = codec.getOutputBuffers(); mOutputBufferInfo = new MediaCodec.BufferInfo[mOutputBuffers.length]; mAvailableInputBuffers = new ArrayDeque<>(mOutputBuffers.length); mAvailableOutputBuffers = new ArrayDeque<>(mInputBuffers.length); }
private MediaCodecWrapper(MediaCodec codec) { mDecoder = codec; codec.start(); mInputBuffers = codec.getInputBuffers(); mOutputBuffers = codec.getOutputBuffers(); mOutputBufferInfo = new MediaCodec.BufferInfo[mOutputBuffers.length]; mAvailableInputBuffers = new ArrayDeque<>(mOutputBuffers.length); mAvailableOutputBuffers = new ArrayDeque<>(mInputBuffers.length); }
private MediaCodecWrapper(MediaCodec codec) { mDecoder = codec; codec.start(); mInputBuffers = codec.getInputBuffers(); mOutputBuffers = codec.getOutputBuffers(); mOutputBufferInfo = new MediaCodec.BufferInfo[mOutputBuffers.length]; mAvailableInputBuffers = new ArrayDeque<>(mOutputBuffers.length); mAvailableOutputBuffers = new ArrayDeque<>(mInputBuffers.length); }