Loading core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java +15 −4 Original line number Diff line number Diff line Loading @@ -357,7 +357,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { mCameraRepeatingSurface = mRepeatingRequestImageReader.getSurface(); } mRepeatingRequestImageCallback = new CameraOutputImageCallback( mRepeatingRequestImageReader); mRepeatingRequestImageReader, true /*pruneOlderBuffers*/); mRepeatingRequestImageReader .setOnImageAvailableListener(mRepeatingRequestImageCallback, mHandler); } Loading Loading @@ -398,7 +398,8 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { CameraExtensionCharacteristics.PROCESSING_INPUT_FORMAT); } mBurstCaptureImageCallback = new CameraOutputImageCallback(mBurstCaptureImageReader); mBurstCaptureImageCallback = new CameraOutputImageCallback(mBurstCaptureImageReader, false /*pruneOlderBuffers*/); mBurstCaptureImageReader.setOnImageAvailableListener(mBurstCaptureImageCallback, mHandler); mCameraBurstSurface = mBurstCaptureImageReader.getSurface(); Loading Loading @@ -1106,8 +1107,10 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { } for (Pair<Image, TotalCaptureResult> captureStage : mCaptureStageMap.values()) { if (captureStage.first != null) { captureStage.first.close(); } } mCaptureStageMap.clear(); } } Loading Loading @@ -1207,6 +1210,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { if (mImageProcessor != null) { if (mCapturePendingMap.indexOfKey(timestamp) >= 0) { Image img = mCapturePendingMap.get(timestamp).first; mCapturePendingMap.remove(timestamp); mCaptureStageMap.put(stageId, new Pair<>(img, result)); checkAndFireBurstProcessing(); } else { Loading Loading @@ -1303,6 +1307,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { reader.detachImage(img); if (mCapturePendingMap.indexOfKey(timestamp) >= 0) { Integer stageId = mCapturePendingMap.get(timestamp).second; mCapturePendingMap.remove(timestamp); Pair<Image, TotalCaptureResult> captureStage = mCaptureStageMap.get(stageId); if (captureStage != null) { Loading Loading @@ -1402,9 +1407,11 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { private HashMap<Long, Pair<Image, OnImageAvailableListener>> mImageListenerMap = new HashMap<>(); private boolean mOutOfBuffers = false; private final boolean mPruneOlderBuffers; CameraOutputImageCallback(ImageReader imageReader) { CameraOutputImageCallback(ImageReader imageReader, boolean pruneOlderBuffers) { mImageReader = imageReader; mPruneOlderBuffers = pruneOlderBuffers; } @Override Loading Loading @@ -1447,6 +1454,10 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { ArrayList<Long> removedTs = new ArrayList<>(); for (long ts : timestamps) { if (ts < timestamp) { if (!mPruneOlderBuffers) { Log.w(TAG, "Unexpected older image with ts: " + ts); continue; } Log.e(TAG, "Dropped image with ts: " + ts); Pair<Image, OnImageAvailableListener> entry = mImageListenerMap.get(ts); if (entry.second != null) { Loading Loading
core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java +15 −4 Original line number Diff line number Diff line Loading @@ -357,7 +357,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { mCameraRepeatingSurface = mRepeatingRequestImageReader.getSurface(); } mRepeatingRequestImageCallback = new CameraOutputImageCallback( mRepeatingRequestImageReader); mRepeatingRequestImageReader, true /*pruneOlderBuffers*/); mRepeatingRequestImageReader .setOnImageAvailableListener(mRepeatingRequestImageCallback, mHandler); } Loading Loading @@ -398,7 +398,8 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { CameraExtensionCharacteristics.PROCESSING_INPUT_FORMAT); } mBurstCaptureImageCallback = new CameraOutputImageCallback(mBurstCaptureImageReader); mBurstCaptureImageCallback = new CameraOutputImageCallback(mBurstCaptureImageReader, false /*pruneOlderBuffers*/); mBurstCaptureImageReader.setOnImageAvailableListener(mBurstCaptureImageCallback, mHandler); mCameraBurstSurface = mBurstCaptureImageReader.getSurface(); Loading Loading @@ -1106,8 +1107,10 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { } for (Pair<Image, TotalCaptureResult> captureStage : mCaptureStageMap.values()) { if (captureStage.first != null) { captureStage.first.close(); } } mCaptureStageMap.clear(); } } Loading Loading @@ -1207,6 +1210,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { if (mImageProcessor != null) { if (mCapturePendingMap.indexOfKey(timestamp) >= 0) { Image img = mCapturePendingMap.get(timestamp).first; mCapturePendingMap.remove(timestamp); mCaptureStageMap.put(stageId, new Pair<>(img, result)); checkAndFireBurstProcessing(); } else { Loading Loading @@ -1303,6 +1307,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { reader.detachImage(img); if (mCapturePendingMap.indexOfKey(timestamp) >= 0) { Integer stageId = mCapturePendingMap.get(timestamp).second; mCapturePendingMap.remove(timestamp); Pair<Image, TotalCaptureResult> captureStage = mCaptureStageMap.get(stageId); if (captureStage != null) { Loading Loading @@ -1402,9 +1407,11 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { private HashMap<Long, Pair<Image, OnImageAvailableListener>> mImageListenerMap = new HashMap<>(); private boolean mOutOfBuffers = false; private final boolean mPruneOlderBuffers; CameraOutputImageCallback(ImageReader imageReader) { CameraOutputImageCallback(ImageReader imageReader, boolean pruneOlderBuffers) { mImageReader = imageReader; mPruneOlderBuffers = pruneOlderBuffers; } @Override Loading Loading @@ -1447,6 +1454,10 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { ArrayList<Long> removedTs = new ArrayList<>(); for (long ts : timestamps) { if (ts < timestamp) { if (!mPruneOlderBuffers) { Log.w(TAG, "Unexpected older image with ts: " + ts); continue; } Log.e(TAG, "Dropped image with ts: " + ts); Pair<Image, OnImageAvailableListener> entry = mImageListenerMap.get(ts); if (entry.second != null) { Loading