diff options
Diffstat (limited to 'include/camera/CameraHardwareInterface.h')
-rw-r--r-- | include/camera/CameraHardwareInterface.h | 58 |
1 files changed, 56 insertions, 2 deletions
diff --git a/include/camera/CameraHardwareInterface.h b/include/camera/CameraHardwareInterface.h index 6a66e3c..561a46d 100644 --- a/include/camera/CameraHardwareInterface.h +++ b/include/camera/CameraHardwareInterface.h @@ -18,8 +18,11 @@ #define ANDROID_HARDWARE_CAMERA_HARDWARE_INTERFACE_H #include <binder/IMemory.h> +#include <ui/egl/android_natives.h> #include <utils/RefBase.h> #include <surfaceflinger/ISurface.h> +#include <ui/android_native_buffer.h> +#include <ui/GraphicBuffer.h> #include <camera/Camera.h> #include <camera/CameraParameters.h> @@ -46,6 +49,17 @@ typedef void (*data_callback)(int32_t msgType, const sp<IMemory>& 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<android_native_buffer_t>& buf, + void* user); +#endif typedef void (*data_callback_timestamp)(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& dataPtr, @@ -86,8 +100,48 @@ class CameraHardwareInterface : public virtual RefBase { public: virtual ~CameraHardwareInterface() { } - /** Return the IMemoryHeap for the preview image heap */ - virtual sp<IMemoryHeap> getPreviewHeap() const = 0; +#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<android_native_buffer_t>& 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<android_native_buffer_t>** buffers, + size_t *nBuffers) = 0; +#endif + + /** Set the ANativeWindow to which preview frames are sent */ + virtual status_t setPreviewWindow(const sp<ANativeWindow>& buf) = 0; /** Return the IMemoryHeap for the raw image heap */ virtual sp<IMemoryHeap> getRawHeap() const = 0; |