@Override public void prepare(EncodingConfig config) { super.prepare(config); getConfig().setMuxerState(EncodingConfig.MUXER_STATE.PREPARING); mReady = false; videoConfig = null; audioConfig = null; mH264Keyframe = null; mH264MetaSize = -1; mStarted = false; mEncoderReleased = false; mFFmpeg.init(getConfig().getAVOptions()); if (formatRequiresADTS()) mCachedAudioPacket = new byte[1024]; if (formatRequiresBuffering()) { mMuxerInputQueue = new ArrayList<ArrayDeque<ByteBuffer>>(); startMuxingThread(); } else { getConfig().setMuxerState(EncodingConfig.MUXER_STATE.READY); mReady = true; } }