コード例 #1
0
 private void reset()
 {
     mNV21         = new NV21Convertor();
     mVideo        = new byte[NB_ENCODED][];
     mDecodedVideo = new byte[NB_DECODED][];
     mErrorLog     = "";
     mPPS          = null;
     mSPS          = null;
 }
コード例 #2
0
    /**
     * 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