[Release version 0.10.24] Support tizenipcsrc and rename some internal APIs
[platform/core/multimedia/libmm-camcorder.git] / src / include / mm_camcorder.h
index 6eb962b..347e2da 100644 (file)
@@ -727,22 +727,31 @@ extern "C" {
 
 /**
  * Frames per second. This is an integer field
- * 
+ *
  */
 #define MMCAM_CAMERA_FPS                        "camera-fps"
 
 /**
- * Width of input video stream.
+ * Width of preview stream.
  */
 #define MMCAM_CAMERA_WIDTH                      "camera-width"
 
 /**
- * Height of input video stream.
- * @see                
+ * Height of preview stream.
  */
 #define MMCAM_CAMERA_HEIGHT                     "camera-height"
 
 /**
+ * Width of video stream.
+ */
+#define MMCAM_VIDEO_WIDTH                       "video-width"
+
+/**
+ * Height of video stream.
+ */
+#define MMCAM_VIDEO_HEIGHT                      "video-height"
+
+/**
  * Digital zoom level.
  */
 #define MMCAM_CAMERA_DIGITAL_ZOOM               "camera-digital-zoom"
@@ -1176,48 +1185,62 @@ extern "C" {
 /**
  * Recommend rotation of display
  */
-#define MMCAM_RECOMMEND_DISPLAY_ROTATION               "recommend-display-rotation"
+#define MMCAM_RECOMMEND_DISPLAY_ROTATION        "recommend-display-rotation"
 
 /**
  * Recommend width of camera preview.
  * This attribute can be used with #mm_camcorder_get_attribute_info and #MMCamcorderPreviewType.
  * @see                mm_camcorder_get_attribute_info, MMCamcorderPreviewType
  */
-#define MMCAM_RECOMMEND_CAMERA_WIDTH                   "recommend-camera-width"
+#define MMCAM_RECOMMEND_CAMERA_WIDTH            "recommend-camera-width"
 
 /**
  * Recommend height of camera preview
  * This attribute can be used with #mm_camcorder_get_attribute_info and #MMCamcorderPreviewType.
  * @see                mm_camcorder_get_attribute_info, MMCamcorderPreviewType
  */
-#define MMCAM_RECOMMEND_CAMERA_HEIGHT                  "recommend-camera-height"
+#define MMCAM_RECOMMEND_CAMERA_HEIGHT           "recommend-camera-height"
 
 /**
  * Flip of video input stream.
  * @see                MMFlipType (in mm_types.h)
  */
-#define MMCAM_CAMERA_FLIP                              "camera-flip"
+#define MMCAM_CAMERA_FLIP                       "camera-flip"
 
 /**
- * X coordinate of Face zoom.
+ * Support Zero Shutter Lag capture
  */
-#define MMCAM_CAMERA_FACE_ZOOM_X                      "camera-face-zoom-x"
+#define MMCAM_SUPPORT_ZSL_CAPTURE               "support-zsl-capture"
+
+/**
+* Support zero copy format
+*/
+#define MMCAM_SUPPORT_ZERO_COPY_FORMAT          "support-zero-copy-format"
 
 /**
- * Y coordinate of Face zoom.
+* Support media packet callback
+*/
+#define MMCAM_SUPPORT_MEDIA_PACKET_PREVIEW_CB   "support-media-packet-preview-cb"
+
+/**
+ * Enable to write tags for recorded file
+ */
+#define MMCAM_RECORDER_TAG_ENABLE               "recorder-tag-enable"
+
+/**
+ * Determines the socket stream path
  */
-#define MMCAM_CAMERA_FACE_ZOOM_Y                      "camera-face-zoom-y"
+#define MMCAM_DISPLAY_SOCKET_PATH               "display-socket-path"
 
 /**
- * Zoom level of Face zoom.
+ * PID for sound focus
  */
-#define MMCAM_CAMERA_FACE_ZOOM_LEVEL                  "camera-face-zoom-level"
+#define MMCAM_PID_FOR_SOUND_FOCUS               "pid-for-sound-focus"
 
 /**
- * Mode of Face zoom.
- * @see                MMCamcorderFaceZoomMode
+ * Root directory of application
  */
-#define MMCAM_CAMERA_FACE_ZOOM_MODE                   "camera-face-zoom-mode"
+#define MMCAM_ROOT_DIRECTORY                    "root-directory"
 
 
 /*=======================================================================================
@@ -1304,10 +1327,10 @@ enum MMCamcorderColorToneType {
 
 /**
  * An enumeration for white balance. White Balance is the control that adjusts
- * the camcorder's color sensitivity to match the prevailing color of white 
- * outdoor light, yellower indoor light, or (sometimes) greenish fluorescent 
- * light. White balance may be set either automatically or manually. White balance 
- * may be set "incorrectly" on purpose to achieve special effects. 
+ * the camcorder's color sensitivity to match the prevailing color of white
+ * outdoor light, yellower indoor light, or (sometimes) greenish fluorescent
+ * light. White balance may be set either automatically or manually. White balance
+ * may be set "incorrectly" on purpose to achieve special effects.
  */
 enum MMCamcorderWhiteBalanceType {
        MM_CAMCORDER_WHITE_BALANCE_NONE = 0,            /**< None */
@@ -1320,13 +1343,12 @@ enum MMCamcorderWhiteBalanceType {
        MM_CAMCORDER_WHITE_BALANCE_HORIZON,             /**< Horizon */
        MM_CAMCORDER_WHITE_BALANCE_FLASH,               /**< Flash */
        MM_CAMCORDER_WHITE_BALANCE_CUSTOM,              /**< Custom */
-       
 };
 
 
 /**
  * An enumeration for scene mode. Scene mode gives the environment condition
- * for operating camcorder. The mode of operation can be in daylight, night and 
+ * for operating camcorder. The mode of operation can be in daylight, night and
  * backlight. It can be an automatic setting also.
  */
 enum MMCamcorderSceneModeType {
@@ -1345,6 +1367,7 @@ enum MMCamcorderSceneModeType {
        MM_CAMCORDER_SCENE_MODE_SHOW_WINDOW,    /**< Show window */
        MM_CAMCORDER_SCENE_MODE_CANDLE_LIGHT,   /**< Candle light */
        MM_CAMCORDER_SCENE_MODE_BACKLIGHT,      /**< Backlight */
+       MM_CAMCORDER_SCENE_MODE_AQUA,           /**< Aqua */
 };
 
 
@@ -1353,8 +1376,8 @@ enum MMCamcorderSceneModeType {
  */
 enum MMCamcorderFocusMode {
        MM_CAMCORDER_FOCUS_MODE_NONE = 0,       /**< Focus mode is None */
-       MM_CAMCORDER_FOCUS_MODE_PAN,            /**< Pan focus mode*/   
-       MM_CAMCORDER_FOCUS_MODE_AUTO,           /**< Autofocus mode*/   
+       MM_CAMCORDER_FOCUS_MODE_PAN,            /**< Pan focus mode*/
+       MM_CAMCORDER_FOCUS_MODE_AUTO,           /**< Autofocus mode*/
        MM_CAMCORDER_FOCUS_MODE_MANUAL,         /**< Manual focus mode*/
        MM_CAMCORDER_FOCUS_MODE_TOUCH_AUTO,     /**< Touch Autofocus mode*/
        MM_CAMCORDER_FOCUS_MODE_CONTINUOUS,     /**< Continuous Autofocus mode*/
@@ -1532,19 +1555,12 @@ enum MMCamcorderDetectMode {
 
 
 /**
- * An enumeration for Face zoom mode.
- */
-enum MMCamcorderFaceZoomMode {
-       MM_CAMCORDER_FACE_ZOOM_MODE_OFF = 0,    /**< turn face zoom off */
-       MM_CAMCORDER_FACE_ZOOM_MODE_ON,         /**< turn face zoom on */
-};
-
-/**
  * An enumeration for recommended preview resolution.
  */
 enum MMCamcorderPreviewType {
        MM_CAMCORDER_PREVIEW_TYPE_NORMAL = 0,   /**< normal ratio like 4:3 */
        MM_CAMCORDER_PREVIEW_TYPE_WIDE,         /**< wide ratio like 16:9 */
+       MM_CAMCORDER_PREVIEW_TYPE_SQUARE,       /**< square ratio like 1:1 */
 };
 
 
@@ -1600,6 +1616,7 @@ typedef enum {
        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 */
 } MMCamStreamData;
 
 
@@ -1615,7 +1632,7 @@ typedef struct {
        MMCamAttrsValidType validity_type;
 
        /**
-        * A union that describes validity of the attribute. 
+        * A union that describes validity of the attribute.
         * Only when type is 'MM_CAM_ATTRS_TYPE_INT' or 'MM_CAM_ATTRS_TYPE_DOUBLE',
         * the attribute can have validity.
         */
@@ -1676,6 +1693,8 @@ typedef struct {
 /**
  * Structure for video stream data.
  */
+#define BUFFER_MAX_PLANE_NUM 4
+
 typedef struct {
        union {
                struct {
@@ -1696,6 +1715,10 @@ typedef struct {
                        unsigned char *v;
                        unsigned int length_v;
                } yuv420p, yuv422p;
+               struct {
+                       unsigned char *data;
+                       unsigned int length_data;
+               } encoded;
        } data;                         /**< pointer of captured stream */
        MMCamStreamData data_type;      /**< data type */
        unsigned int length_total;      /**< total length of stream buffer (in byte)*/
@@ -1704,6 +1727,10 @@ typedef struct {
        int width;                      /**< width of video buffer */
        int height;                     /**< height of video buffer */
        unsigned int timestamp;         /**< timestamp of stream buffer (msec)*/
+       void *bo[BUFFER_MAX_PLANE_NUM]; /**< TBM buffer object */
+       void *internal_buffer;          /**< Internal buffer pointer */
+       int stride[BUFFER_MAX_PLANE_NUM];    /**< Stride of each plane */
+       int elevation[BUFFER_MAX_PLANE_NUM]; /**< Elevation of each plane */
 } MMCamcorderVideoStreamDataType;
 
 
@@ -1756,6 +1783,21 @@ typedef struct _MMCamFaceDetectInfo {
        MMCamFaceInfo *face_info;               /**< face information, this should be freed after use it. */
 } MMCamFaceDetectInfo;
 
+#ifdef HAVE_WAYLAND
+/**
+ * Wayland information
+ */
+typedef struct _MMCamWaylandInfo {
+       void *evas_obj;
+       void *window;
+       void *surface;
+       void *display;
+       int window_x;
+       int window_y;
+       int window_width;
+       int window_height;
+} MMCamWaylandInfo;
+#endif /* HAVE_WAYLAND */
 
 /*=======================================================================================
 | TYPE DEFINITIONS                                                                     |
@@ -3010,6 +3052,48 @@ int mm_camcorder_get_attribute_info(MMHandleType camcorder, const char *attribut
 
 
 /**
+ *    mm_camcorder_get_fps_list_by_resolution:\n
+ *  Get detail information of the fps configure. To manager fps, an user may want to know the supported fps list by the current preview resolution,
+ *  Gives attribute information structure, from the configure data.
+ *  Depending on the 'validity_type', validity union would be different. To know about the type of union, please refer 'MMCamAttrsInfo'.
+ *
+ *     @param[in]      camcorder       Specifies the camcorder  handle.
+ *     @param[in]      width   width value of the current Preview resolution.
+ *     @param[in]      height  height value of the current Preview resolution.
+ *     @param[out]     fps_info                a structure that holds information related with the attribute.
+ *     @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.
+ *     @pre            None
+ *     @post           None
+ *     @remarks        If the function succeeds, 'info' holds detail information about the attribute, such as type,
+ *                     flag, validity_type, validity_values, and default values.
+ *     @see            mm_camcorder_get_attributes, mm_camcorder_set_attributes
+ *     @par example
+ *     @code
+
+#include <mm_camcorder.h>
+
+gboolean getting_info_from_attribute()
+{
+       MMCamAttrsInfo info;
+       int err;
+
+       err = mm_camcorder_get_fps_list_by_resolution(handle, width, height, &info);
+       if (err < 0) {
+               printf("Fail to call mm_camcorder_get_attribute_info()");
+               return FALSE;
+       }
+
+       //Now 'info' has many information about 'MMCAM_CAPTURE_HEIGHT'
+
+       return TRUE;
+}
+ *     @endcode
+ */
+int mm_camcorder_get_fps_list_by_resolution(MMHandleType camcorder, int width, int height, MMCamAttrsInfo *fps_info);
+
+
+/**
  *    mm_camcorder_init_focusing:\n
  *  Initialize focusing. \n
  *  This function stops focusing action and adjust the camera lens to initial position.
@@ -3153,6 +3237,26 @@ gboolean stop_autofocus()
 int mm_camcorder_stop_focusing(MMHandleType camcorder);
 
 /**
+ *    mm_camcorder_get_video_caps:
+ *  Stop focusing. This function halts focusing operation.
+ *  This is the function to stop focusing in the middle of the operation.
+ *  So if focusing is already finished or not started yet,
+ *  this function will do nothing.
+ *
+ *     @param[in]      camcorder       A handle of camcorder.
+ *     @return         This function returns zero(MM_ERROR_NONE) on success,
+ *                     or negative value with error code.
+ *                     Please refer 'mm_error.h' to know the exact meaning of the error.
+ *     @see            mm_camcorder_create
+ *     @pre            mm_camcorder_realize() should be called before calling this function.
+ *     @post           None
+ *     @remarks        None
+ *     @par example
+ *     @code
+ */
+int mm_camcorder_get_video_caps(MMHandleType handle, char **caps);
+
+/**
        @}
  */