X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Finclude%2Fmm_camcorder.h;h=bd958aec45a97e8fc78a9ca19cc22dec892ce24d;hb=6012f7ec5032f940e8446a7aec9a9ee001ba05c6;hp=6eb962b1871673d53257fd6481c1f1b831c2725c;hpb=9633a958271081da2a660fdc047c23904f40dc07;p=platform%2Fcore%2Fmultimedia%2Flibmm-camcorder.git diff --git a/src/include/mm_camcorder.h b/src/include/mm_camcorder.h index 6eb962b..bd958ae 100644 --- a/src/include/mm_camcorder.h +++ b/src/include/mm_camcorder.h @@ -43,7 +43,7 @@ @par Recording state and paused state exists when the mode of camcorder is - video-capture or audio-capture mode. In case of image-capture mode, CAPTURING state will + video-capture or audio-capture mode. In case of image-capture mode, CAPTURING state will exsit. @par @@ -194,7 +194,7 @@ * Attribute @n Attribute system is an interface to operate camcorder. Depending on each attribute, camcorder behaves differently. Attribute system provides get/set functions. Setting proper attributes, a user can control camcorder as he want. (mm_camcorder_set_attributes()) - Also, a user can comprehend current status of the camcorder, calling getter function(mm_camcorder_get_attributes()). + Also, a user can comprehend current status of the camcorder, calling getter function(mm_camcorder_get_attributes()). Beware, arguments of mm_camcorder_set_attributes() and mm_camcorder_get_attributes() should be finished with 'NULL'. This is a rule for the variable argument. @par @@ -217,7 +217,7 @@
Attribute
Description
- + #MMCAM_MODE Mode of camcorder ( still/video/audio ) @@ -338,7 +338,7 @@
Attribute
Description
- + #MMCAM_AUDIO_ENCODER_BITRATE Bitrate of Audio Encoder @@ -371,7 +371,7 @@
Attribute
Description
- + #MMCAM_IMAGE_ENCODER_QUALITY Encoding quality of Image codec @@ -408,7 +408,7 @@
Attribute
Description
- + #MMCAM_AUDIO_VOLUME Input volume of audio source ( double value ) @@ -621,7 +621,7 @@ extern "C" { /** * Set fraction value. Definition for fraction setting, such as MMCAM_CAMERA_SHUTTER_SPEED and MMCAM_CAMERA_EXPOSURE_VALUE. */ -#define MM_CAMCORDER_SET_FRACTION(numerator,denominator) ((int)((((int)(numerator)) << 16) | (int)(denominator))) +#define MM_CAMCORDER_SET_FRACTION(numerator, denominator) ((int)((((int)(numerator)) << 16) | (int)(denominator))) /* Attributes Macros */ /** @@ -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" @@ -914,7 +923,7 @@ extern "C" { #define MMCAM_FILTER_SHARPNESS "filter-sharpness" /** - * Pixel format that you want to capture. If you set MM_PIXEL_FORMAT_ENCODED, + * Pixel format that you want to capture. If you set MM_PIXEL_FORMAT_ENCODED, * the result will be encoded by image codec specified in #MMCAM_IMAGE_ENCODER. * If not, the result will be raw data. * @@ -1083,7 +1092,7 @@ extern "C" { #define MMCAM_TARGET_MAX_SIZE "target-max-size" /** - * Time limit(Second) of recording file. If the elapsed time of recording reaches this value, + * Time limit(Second) of recording file. If the elapsed time of recording reaches this value, * camcorder will send 'MM_MESSAGE_CAMCORDER_TIME_LIMIT' message. */ #define MMCAM_TARGET_TIME_LIMIT "target-time-limit" @@ -1176,49 +1185,109 @@ 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" + +/** + * Support Zero Shutter Lag capture + */ +#define MMCAM_SUPPORT_ZSL_CAPTURE "support-zsl-capture" + +/** +* Support zero copy format +*/ +#define MMCAM_SUPPORT_ZERO_COPY_FORMAT "support-zero-copy-format" + +/** +* 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" /** - * X coordinate of Face zoom. + * Determines the socket stream path */ -#define MMCAM_CAMERA_FACE_ZOOM_X "camera-face-zoom-x" +#define MMCAM_DISPLAY_SOCKET_PATH "display-socket-path" /** - * Y coordinate of Face zoom. + * PID for sound focus */ -#define MMCAM_CAMERA_FACE_ZOOM_Y "camera-face-zoom-y" +#define MMCAM_PID_FOR_SOUND_FOCUS "pid-for-sound-focus" /** - * Zoom level of Face zoom. + * Root directory of application */ -#define MMCAM_CAMERA_FACE_ZOOM_LEVEL "camera-face-zoom-level" +#define MMCAM_ROOT_DIRECTORY "root-directory" /** - * Mode of Face zoom. - * @see MMCamcorderFaceZoomMode + * Bitrate for encoded preview stream */ -#define MMCAM_CAMERA_FACE_ZOOM_MODE "camera-face-zoom-mode" +#define MMCAM_ENCODED_PREVIEW_BITRATE "encoded-preview-bitrate" +/** + * GOP interval for encoded preview stream + */ +#define MMCAM_ENCODED_PREVIEW_GOP_INTERVAL "encoded-preview-gop-interval" + +/** + * The distance to move the camera horizontally and physically + */ +#define MMCAM_CAMERA_PAN_MECHA "camera-pan-mecha" + +/** + * The distance to move the camera horizontally + */ +#define MMCAM_CAMERA_PAN_ELEC "camera-pan-elec" + +/** + * The distance to move the camera vertically and physically + */ +#define MMCAM_CAMERA_TILT_MECHA "camera-tilt-mecha" + +/** + * The distance to move the camera vertically + */ +#define MMCAM_CAMERA_TILT_ELEC "camera-tilt-elec" + +/** + * The type of PTZ(Pan Tilt Zoom). Mechanical or Electonic PTZ. + */ +#define MMCAM_CAMERA_PTZ_TYPE "camera-ptz-type" + +/** + * Stream type and index for sound route + */ +#define MMCAM_SOUND_STREAM_TYPE "sound-stream-type" +#define MMCAM_SOUND_STREAM_INDEX "sound-stream-index" + +/** + * The display reuse flag and sink element pointer + */ +#define MMCAM_DISPLAY_REUSE_HINT "display-reuse-hint" +#define MMCAM_DISPLAY_REUSE_ELEMENT "display-reuse-element" /*======================================================================================= | ENUM DEFINITIONS | @@ -1257,8 +1326,7 @@ typedef enum { /** * An enumeration of Audio Format. */ -typedef enum -{ +typedef enum { MM_CAMCORDER_AUDIO_FORMAT_PCM_U8 = 0, /**< unsigned 8bit audio */ MM_CAMCORDER_AUDIO_FORMAT_PCM_S16_LE = 2, /**< signed 16bit audio. Little endian. */ } MMCamcorderAudioFormat; @@ -1304,10 +1372,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 +1388,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 +1412,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 +1421,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*/ @@ -1474,7 +1542,7 @@ enum MMCamcorderGeometryMethod { * An enumeration for orientation values of tag . */ enum MMCamcorderTagOrientation { - MM_CAMCORDER_TAG_ORT_NONE =0, /**< No Orientation.*/ + MM_CAMCORDER_TAG_ORT_NONE = 0, /**< No Orientation.*/ MM_CAMCORDER_TAG_ORT_0R_VT_0C_VL, /**< The 0th row is at the visual top of the image, and the 0th column is the visual left-hand side.*/ MM_CAMCORDER_TAG_ORT_0R_VT_0C_VR, /**< The 0th row is at the visual top of the image, and the 0th column is the visual right-hand side.*/ MM_CAMCORDER_TAG_ORT_0R_VB_0C_VR, /**< The 0th row is at the visual bottom of the image, and the 0th column is the visual right-hand side.*/ @@ -1489,7 +1557,7 @@ enum MMCamcorderTagOrientation { * An enumeration for captured video orientation values of tag . */ enum MMCamcorderTagVideoOrientation { - MM_CAMCORDER_TAG_VIDEO_ORT_NONE =0, /**< No Orientation.*/ + MM_CAMCORDER_TAG_VIDEO_ORT_NONE = 0, /**< No Orientation.*/ MM_CAMCORDER_TAG_VIDEO_ORT_90, /**< 90 degree */ MM_CAMCORDER_TAG_VIDEO_ORT_180, /**< 180 degree */ MM_CAMCORDER_TAG_VIDEO_ORT_270, /**< 270 degree */ @@ -1532,19 +1600,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 */ }; @@ -1554,13 +1615,13 @@ enum MMCamcorderPreviewType { /** * An enumeration for attribute values types. */ -typedef enum{ +typedef enum { MM_CAM_ATTRS_TYPE_INVALID = -1, /**< Type is invalid */ MM_CAM_ATTRS_TYPE_INT, /**< Integer type attribute */ MM_CAM_ATTRS_TYPE_DOUBLE, /**< Double type attribute */ MM_CAM_ATTRS_TYPE_STRING, /**< UTF-8 String type attribute */ MM_CAM_ATTRS_TYPE_DATA, /**< Pointer type attribute */ -}MMCamAttrsType; +} MMCamAttrsType; /** @@ -1600,6 +1661,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 +1677,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 +1738,8 @@ typedef struct { /** * Structure for video stream data. */ +#define BUFFER_MAX_PLANE_NUM 4 + typedef struct { union { struct { @@ -1696,6 +1760,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 +1772,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,16 +1828,28 @@ typedef struct _MMCamFaceDetectInfo { MMCamFaceInfo *face_info; /**< face information, this should be freed after use it. */ } MMCamFaceDetectInfo; +/** + * Wayland information + */ +typedef struct _MMCamWaylandInfo { + int global_surface_id; + int window_x; + int window_y; + int window_width; + int window_height; + void *evas_obj; +} MMCamWaylandInfo; + /*======================================================================================= | TYPE DEFINITIONS | ========================================================================================*/ /** * Function definition for video stream callback. - * Be careful! In this function, you can't call functions that change the state of camcorder such as mm_camcorder_stop(), + * 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 preview or occur timeout error from video source. - * Also, you're not allowed to call mm_camcorder_stop() even in other context, while you're hanging this function. + * Please don't hang this function long. It may cause low performance of preview or occur timeout error from video source. + * Also, you're not allowed to call mm_camcorder_stop() even in other context, while you're hanging this function. * I recommend to you releasing this function ASAP. * * @param[in] stream Reference pointer to video stream data @@ -1809,12 +1893,12 @@ typedef gboolean (*mm_camcorder_video_capture_callback)(MMCamcorderCaptureDataTy ========================================================================================*/ /** * mm_camcorder_create:\n - * Create camcorder object. This is the function that an user who wants to use mm_camcorder calls first. + * Create camcorder object. This is the function that an user who wants to use mm_camcorder calls first. * This function creates handle structure and initialize mutex, attributes, gstreamer. - * When this function success, it will return a handle of newly created object. + * When this function success, it will return a handle of newly created object. * A user have to put the handle when he calls every function of mm_camcorder. \n * Second argument of this function is the field to decribe pre-setting information of mm_camcorder such as which camera device it will use. - * Normally, MM_VIDEO_DEVICE_CAMERA0 is for Main camera(or Mega camera, Back camera), + * Normally, MM_VIDEO_DEVICE_CAMERA0 is for Main camera(or Mega camera, Back camera), * and MM_VIDEO_DEVICE_CAMERA1 is for VGA camera (or Front camera). If you want audio recording, * please set MM_VIDEO_DEVICE_NONE. (No camera device is needed.) * @@ -1866,7 +1950,7 @@ int mm_camcorder_create(MMHandleType *camcorder, MMCamPreset *info); * This is the finalizing function of mm_camcorder. If this function is not called or fails to call, the handle isn't released fully. * This function releases attributes, mutexes, sessions, and handle itself. This function also removes all of remaining messages. * So if your application should wait a certain message of mm_camcorder, please wait to call this function till getting the message. - * + * * * @param[in] camcorder A handle of camcorder. * @return This function returns zero(MM_ERROR_NONE) on success, or negative value with error code.\n @@ -2104,7 +2188,7 @@ int mm_camcorder_realize(MMHandleType camcorder); * mm_camcorder_unrealize:\n * Uninitialize camcoder resources and free allocated memory. * 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, + * 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. @@ -2415,7 +2499,7 @@ int mm_camcorder_stop(MMHandleType camcorder); * @pre Previous state of mm-camcorder should be MM_CAMCORDER_STATE_PREPARE * @post Next state of mm-camcorder will be MM_CAMCORDER_STATE_CAPTURING * @remarks To call this function, preview should be started successfully.\n - * This function is a pair of mm_camcorder_capture_stop(). + * This function is a pair of mm_camcorder_capture_stop(). * So user should call mm_camcorder_capture_stop() after getting captured image. * @par example * @code @@ -2427,7 +2511,7 @@ gboolean capturing_picture() int err; err = mm_camcorder_capture_start(hcam); - if (err < 0) + if (err < 0) { printf("Fail to call mm_camcorder_capture_start = %x\n", err); return FALSE; @@ -2589,8 +2673,8 @@ int mm_camcorder_pause(MMHandleType camcorder); * Some encoder or muxer require a certain type of finalizing such as adding some information to header. * This function takes that roll. So if you don't call this function after recording, the result file may not be playable.\n * After committing successfully, camcorder resumes displaying preview (video recording case). - * Because this is the function for saving the recording result, the operation is available - * only when the mode of camcorder is MM_CAMCORDER_MODE_AUDIO or MM_CAMCORDER_MODE_VIDEO. + * Because this is the function for saving the recording result, the operation is available + * only when the mode of camcorder is MM_CAMCORDER_MODE_AUDIO or MM_CAMCORDER_MODE_VIDEO. * * @param[in] camcorder A handle of camcorder. * @return This function returns zero(MM_ERROR_NONE) on success, or negative value with error code.\n @@ -2641,8 +2725,8 @@ int mm_camcorder_commit(MMHandleType camcorder); * When a user want to finish recording without saving the result file, this function can be used. * Like mm_camcorder_commit(), this function also stops recording, release related resources(like codec) ,and goes back to preview status. * However, instead of saving file, this function unlinks(delete) the result.\n - * Because this is the function for canceling recording, the operation is available - * only when mode is MM_CAMCORDER_MODE_AUDIO or MM_CAMCORDER_MODE_VIDEO. + * Because this is the function for canceling recording, the operation is available + * only when mode is MM_CAMCORDER_MODE_AUDIO or MM_CAMCORDER_MODE_VIDEO. * * @param[in] camcorder A handle of camcorder. * @return This function returns zero(MM_ERROR_NONE) on success, or negative value with error code.\n @@ -2722,7 +2806,7 @@ int mm_camcorder_set_message_callback(MMHandleType camcorder, MMMessageCallback /** * mm_camcorder_set_video_stream_callback:\n * Set callback for user defined video stream callback function. - * Users can retrieve video frame using registered callback. + * Users can retrieve video frame using registered callback. * The callback function holds the same buffer that will be drawed on the display device. * So if an user change the buffer, it will be displayed on the device. * @@ -2758,7 +2842,7 @@ int mm_camcorder_set_video_stream_callback(MMHandleType camcorder, mm_camcorder_ * mm_camcorder deliever captured image through the callback.\n * Normally, this function provides main captured image and thumnail image. But depending on the environment, * thumnail would not be available. Information related with main captured image and thumnail image is also included - * in the argument of the callback function. + * in the argument of the callback function. * For more detail information of callback, please refer 'mm_camcorder_video_capture_callback'. * * @param[in] camcorder A handle of camcorder. @@ -2815,7 +2899,7 @@ gboolean setting_audio_stream_callback() return TRUE; } - * @endcode + * @endcode */ int mm_camcorder_set_audio_stream_callback(MMHandleType camcorder, mm_camcorder_audio_stream_callback callback, void *user_data); @@ -2858,7 +2942,7 @@ int mm_camcorder_get_state(MMHandleType camcorder, MMCamcorderStateType *state); /** * mm_camcorder_get_attributes:\n * Get attributes of camcorder with given attribute names. This function can get multiple attributes - * simultaneously. If one of attribute fails, this function will stop at the point. + * simultaneously. If one of attribute fails, this function will stop at the point. * 'err_attr_name' let you know the name of the attribute. * * @param[in] camcorder Specifies the camcorder handle. @@ -2906,7 +2990,7 @@ int mm_camcorder_get_attributes(MMHandleType camcorder, char **err_attr_name, c /** * mm_camcorder_set_attributes:\n * Set attributes of camcorder with given attribute names. This function can set multiple attributes - * simultaneously. If one of attribute fails, this function will stop at the point. + * simultaneously. If one of attribute fails, this function will stop at the point. * 'err_attr_name' let you know the name of the attribute. * * @param[in] camcorder Specifies the camcorder handle. @@ -3010,6 +3094,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 + +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. @@ -3068,8 +3194,8 @@ int mm_camcorder_init_focusing(MMHandleType camcorder); * Start focusing. \n * This function command to start focusing opeartion. Because focusing operation depends on mechanic or electric module, * it may take small amount of time. (For ex, 500ms ~ 3sec). \n - * This function works asynchronously. When an user call this function, it will return immediately. - * However, focusing operation will continue until it gets results. + * This function works asynchronously. When an user call this function, it will return immediately. + * However, focusing operation will continue until it gets results. * After finishing operation, you can get 'MM_MESSAGE_CAMCORDER_FOCUS_CHANGED' message. * 'param.code' of the message structure describes the fucusing was success or not. * @@ -3130,7 +3256,7 @@ int mm_camcorder_start_focusing(MMHandleType camcorder); * @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_init_focusing, mm_camcorder_start_focusing - * @pre mm_camcorder_start_focusing() should be called before calling this function. + * @pre mm_camcorder_start_focusing() should be called before calling this function. * @post None * @remarks None * @par example @@ -3152,6 +3278,10 @@ gboolean stop_autofocus() */ int mm_camcorder_stop_focusing(MMHandleType camcorder); +/* emit signal */ +void mm_camcorder_emit_signal(MMHandleType camcorder, const char *object_name, + const char *interface_name, const char *signal_name, int value); + /** @} */