private void reset() { mNV21 = new NV21Convertor(); mVideo = new byte[NB_ENCODED][]; mDecodedVideo = new byte[NB_DECODED][]; mErrorLog = ""; mPPS = null; mSPS = null; }
/** * Video encoding is done by a MediaCodec. */ protected void encodeWithMediaCodecMethod1() { Log.Debug(TAG,"Video encoded using the MediaCodec API with a buffer"); // Updates the parameters of the camera if needed createCamera(); updateCamera(); // Estimates the frame rate of the camera measureFramerate(); // Starts the preview if needed if (!mPreviewStarted) { try { mCamera.startPreview(); mPreviewStarted = true; } catch (RuntimeException e) { destroyCamera(); throw e; } } EncoderDebugger debugger = EncoderDebugger.debug(mSettings, mQuality.resX, mQuality.resY); const NV21Convertor convertor = debugger.getNV21Convertor(); mMediaCodec = MediaCodec.CreateByCodecName(debugger.getEncoderName()); MediaFormat mediaFormat = MediaFormat.CreateVideoFormat("video/avc", mQuality.resX, mQuality.resY); mediaFormat.SetInteger(MediaFormat.KeyBitRate, mQuality.bitrate); mediaFormat.SetInteger(MediaFormat.KeyFrameRate, mQuality.framerate); mediaFormat.SetInteger(MediaFormat.KeyColorFormat,debugger.getEncoderColorFormat()); mediaFormat.SetInteger(MediaFormat.KeyIFrameInterval, 1); mMediaCodec.Configure(mediaFormat, null, null, MediaCodecConfigFlags.Encode); mMediaCodec.Start(); Camera.PreviewCallback callback = new Camera.PreviewCallback() Action InnerMethod = () =>{ long now = System.nanoTime()/1000, oldnow = now, i=0; ByteBuffer[] inputBuffers = mMediaCodec.getInputBuffers(); @Override