Merge "Camera2: Fix broken onCaptureBufferLost callback" into oc-dev

This commit is contained in:
Eino-Ville Talvala
2017-05-25 17:11:00 +00:00
committed by Android (Google) Code Review
3 changed files with 64 additions and 26 deletions

View File

@@ -88,7 +88,7 @@ public class CallbackProxies {
}
@SuppressWarnings("deprecation")
public static class DeviceCaptureCallbackProxy extends CameraDeviceImpl.CaptureCallback {
public static class DeviceCaptureCallbackProxy implements CameraDeviceImpl.CaptureCallback {
private final MethodNameInvoker<CameraDeviceImpl.CaptureCallback> mProxy;
public DeviceCaptureCallbackProxy(
@@ -138,6 +138,13 @@ public class CallbackProxies {
int sequenceId) {
mProxy.invoke("onCaptureSequenceAborted", camera, sequenceId);
}
@Override
public void onCaptureBufferLost(CameraDevice camera,
CaptureRequest request, Surface target, long frameNumber) {
mProxy.invoke("onCaptureBufferLost", camera, request, target, frameNumber);
}
}
public static class SessionStateCallbackProxy

View File

@@ -452,6 +452,37 @@ public class CameraCaptureSessionImpl extends CameraCaptureSession
private CameraDeviceImpl.CaptureCallback createCaptureCallbackProxy(
Handler handler, CaptureCallback callback) {
CameraDeviceImpl.CaptureCallback localCallback = new CameraDeviceImpl.CaptureCallback() {
@Override
public void onCaptureStarted(CameraDevice camera,
CaptureRequest request, long timestamp, long frameNumber) {
// Do nothing
}
@Override
public void onCapturePartial(CameraDevice camera,
CaptureRequest request, android.hardware.camera2.CaptureResult result) {
// Do nothing
}
@Override
public void onCaptureProgressed(CameraDevice camera,
CaptureRequest request, android.hardware.camera2.CaptureResult partialResult) {
// Do nothing
}
@Override
public void onCaptureCompleted(CameraDevice camera,
CaptureRequest request, android.hardware.camera2.TotalCaptureResult result) {
// Do nothing
}
@Override
public void onCaptureFailed(CameraDevice camera,
CaptureRequest request, android.hardware.camera2.CaptureFailure failure) {
// Do nothing
}
@Override
public void onCaptureSequenceCompleted(CameraDevice camera,
int sequenceId, long frameNumber) {
@@ -463,6 +494,13 @@ public class CameraCaptureSessionImpl extends CameraCaptureSession
int sequenceId) {
finishPendingSequence(sequenceId);
}
@Override
public void onCaptureBufferLost(CameraDevice camera,
CaptureRequest request, Surface target, long frameNumber) {
// Do nothing
}
};
/*

View File

@@ -1112,8 +1112,11 @@ public class CameraDeviceImpl extends CameraDevice
* <p>A callback for tracking the progress of a {@link CaptureRequest}
* submitted to the camera device.</p>
*
* An interface instead of an abstract class because this is internal and
* we want to make sure we always implement all its callbacks until we reach
* the public layer.
*/
public static abstract class CaptureCallback {
public interface CaptureCallback {
/**
* This constant is used to indicate that no images were captured for
@@ -1130,9 +1133,7 @@ public class CameraDeviceImpl extends CameraDevice
* @see android.media.MediaActionSound
*/
public void onCaptureStarted(CameraDevice camera,
CaptureRequest request, long timestamp, long frameNumber) {
// default empty implementation
}
CaptureRequest request, long timestamp, long frameNumber);
/**
* This method is called when some results from an image capture are
@@ -1141,9 +1142,7 @@ public class CameraDeviceImpl extends CameraDevice
* @hide
*/
public void onCapturePartial(CameraDevice camera,
CaptureRequest request, CaptureResult result) {
// default empty implementation
}
CaptureRequest request, CaptureResult result);
/**
* This method is called when an image capture makes partial forward progress; some
@@ -1151,18 +1150,14 @@ public class CameraDeviceImpl extends CameraDevice
*
*/
public void onCaptureProgressed(CameraDevice camera,
CaptureRequest request, CaptureResult partialResult) {
// default empty implementation
}
CaptureRequest request, CaptureResult partialResult);
/**
* This method is called when an image capture has fully completed and all the
* result metadata is available.
*/
public void onCaptureCompleted(CameraDevice camera,
CaptureRequest request, TotalCaptureResult result) {
// default empty implementation
}
CaptureRequest request, TotalCaptureResult result);
/**
* This method is called instead of {@link #onCaptureCompleted} when the
@@ -1170,9 +1165,7 @@ public class CameraDeviceImpl extends CameraDevice
* request.
*/
public void onCaptureFailed(CameraDevice camera,
CaptureRequest request, CaptureFailure failure) {
// default empty implementation
}
CaptureRequest request, CaptureFailure failure);
/**
* This method is called independently of the others in CaptureCallback,
@@ -1180,9 +1173,7 @@ public class CameraDeviceImpl extends CameraDevice
* or {@link CaptureFailure} for it have been returned via this callback.
*/
public void onCaptureSequenceCompleted(CameraDevice camera,
int sequenceId, long frameNumber) {
// default empty implementation
}
int sequenceId, long frameNumber);
/**
* This method is called independently of the others in CaptureCallback,
@@ -1190,14 +1181,16 @@ public class CameraDeviceImpl extends CameraDevice
* or {@link CaptureFailure} for it have been returned via this callback.
*/
public void onCaptureSequenceAborted(CameraDevice camera,
int sequenceId) {
// default empty implementation
}
int sequenceId);
/**
* This method is called independently of the others in CaptureCallback, if an output buffer
* is dropped for a particular capture request.
*
* Loss of metadata is communicated via onCaptureFailed, independently of any buffer loss.
*/
public void onCaptureBufferLost(CameraDevice camera,
CaptureRequest request, Surface target, long frameNumber) {
// default empty implementation
}
CaptureRequest request, Surface target, long frameNumber);
}
/**