From a9424e227d90eff8ac387c1810a642b33d22e2c7 Mon Sep 17 00:00:00 2001 From: James Dong Date: Wed, 6 Oct 2010 18:11:23 -0700 Subject: 0-memcpy video recording framework Part II: proposed camera hal change Change-Id: I51663cf5de2b00f71e4ff1828080094676065444 --- include/camera/CameraHardwareInterface.h | 53 ++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'include') diff --git a/include/camera/CameraHardwareInterface.h b/include/camera/CameraHardwareInterface.h index 3a77dd1..561a46d 100644 --- a/include/camera/CameraHardwareInterface.h +++ b/include/camera/CameraHardwareInterface.h @@ -21,6 +21,8 @@ #include #include #include +#include +#include #include #include @@ -47,6 +49,17 @@ typedef void (*data_callback)(int32_t msgType, const sp& dataPtr, void* user); +#ifdef USE_GRAPHIC_VIDEO_BUFFERS +/** + * Replace data_callback_timestamp. Once we are done, this + * should be renamed as data_callback_timestamp, and the existing + * data_callback_timestamp should be deleted. + */ +typedef void (*videobuffer_callback_timestamp)(nsecs_t timestamp, + int32_t msgType, + const sp& buf, + void* user); +#endif typedef void (*data_callback_timestamp)(nsecs_t timestamp, int32_t msgType, const sp& dataPtr, @@ -87,6 +100,46 @@ class CameraHardwareInterface : public virtual RefBase { public: virtual ~CameraHardwareInterface() { } +#ifdef USE_GRAPHIC_VIDEO_BUFFERS + /** + * Replace existing setCallbacks() method. Once we are done, the + * videobuffer_callback_timestamp parameter will be renamed to + * data_callback_timestamp, but its signature will be the same + * as videobuffer_callback_timestamp, which will be renamed + * to data_callback_timestamp and the exiting data_callback_timestamp + * will be deleted. + */ + virtual void setCallbacks(notify_callback notify_cb, + data_callback data_cb, + videobuffer_callback_timestamp data_cb_timestamp, + void* user) = 0; + + /** + * Replace releaseRecordingFrame(). releaseRecordingFrame() should be + * changed so that it has the same signature of releaseVideoBuffer(), + * once we are done, and releaseVideoBuffer() will be deleted. + */ + virtual void releaseVideoBuffer(const sp& buf) = 0; + + /** + * This method should be called after startRecording(). + * + * @param nBuffers the total number of video buffers allocated by the camera + * hal + * @param buffers an array allocated by the camera hal to hold the pointers + * to the individual video buffers. The video buffers and the buffers array + * should NOT be modified/released by camera hal until stopRecording() is + * called and all outstanding video buffers previously sent out via + * CAMERA_MSG_VIDEO_FRAME have been released via releaseVideoBuffer(). + * Camera hal client must not release the individual buffers and the buffers + * array. + * @return no error if OK. + */ + virtual status_t getVideoBufferInfo( + sp** buffers, + size_t *nBuffers) = 0; +#endif + /** Set the ANativeWindow to which preview frames are sent */ virtual status_t setPreviewWindow(const sp& buf) = 0; -- cgit v1.1