summaryrefslogtreecommitdiffstats
path: root/include/media/stagefright/CameraSource.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/media/stagefright/CameraSource.h')
-rw-r--r--include/media/stagefright/CameraSource.h232
1 files changed, 0 insertions, 232 deletions
diff --git a/include/media/stagefright/CameraSource.h b/include/media/stagefright/CameraSource.h
deleted file mode 100644
index 5a35358..0000000
--- a/include/media/stagefright/CameraSource.h
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright (C) 2009 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 CAMERA_SOURCE_H_
-
-#define CAMERA_SOURCE_H_
-
-#include <media/stagefright/MediaBuffer.h>
-#include <media/stagefright/MediaSource.h>
-#include <camera/ICamera.h>
-#include <camera/ICameraRecordingProxyListener.h>
-#include <camera/CameraParameters.h>
-#include <utils/List.h>
-#include <utils/RefBase.h>
-
-namespace android {
-
-class IMemory;
-class Camera;
-class Surface;
-
-class CameraSource : public MediaSource, public MediaBufferObserver {
-public:
- /**
- * Factory method to create a new CameraSource using the current
- * settings (such as video size, frame rate, color format, etc)
- * from the default camera.
- *
- * @return NULL on error.
- */
- static CameraSource *Create();
-
- /**
- * Factory method to create a new CameraSource.
- *
- * @param camera the video input frame data source. If it is NULL,
- * we will try to connect to the camera with the given
- * cameraId.
- *
- * @param cameraId the id of the camera that the source will connect
- * to if camera is NULL; otherwise ignored.
- *
- * @param videoSize the dimension (in pixels) of the video frame
- * @param frameRate the target frames per second
- * @param surface the preview surface for display where preview
- * frames are sent to
- * @param storeMetaDataInVideoBuffers true to request the camera
- * source to store meta data in video buffers; false to
- * request the camera source to store real YUV frame data
- * in the video buffers. The camera source may not support
- * storing meta data in video buffers, if so, a request
- * to do that will NOT be honored. To find out whether
- * meta data is actually being stored in video buffers
- * during recording, call isMetaDataStoredInVideoBuffers().
- *
- * @return NULL on error.
- */
- static CameraSource *CreateFromCamera(const sp<ICamera> &camera,
- const sp<ICameraRecordingProxy> &proxy,
- int32_t cameraId,
- Size videoSize,
- int32_t frameRate,
- const sp<Surface>& surface,
- bool storeMetaDataInVideoBuffers = false);
-
- virtual ~CameraSource();
-
- virtual status_t start(MetaData *params = NULL);
- virtual status_t stop() { return reset(); }
- virtual status_t read(
- MediaBuffer **buffer, const ReadOptions *options = NULL);
-
- /**
- * Check whether a CameraSource object is properly initialized.
- * Must call this method before stop().
- * @return OK if initialization has successfully completed.
- */
- virtual status_t initCheck() const;
-
- /**
- * Returns the MetaData associated with the CameraSource,
- * including:
- * kKeyColorFormat: YUV color format of the video frames
- * kKeyWidth, kKeyHeight: dimension (in pixels) of the video frames
- * kKeySampleRate: frame rate in frames per second
- * kKeyMIMEType: always fixed to be MEDIA_MIMETYPE_VIDEO_RAW
- */
- virtual sp<MetaData> getFormat();
-
- /**
- * Tell whether this camera source stores meta data or real YUV
- * frame data in video buffers.
- *
- * @return true if meta data is stored in the video
- * buffers; false if real YUV data is stored in
- * the video buffers.
- */
- bool isMetaDataStoredInVideoBuffers() const;
-
- virtual void signalBufferReturned(MediaBuffer* buffer);
-
-protected:
- class ProxyListener: public BnCameraRecordingProxyListener {
- public:
- ProxyListener(const sp<CameraSource>& source);
- virtual void dataCallbackTimestamp(int64_t timestampUs, int32_t msgType,
- const sp<IMemory> &data);
-
- private:
- sp<CameraSource> mSource;
- };
-
- // isBinderAlive needs linkToDeath to work.
- class DeathNotifier: public IBinder::DeathRecipient {
- public:
- DeathNotifier() {}
- virtual void binderDied(const wp<IBinder>& who);
- };
-
- enum CameraFlags {
- FLAGS_SET_CAMERA = 1L << 0,
- FLAGS_HOT_CAMERA = 1L << 1,
- };
-
- int32_t mCameraFlags;
- Size mVideoSize;
- int32_t mVideoFrameRate;
- int32_t mColorFormat;
- status_t mInitCheck;
-
- sp<Camera> mCamera;
- sp<ICameraRecordingProxy> mCameraRecordingProxy;
- sp<DeathNotifier> mDeathNotifier;
- sp<Surface> mSurface;
- sp<MetaData> mMeta;
-
- int64_t mStartTimeUs;
- int32_t mNumFramesReceived;
- int64_t mLastFrameTimestampUs;
- bool mStarted;
- int32_t mNumFramesEncoded;
-
- // Time between capture of two frames.
- int64_t mTimeBetweenFrameCaptureUs;
-
- CameraSource(const sp<ICamera>& camera, const sp<ICameraRecordingProxy>& proxy,
- int32_t cameraId,
- Size videoSize, int32_t frameRate,
- const sp<Surface>& surface,
- bool storeMetaDataInVideoBuffers);
-
- virtual void startCameraRecording();
- virtual void releaseRecordingFrame(const sp<IMemory>& frame);
-
- // Returns true if need to skip the current frame.
- // Called from dataCallbackTimestamp.
- virtual bool skipCurrentFrame(int64_t timestampUs) {return false;}
-
- // Callback called when still camera raw data is available.
- virtual void dataCallback(int32_t msgType, const sp<IMemory> &data) {}
-
- virtual void dataCallbackTimestamp(int64_t timestampUs, int32_t msgType,
- const sp<IMemory> &data);
-
-private:
- friend class CameraSourceListener;
-
- Mutex mLock;
- Condition mFrameAvailableCondition;
- Condition mFrameCompleteCondition;
- List<sp<IMemory> > mFramesReceived;
- List<sp<IMemory> > mFramesBeingEncoded;
- List<int64_t> mFrameTimes;
-
- int64_t mFirstFrameTimeUs;
- int32_t mNumFramesDropped;
- int32_t mNumGlitches;
- int64_t mGlitchDurationThresholdUs;
- bool mCollectStats;
- bool mIsMetaDataStoredInVideoBuffers;
-
- void releaseQueuedFrames();
- void releaseOneRecordingFrame(const sp<IMemory>& frame);
-
-
- status_t init(const sp<ICamera>& camera, const sp<ICameraRecordingProxy>& proxy,
- int32_t cameraId, Size videoSize, int32_t frameRate,
- bool storeMetaDataInVideoBuffers);
-
- status_t initWithCameraAccess(
- const sp<ICamera>& camera, const sp<ICameraRecordingProxy>& proxy,
- int32_t cameraId, Size videoSize, int32_t frameRate,
- bool storeMetaDataInVideoBuffers);
-
- status_t isCameraAvailable(const sp<ICamera>& camera,
- const sp<ICameraRecordingProxy>& proxy,
- int32_t cameraId);
- status_t isCameraColorFormatSupported(const CameraParameters& params);
- status_t configureCamera(CameraParameters* params,
- int32_t width, int32_t height,
- int32_t frameRate);
-
- status_t checkVideoSize(const CameraParameters& params,
- int32_t width, int32_t height);
-
- status_t checkFrameRate(const CameraParameters& params,
- int32_t frameRate);
-
- void stopCameraRecording();
- void releaseCamera();
- status_t reset();
-
- CameraSource(const CameraSource &);
- CameraSource &operator=(const CameraSource &);
-};
-
-} // namespace android
-
-#endif // CAMERA_SOURCE_H_