summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/FakeCamera.h
diff options
context:
space:
mode:
Diffstat (limited to 'services/camera/libcameraservice/FakeCamera.h')
-rw-r--r--services/camera/libcameraservice/FakeCamera.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/FakeCamera.h b/services/camera/libcameraservice/FakeCamera.h
new file mode 100644
index 0000000..724de20
--- /dev/null
+++ b/services/camera/libcameraservice/FakeCamera.h
@@ -0,0 +1,67 @@
+/*
+**
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+#ifndef ANDROID_HARDWARE_FAKECAMERA_H
+#define ANDROID_HARDWARE_FAKECAMERA_H
+
+#include <sys/types.h>
+#include <stdint.h>
+
+namespace android {
+
+/*
+ * FakeCamera is used in the CameraHardwareStub to provide a fake video feed
+ * when the system does not have a camera in hardware.
+ * The fake video is a moving black and white checkerboard background with a
+ * bouncing gray square in the foreground.
+ * This class is not thread-safe.
+ *
+ * TODO: Since the major methods provides a raw/uncompressed video feed, rename
+ * this class to RawVideoSource.
+ */
+
+class FakeCamera {
+public:
+ FakeCamera(int width, int height);
+ ~FakeCamera();
+
+ void setSize(int width, int height);
+ void getNextFrameAsYuv420(uint8_t *buffer);
+ // Write to the fd a string representing the current state.
+ void dump(int fd) const;
+
+private:
+ // TODO: remove the uint16_t buffer param everywhere since it is a field of
+ // this class.
+ void getNextFrameAsRgb565(uint16_t *buffer);
+
+ void drawSquare(uint16_t *buffer, int x, int y, int size, int color, int shadow);
+ void drawCheckerboard(uint16_t *buffer, int size);
+
+ static const int kRed = 0xf800;
+ static const int kGreen = 0x07c0;
+ static const int kBlue = 0x003e;
+
+ int mWidth, mHeight;
+ int mCounter;
+ int mCheckX, mCheckY;
+ uint16_t *mTmpRgb16Buffer;
+};
+
+}; // namespace android
+
+#endif // ANDROID_HARDWARE_FAKECAMERA_H