| /* | 
 | ** | 
 | ** 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 getNextFrameAsYuv422(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 |