From 944aa6f02857bf93811ea3f13bd23d95e98c4c0b Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Mon, 29 Nov 2010 14:37:42 +0100 Subject: [PATCH 1/3] Fix regression framerate control. --- AndroidCameraRecordImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AndroidCameraRecordImpl.java b/AndroidCameraRecordImpl.java index 38ca02fec..0409d5cb4 100644 --- a/AndroidCameraRecordImpl.java +++ b/AndroidCameraRecordImpl.java @@ -34,11 +34,11 @@ public class AndroidCameraRecordImpl extends AndroidCameraRecord implements Prev private long filterCtxPtr; private double timeElapsedBetweenFrames = 0; private long lastFrameTime = 0; - private final long expectedTimeBetweenFrames; + private final double expectedTimeBetweenFrames; public AndroidCameraRecordImpl(RecorderParams parameters) { super(parameters); - expectedTimeBetweenFrames = 1l / Math.round(parameters.fps); + expectedTimeBetweenFrames = 1d / Math.round(parameters.fps); filterCtxPtr = parameters.filterDataNativePtr; storePreviewCallBack(this); From 7b9233ddf839fa712c2b706837d19ae5c9cbe59c Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Mon, 29 Nov 2010 14:40:00 +0100 Subject: [PATCH 2/3] Fix regression not using buffered capture on android v8. --- AndroidCameraRecordManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AndroidCameraRecordManager.java b/AndroidCameraRecordManager.java index 9295bf0b0..159cc4c5a 100644 --- a/AndroidCameraRecordManager.java +++ b/AndroidCameraRecordManager.java @@ -138,7 +138,7 @@ public class AndroidCameraRecordManager { parameters.rotation = rotation; parameters.surfaceView = surfaceView; - if (version > 8) { + if (version >= 8) { recorder = new AndroidCameraRecordBufferedImpl(parameters); } else { recorder = new AndroidCameraRecordImpl(parameters); From 6c9b1ab07933197e91098e8c316b962e5edec2e0 Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Mon, 29 Nov 2010 14:41:51 +0100 Subject: [PATCH 3/3] Cosmetics cleanup. --- AndroidCameraRecord.java | 20 ++++++++------------ AndroidCameraRecordBufferedImpl.java | 12 ++++-------- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/AndroidCameraRecord.java b/AndroidCameraRecord.java index 560f4c947..c691a3176 100644 --- a/AndroidCameraRecord.java +++ b/AndroidCameraRecord.java @@ -52,7 +52,8 @@ public abstract class AndroidCameraRecord { public void startPreview() { // FIXME throws exception? if (previewStarted) { Log.w(tag, "Already started"); - return; + throw new RuntimeException("Video recorder already started"); + // return } if (params.surfaceView.getVisibility() != SurfaceView.VISIBLE) { @@ -91,7 +92,7 @@ public abstract class AndroidCameraRecord { } } - onSettingParameters(parameters); + onSettingCameraParameters(parameters); camera.setParameters(parameters); @@ -114,33 +115,28 @@ public abstract class AndroidCameraRecord { previewStarted = true; - // Register callback to get capture buffer - if (storedPreviewCallback != null) { - lowLevelSetPreviewCallback(camera, storedPreviewCallback); - } + lowLevelSetPreviewCallback(camera, storedPreviewCallback); - onCameraStarted(camera); + onPreviewStarted(camera); } - protected void onSettingParameters(Parameters parameters) { - - } + protected void onSettingCameraParameters(Parameters parameters) {} /** * Hook. * @param camera */ - public void onCameraStarted(Camera camera) {} + public void onPreviewStarted(Camera camera) {} public void storePreviewCallBack(PreviewCallback cb) { + this.storedPreviewCallback = cb; if (camera == null) { Log.w(tag, "Capture camera not ready, storing callback"); - this.storedPreviewCallback = cb; return; } diff --git a/AndroidCameraRecordBufferedImpl.java b/AndroidCameraRecordBufferedImpl.java index 9445b40ee..f58698df2 100644 --- a/AndroidCameraRecordBufferedImpl.java +++ b/AndroidCameraRecordBufferedImpl.java @@ -46,18 +46,14 @@ public class AndroidCameraRecordBufferedImpl extends AndroidCameraRecordImpl { } @Override - public void onCameraStarted(Camera camera) { - super.onCameraStarted(camera); + public void onPreviewStarted(Camera camera) { + super.onPreviewStarted(camera); Size s = camera.getParameters().getPreviewSize(); int wishedBufferSize = s.height * s.width * 3 / 2; camera.addCallbackBuffer(new byte[wishedBufferSize]); camera.addCallbackBuffer(new byte[wishedBufferSize]); -/* - for (int i=1; i < 30; i++) { - camera.addCallbackBuffer(new byte[wishedBufferSize]); - }*/ } @Override @@ -67,8 +63,8 @@ public class AndroidCameraRecordBufferedImpl extends AndroidCameraRecordImpl { } @Override - protected void onSettingParameters(Parameters parameters) { - super.onSettingParameters(parameters); + protected void onSettingCameraParameters(Parameters parameters) { + super.onSettingCameraParameters(parameters); // Only on v8 hardware camera.setDisplayOrientation(90 * orientationCode); }