summaryrefslogtreecommitdiffstats
path: root/src/plugins/android/jar/src/org/qtproject/qt/android/multimedia/QtCameraListener.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/android/jar/src/org/qtproject/qt/android/multimedia/QtCameraListener.java')
-rw-r--r--src/plugins/android/jar/src/org/qtproject/qt/android/multimedia/QtCameraListener.java216
1 files changed, 0 insertions, 216 deletions
diff --git a/src/plugins/android/jar/src/org/qtproject/qt/android/multimedia/QtCameraListener.java b/src/plugins/android/jar/src/org/qtproject/qt/android/multimedia/QtCameraListener.java
deleted file mode 100644
index ff26d90c3..000000000
--- a/src/plugins/android/jar/src/org/qtproject/qt/android/multimedia/QtCameraListener.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtMultimedia of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-package org.qtproject.qt.android.multimedia;
-
-import android.hardware.Camera;
-import android.graphics.ImageFormat;
-import android.graphics.SurfaceTexture;
-import android.util.Log;
-import java.lang.Math;
-
-public class QtCameraListener implements Camera.ShutterCallback,
- Camera.PictureCallback,
- Camera.AutoFocusCallback,
- Camera.PreviewCallback
-{
- private static final String TAG = "Qt Camera";
-
- private static final int BUFFER_POOL_SIZE = 2;
-
- private int m_cameraId = -1;
-
- private boolean m_notifyNewFrames = false;
- private boolean m_notifyWhenFrameAvailable = false;
- private byte[][] m_previewBuffers = null;
- private byte[] m_lastPreviewBuffer = null;
- private Camera.Size m_previewSize = null;
- private int m_previewFormat = ImageFormat.NV21; // Default preview format on all devices
- private int m_previewBytesPerLine = -1;
-
- private QtCameraListener(int id)
- {
- m_cameraId = id;
- }
-
- public void notifyNewFrames(boolean notify)
- {
- m_notifyNewFrames = notify;
- }
-
- public void notifyWhenFrameAvailable(boolean notify)
- {
- m_notifyWhenFrameAvailable = notify;
- }
-
- public byte[] lastPreviewBuffer()
- {
- return m_lastPreviewBuffer;
- }
-
- public int previewWidth()
- {
- if (m_previewSize == null)
- return -1;
-
- return m_previewSize.width;
- }
-
- public int previewHeight()
- {
- if (m_previewSize == null)
- return -1;
-
- return m_previewSize.height;
- }
-
- public int previewFormat()
- {
- return m_previewFormat;
- }
-
- public int previewBytesPerLine()
- {
- return m_previewBytesPerLine;
- }
-
- public void clearPreviewCallback(Camera camera)
- {
- camera.setPreviewCallbackWithBuffer(null);
- }
-
- public void setupPreviewCallback(Camera camera)
- {
- // Clear previous callback (also clears added buffers)
- clearPreviewCallback(camera);
- m_lastPreviewBuffer = null;
-
- final Camera.Parameters params = camera.getParameters();
- m_previewSize = params.getPreviewSize();
- m_previewFormat = params.getPreviewFormat();
-
- int bufferSizeNeeded = 0;
- if (m_previewFormat == ImageFormat.YV12) {
- // For YV12, bytes per line must be a multiple of 16
- final int yStride = (int) Math.ceil(m_previewSize.width / 16.0) * 16;
- final int uvStride = (int) Math.ceil((yStride / 2) / 16.0) * 16;
- final int ySize = yStride * m_previewSize.height;
- final int uvSize = uvStride * m_previewSize.height / 2;
- bufferSizeNeeded = ySize + uvSize * 2;
-
- m_previewBytesPerLine = yStride;
-
- } else {
- double bytesPerPixel = ImageFormat.getBitsPerPixel(m_previewFormat) / 8.0;
- bufferSizeNeeded = (int) Math.ceil(bytesPerPixel * m_previewSize.width * m_previewSize.height);
-
- // bytes per line are calculated only for the first plane
- switch (m_previewFormat) {
- case ImageFormat.NV21:
- m_previewBytesPerLine = m_previewSize.width; // 1 byte per sample and tightly packed
- break;
- case ImageFormat.RGB_565:
- case ImageFormat.YUY2:
- m_previewBytesPerLine = m_previewSize.width * 2; // 2 bytes per pixel
- break;
- default:
- m_previewBytesPerLine = -1;
- break;
- }
- }
-
- // We could keep the same buffers when they are already bigger than the required size
- // but the Android doc says the size must match, so in doubt just replace them.
- if (m_previewBuffers == null || m_previewBuffers[0].length != bufferSizeNeeded)
- m_previewBuffers = new byte[BUFFER_POOL_SIZE][bufferSizeNeeded];
-
- // Add callback and queue all buffers
- camera.setPreviewCallbackWithBuffer(this);
- for (byte[] buffer : m_previewBuffers)
- camera.addCallbackBuffer(buffer);
- }
-
- @Override
- public void onPreviewFrame(byte[] data, Camera camera)
- {
- // Re-enqueue the last buffer
- if (m_lastPreviewBuffer != null)
- camera.addCallbackBuffer(m_lastPreviewBuffer);
-
- m_lastPreviewBuffer = data;
-
- if (data != null) {
- if (m_notifyWhenFrameAvailable) {
- m_notifyWhenFrameAvailable = false;
- notifyFrameAvailable(m_cameraId);
- }
- if (m_notifyNewFrames) {
- notifyNewPreviewFrame(m_cameraId, data,
- m_previewSize.width, m_previewSize.height,
- m_previewFormat,
- m_previewBytesPerLine);
- }
- }
- }
-
- @Override
- public void onShutter()
- {
- notifyPictureExposed(m_cameraId);
- }
-
- @Override
- public void onPictureTaken(byte[] data, Camera camera)
- {
- notifyPictureCaptured(m_cameraId, data);
- }
-
- @Override
- public void onAutoFocus(boolean success, Camera camera)
- {
- notifyAutoFocusComplete(m_cameraId, success);
- }
-
- private static native void notifyAutoFocusComplete(int id, boolean success);
- private static native void notifyPictureExposed(int id);
- private static native void notifyPictureCaptured(int id, byte[] data);
- private static native void notifyNewPreviewFrame(int id, byte[] data, int width, int height,
- int pixelFormat, int bytesPerLine);
- private static native void notifyFrameAvailable(int id);
-}