diff options
Diffstat (limited to 'core/java/android/hardware/Camera.java')
-rw-r--r-- | core/java/android/hardware/Camera.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index dd15d38..16727fe 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -1147,7 +1147,16 @@ public class Camera { // Set to oneshot mode again. setHasPreviewCallback(true, false); } - pCb.onPreviewFrame((byte[])msg.obj, mCamera); + + byte[] luminances = (byte[])msg.obj; + if(getParameters().getPreviewFormat() == ImageFormat.RGB_565) + // Convert to greyscale + // Apps expect YUV as default format. Greyscale is + // only the first layer of YUV, but it's all that's + // needed by barcode scanner apps. + rgbToBw(luminances); + + pCb.onPreviewFrame(luminances, mCamera); } return; @@ -1216,6 +1225,17 @@ public class Camera { } } + private void rgbToBw(byte[] pixels) + { + Size previewsize = getParameters().getPreviewSize(); + int height = previewsize.height; + int width = previewsize.width; + + native_rgbToBw(pixels, width, height); + } + + private native void native_rgbToBw(byte[] pixelBuffer, int bufWidth, int bufHeight); + private static void postEventFromNative(Object camera_ref, int what, int arg1, int arg2, Object obj) { |