Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf2bdd1f authored by James Dong's avatar James Dong Committed by Android (Google) Code Review
Browse files

Merge "0-memcpy video recording framework"

parents b5c564fe 769bb2aa
Loading
Loading
Loading
Loading
+53 −0
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@
#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>

@@ -47,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,
@@ -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<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;