Correctly recycle OutputBuffer

pull/530/head
Mattia Iavarone 6 years ago
parent 11088d7864
commit a553955a84
  1. 4
      cameraview/src/main/java/com/otaliastudios/cameraview/video/encoding/VideoMediaEncoder.java

@ -113,17 +113,17 @@ abstract class VideoMediaEncoder<C extends VideoConfig> extends MediaEncoder {
int flag = MediaCodec.BUFFER_FLAG_SYNC_FRAME; int flag = MediaCodec.BUFFER_FLAG_SYNC_FRAME;
boolean hasFlag = (buffer.info.flags & flag) == flag; boolean hasFlag = (buffer.info.flags & flag) == flag;
if (hasFlag) { if (hasFlag) {
LOG.w("onWriteOutput:", "sync frame found!"); LOG.w("onWriteOutput:", "SYNC FRAME FOUND!");
mSyncFrameFound = true; mSyncFrameFound = true;
super.onWriteOutput(pool, buffer); super.onWriteOutput(pool, buffer);
} else { } else {
// drop this.
LOG.w("onWriteOutput:", "DROPPING FRAME and requesting a sync frame soon."); LOG.w("onWriteOutput:", "DROPPING FRAME and requesting a sync frame soon.");
if (Build.VERSION.SDK_INT >= 19) { if (Build.VERSION.SDK_INT >= 19) {
Bundle params = new Bundle(); Bundle params = new Bundle();
params.putInt(MediaCodec.PARAMETER_KEY_REQUEST_SYNC_FRAME, 0); params.putInt(MediaCodec.PARAMETER_KEY_REQUEST_SYNC_FRAME, 0);
mMediaCodec.setParameters(params); mMediaCodec.setParameters(params);
} }
pool.recycle(buffer);
} }
} else { } else {
super.onWriteOutput(pool, buffer); super.onWriteOutput(pool, buffer);

Loading…
Cancel
Save