#define MMCAM_RECOMMEND_CAMERA_HEIGHT "recommend-camera-height"
/**
+ * Enable to play capture sound
+ */
+#define MMCAM_CAPTURE_SOUND_ENABLE "capture-sound-enable"
+
+/**
* Flip of video input stream.
* @see MMFlipType (in mm_types.h)
*/
#define MMCAM_SUPPORT_MEDIA_PACKET_PREVIEW_CB "support-media-packet-preview-cb"
/**
+* Support user buffer for zero copy
+*/
+#define MMCAM_SUPPORT_USER_BUFFER "support-user-buffer"
+
+/**
+* Buffer fd from user
+*/
+#define MMCAM_USER_BUFFER_FD "user-buffer-fd"
+
+/**
* Enable to write tags for recorded file
*/
#define MMCAM_RECORDER_TAG_ENABLE "recorder-tag-enable"
#define MMCAM_DISPLAY_SOCKET_PATH "display-socket-path"
/**
- * PID for sound focus
+ * Client PID
*/
-#define MMCAM_PID_FOR_SOUND_FOCUS "pid-for-sound-focus"
+#define MMCAM_CLIENT_PID "client-pid"
/**
* Root directory of application
*/
#define MMCAM_GDBUS_CONNECTION "gdbus-connection"
+/**
+ * Replay gain enable
+ */
+#define MMCAM_AUDIO_REPLAY_GAIN_ENABLE "audio-replay-gain-enable"
+
+/**
+ * Reference level for replay gain
+ */
+#define MMCAM_AUDIO_REPLAY_GAIN_REFERENCE_LEVEL "audio-replay-gain-reference-level"
+
/*=======================================================================================
| ENUM DEFINITIONS |
========================================================================================*/
MM_CAM_STREAM_DATA_YUV420SP, /**< YUV420 SemiPlannar type - 2 planes */
MM_CAM_STREAM_DATA_YUV420P, /**< YUV420 Plannar type - 3 planes */
MM_CAM_STREAM_DATA_YUV422P, /**< YUV422 Plannar type - 3 planes */
- MM_CAM_STREAM_DATA_ENCODED /**< Encoded data type - 1 plane */
+ MM_CAM_STREAM_DATA_ENCODED, /**< Encoded data type - 1 plane */
+ MM_CAM_STREAM_DATA_DEPTH, /**< Depth data type - 1 plane */
+ MM_CAM_STREAM_DATA_RGB /**< RGB data type - 1 plane */
} MMCamStreamData;
struct {
unsigned char *data;
unsigned int length_data;
- } encoded;
+ int is_delta_frame;
+ } encoded, depth, rgb;
} data; /**< pointer of captured stream */
MMCamStreamData data_type; /**< data type */
unsigned int length_total; /**< total length of stream buffer (in byte)*/
/**
+ * Structure for muxed stream data.
+ */
+typedef struct {
+ void *data; /**< pointer of muxed stream */
+ unsigned int length; /**< length of stream buffer (in byte) */
+ unsigned long long offset; /**< current offset for data */
+} MMCamcorderMuxedStreamDataType;
+
+
+/**
* Prerequisite information for mm_camcorder_create()
* The information to set prior to create.
*/
} MMCamFaceDetectInfo;
/**
- * Wayland information
+ * Window information
*/
-typedef struct _MMCamWaylandInfo {
- int global_surface_id;
- int window_x;
- int window_y;
- int window_width;
- int window_height;
- void *evas_obj;
-} MMCamWaylandInfo;
+typedef struct _MMCamWindowInfo {
+ int surface_id;
+ MMRectType rect;
+} MMCamWindowInfo;
/*=======================================================================================
/**
+ * Function definition for muxed stream callback.
+ * Be careful! In this function, you can't call functions that change the state of camcorder such as mm_camcorder_stop(),
+ * mm_camcorder_unrealize(), mm_camcorder_record(), mm_camcorder_commit(), and mm_camcorder_cancel(), etc.
+ * Please don't hang this function long. It may cause low performance of camcorder or occur timeout error from encoding pipeline.
+ * I recommend to you releasing this function ASAP.
+ *
+ * @param[in] stream Reference pointer to muxed stream data
+ * @param[in] user_param User parameter which is received from user when callback function was set
+ * @return This function returns true on success, or false on failure.
+ * @remarks
+ */
+typedef gboolean (*mm_camcorder_muxed_stream_callback)(MMCamcorderMuxedStreamDataType *stream, void *user_param);
+
+
+/**
* Function definition for video capture callback.
* Like '#mm_camcorder_video_stream_callback', you can't call mm_camcorder_stop() while you are hanging this function.
*
*/
typedef gboolean (*mm_camcorder_video_capture_callback)(MMCamcorderCaptureDataType *frame, MMCamcorderCaptureDataType *thumbnail, void *user_param);
+/**
+ * Function definition for video encode decision callback.
+ * Like '#mm_camcorder_video_stream_callback', you can't call mm_camcorder_stop() while you are hanging this function.
+ *
+ * @param[in] stream Reference pointer to video stream data
+ * @param[in] user_param User parameter which is received from user when callback function was set
+ * @return This function returns true on encoding, or false on drop frame.
+ * @remarks This function is issued in the context of gstreamer (video sink or internal of camerasrc thread).
+ */
+typedef gboolean (*mm_camcorder_video_encode_decision_callback)(MMCamcorderVideoStreamDataType *stream, void *user_param);
+
/*=======================================================================================
| GLOBAL FUNCTION PROTOTYPES |
* Most important resource that is released here is gstreamer pipeline of mm_camcorder.
* Because most of resources, such as camera device, video display device, and audio I/O device, are operating on the gstreamer pipeline,
* this function should be called to release its resources.
- * Moreover, mm_camcorder is controlled by audio session manager. If an user doesn't call this function when he want to release mm_camcorder,
- * other multimedia frameworks may face session problem. For more detail information, please refer mm_session module.
*
* @param[in] camcorder A handle of camcorder.
* @return This function returns zero(MM_ERROR_NONE) on success, or negative value with error code.\n
/**
+ * mm_camcorder_set_muxed_stream_callback:\n
+ * Set callback for user defined muxed stream callback function.
+ * Users can retrieve muxed data using registered callback.
+ * The callback function holds the same buffer that will be recorded.
+ *
+ * @param[in] camcorder A handle of camcorder.
+ * @param[in] callback Function pointer of callback function.
+ * @param[in] user_data User parameter for passing to callback function.
+ * @return This function returns zero(MM_ERROR_NONE) on success, or negative value with error code.\n
+ * Please refer 'mm_error.h' to know the exact meaning of the error.
+ * @see mm_camcorder_muxed_stream_callback
+ * @pre None
+ * @post None
+ * @remarks registered 'callback' is called on internal thread of camcorder. Regardless of the status of main loop, this function will be called.
+ * @par example
+ * @code
+
+#include <mm_camcorder.h>
+
+gboolean setting_muxed_stream_callback()
+{
+ //set callback
+ mm_camcorder_set_muxed_stream_callback(hcam, (mm_camcorder_muxed_stream_callback)camcordertest_muxed_stream_cb, (void*)hcam);
+
+ return TRUE;
+}
+ * @endcode
+ */
+int mm_camcorder_set_muxed_stream_callback(MMHandleType camcorder, mm_camcorder_muxed_stream_callback callback, void *user_data);
+
+
+/**
+ * mm_camcorder_set_video_encode_decision_callback:\n
+ * Set callback for user defined video encode decision callback function.
+ * Users can retrieve video frame using registered callback,
+ * and decide to encoding video frame by return value of function.
+ *
+ * @param[in] camcorder A handle of camcorder.
+ * @param[in] callback Function pointer of callback function.
+ * @param[in] user_data User parameter for passing to callback function.
+ * @return This function returns zero(MM_ERROR_NONE) on success, or negative value with error code.\n
+ * Please refer 'mm_error.h' to know the exact meaning of the error.
+ * @see mm_camcorder_video_encode_decision_callback
+ * @pre None
+ * @post None
+ * @remarks registered 'callback' is called on internal thread of camcorder. Regardless of the status of main loop, this function will be called.
+ */
+int mm_camcorder_set_video_encode_decision_callback(MMHandleType camcorder, mm_camcorder_video_encode_decision_callback callback, void *user_data);
+
+
+/**
* mm_camcorder_get_state:\n
* Get the current state of camcorder.
* mm_camcorder is working on the base of its state. An user should check the state of mm_camcorder before calling its functions.
* @endcode
*/
int mm_camcorder_get_state(MMHandleType camcorder, MMCamcorderStateType *state);
+int mm_camcorder_get_state2(MMHandleType camcorder, MMCamcorderStateType *state, MMCamcorderStateType *old_state);
/**
/* check compatability between codec and file format */
int mm_camcorder_check_codec_fileformat_compatibility(const char *codec_type, int codec, int file_format);
+/* external storage state management */
+int mm_camcorder_manage_external_storage_state(MMHandleType camcorder, int storage_state);
+
/**
@}
*/