X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Finclude%2Fmm_camcorder.h;h=9ad8416eee6b5cee40e6a28334a1684b34a947c5;hb=refs%2Fchanges%2F81%2F188781%2F2;hp=10f589cf1f04280c11e51918ffb4d36da6ae41b5;hpb=82c2496f7c00323b5b781d558447bd9d977e31a9;p=platform%2Fcore%2Fmultimedia%2Flibmm-camcorder.git diff --git a/src/include/mm_camcorder.h b/src/include/mm_camcorder.h index 10f589c..9ad8416 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 @@ -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 */ /** @@ -1202,6 +1202,11 @@ extern "C" { #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) */ @@ -1233,9 +1238,9 @@ extern "C" { #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 @@ -1250,7 +1255,59 @@ extern "C" { /** * GOP interval for encoded preview stream */ -#define MMCAM_ENCODED_PREVIEW_GOP_INTERVAL "encoded-preview-gop-interval" +#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 | @@ -1289,8 +1346,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; @@ -1506,7 +1562,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.*/ @@ -1521,7 +1577,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 */ @@ -1579,13 +1635,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; /** @@ -1625,7 +1681,9 @@ 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 */ + 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; @@ -1727,7 +1785,7 @@ typedef struct { struct { unsigned char *data; unsigned int length_data; - } encoded; + } encoded, depth, rgb; } data; /**< pointer of captured stream */ MMCamStreamData data_type; /**< data type */ unsigned int length_total; /**< total length of stream buffer (in byte)*/ @@ -1757,6 +1815,16 @@ typedef struct { /** + * 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. */ @@ -1792,19 +1860,6 @@ typedef struct _MMCamFaceDetectInfo { MMCamFaceInfo *face_info; /**< face information, this should be freed after use it. */ } MMCamFaceDetectInfo; -#ifdef HAVE_WAYLAND -/** - * 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; -#endif /* HAVE_WAYLAND */ /*======================================================================================= | TYPE DEFINITIONS | @@ -1841,6 +1896,21 @@ typedef gboolean (*mm_camcorder_audio_stream_callback)(MMCamcorderAudioStreamDat /** + * 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. * @@ -1915,7 +1985,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 @@ -2155,8 +2225,6 @@ int mm_camcorder_realize(MMHandleType camcorder); * 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 @@ -2464,7 +2532,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 @@ -2476,7 +2544,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; @@ -2864,12 +2932,44 @@ 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); /** + * 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 + +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_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. @@ -2902,6 +3002,7 @@ gboolean get_state_of_camcorder() * @endcode */ int mm_camcorder_get_state(MMHandleType camcorder, MMCamcorderStateType *state); +int mm_camcorder_get_state2(MMHandleType camcorder, MMCamcorderStateType *state, MMCamcorderStateType *old_state); /** @@ -3243,25 +3344,15 @@ 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); +/* 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); /** @}