@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
* 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
<td><center><b>Attribute</b></center></td>
<td><center><b>Description</b></center></td>
</tr>
- <tr>
+ <tr>
<td>#MMCAM_MODE</td>
<td>Mode of camcorder ( still/video/audio )</td>
</tr>
<td><center><b>Attribute</b></center></td>
<td><center><b>Description</b></center></td>
</tr>
- <tr>
+ <tr>
<td>#MMCAM_AUDIO_ENCODER_BITRATE</td>
<td>Bitrate of Audio Encoder</td>
</tr>
<td><center><b>Attribute</b></center></td>
<td><center><b>Description</b></center></td>
</tr>
- <tr>
+ <tr>
<td>#MMCAM_IMAGE_ENCODER_QUALITY</td>
<td>Encoding quality of Image codec</td>
</tr>
<td><center><b>Attribute</b></center></td>
<td><center><b>Description</b></center></td>
</tr>
- <tr>
+ <tr>
<td>#MMCAM_AUDIO_VOLUME</td>
<td>Input volume of audio source ( double value )</td>
</tr>
/**
* 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 */
/**
#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.
*
#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"
/**
* 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"
+
+/**
+ * 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_CAMERA_FLIP "camera-flip"
+#define MMCAM_CAMERA_FLIP "camera-flip"
/**
* Support Zero Shutter Lag capture
*/
-#define MMCAM_SUPPORT_ZSL_CAPTURE "support-zsl-capture"
+#define MMCAM_SUPPORT_ZSL_CAPTURE "support-zsl-capture"
/**
* Support zero copy format
*/
-#define MMCAM_SUPPORT_ZERO_COPY_FORMAT "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"
+#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"
+
+/**
+ * Determines the socket stream path
+ */
+#define MMCAM_DISPLAY_SOCKET_PATH "display-socket-path"
+
+/**
+ * Client PID
+ */
+#define MMCAM_CLIENT_PID "client-pid"
+
+/**
+ * Root directory of application
+ */
+#define MMCAM_ROOT_DIRECTORY "root-directory"
+/**
+ * Bitrate for encoded preview stream
+ */
+#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"
+
+/**
+ * The GBbus connection from outside
+ */
+#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 |
/**
* 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;
* 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.*/
* 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 */
/**
* 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;
/**
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_DEPTH, /**< Depth data type - 1 plane */
+ MM_CAM_STREAM_DATA_RGB /**< RGB data type - 1 plane */
} MMCamStreamData;
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.
*/
unsigned char *v;
unsigned int length_v;
} yuv420p, yuv422p;
+ struct {
+ unsigned char *data;
+ unsigned int length_data;
+ 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)*/
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;
/**
+ * 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.
*/
MMCamFaceInfo *face_info; /**< face information, this should be freed after use it. */
} MMCamFaceDetectInfo;
+/**
+ * Window information
+ */
+typedef struct _MMCamWindowInfo {
+ int surface_id;
+ MMRectType rect;
+} MMCamWindowInfo;
+
/*=======================================================================================
| 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
/**
+ * 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 |
========================================================================================*/
/**
* 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.)
*
* 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
* 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.
*
* @param[in] camcorder A handle of camcorder.
* @return This function returns zero(MM_ERROR_NONE) on success, or negative value with error code.\n
* @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
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;
* 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
* 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
/**
* 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.
*
* 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.
return TRUE;
}
- * @endcode
+ * @endcode
*/
int mm_camcorder_set_audio_stream_callback(MMHandleType camcorder, mm_camcorder_audio_stream_callback callback, void *user_data);
/**
+ * 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);
/**
* 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.
/**
* 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.
/**
+ * 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.
* 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.
*
* @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
*/
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);
+
+/* 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);
+
/**
@}
*/