4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Jeongmo Yang <jm80.yang@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
22 #ifndef __MM_CAMCORDER_STILLSHOT_H__
23 #define __MM_CAMCORDER_STILLSHOT_H__
25 /*=======================================================================================
27 ========================================================================================*/
35 /*=======================================================================================
36 | GLOBAL DEFINITIONS AND DECLARATIONS FOR CAMCORDER |
37 ========================================================================================*/
39 /*=======================================================================================
41 ========================================================================================*/
42 #define _MMCAMCORDER_CAPTURE_STOP_CHECK_INTERVAL (50*1000)
43 #define _MMCAMCORDER_CAPTURE_STOP_CHECK_COUNT 60
45 #define _MNOTE_VALUE_NONE 0
46 #define _SOUND_STATUS_INIT -1
48 /*=======================================================================================
50 ========================================================================================*/
53 /*=======================================================================================
54 | STRUCTURE DEFINITIONS |
55 ========================================================================================*/
57 * MMCamcorder information for image(preview/capture) mode
60 int type; /**< Still-shot/Multi-shot */
61 int count; /**< Multi-shot capture count */
62 int capture_cur_count; /**< Multi-shot capture current count */
63 int capture_send_count; /**< Multi-shot capture send count */
64 unsigned long long next_shot_time; /**< next still capture time */
65 gboolean multi_shot_stop; /**< Multi-shot stop flag */
66 gboolean capturing; /**< whether MSL is on capturing */
67 gboolean resolution_change; /**< whether on resolution changing for capturing. After changing to capture resolution, it sets to FALSE again. */
68 int width; /**< Width of capture image */
69 int height; /**< Height of capture image */
70 int interval; /**< Capture interval */
71 int preview_format; /**< Preview format */
72 int capture_format; /**< Capture format */
73 int hdr_capture_mode; /**< HDR Capture mode */
74 gboolean sound_status; /**< sound status of system */
75 gboolean played_capture_sound; /**< whether play capture sound when capture starts */
76 } _MMCamcorderImageInfo;
78 /*=======================================================================================
79 | CONSTANT DEFINITIONS |
80 ========================================================================================*/
82 /*=======================================================================================
84 ========================================================================================*/
86 /*=======================================================================================
87 | EXTERN GLOBAL VARIABLE |
88 ========================================================================================*/
90 /*=======================================================================================
91 | GLOBAL FUNCTION PROTOTYPES |
92 ========================================================================================*/
93 int _mmcamcorder_prepare_capture_mode_camera_control(MMHandleType handle);
94 int _mmcamcorder_prepare_capture_mode_encodebin(MMHandleType handle);
95 int _mmcamcorder_prepare_capture_mode_image_pad(MMHandleType handle);
97 int _mmcamcorder_unprepare_capture_mode_encodebin(MMHandleType handle);
100 * This function destroy image pipeline.
102 * @param[in] handle Handle of camcorder context.
105 * @see _mmcamcorder_destroy_pipeline()
108 void _mmcamcorder_destroy_video_capture_pipeline(MMHandleType handle);
109 int _mmcamcorder_video_capture_command(MMHandleType handle, int command);
111 /* Function for capture */
112 int __mmcamcorder_set_exif_basic_info(MMHandleType handle, int image_width, int image_height);
113 int __mmcamcorder_update_exif_info(MMHandleType handle, void *imagedata, int imgln);
114 void __mmcamcorder_init_stillshot_info(MMHandleType handle);
115 void __mmcamcorder_get_capture_data_from_buffer(MMCamcorderCaptureDataType *capture_data, int pixtype, GstSample *sample);
116 void __mmcamcorder_release_jpeg_data(MMHandleType handle, MMCamcorderCaptureDataType *dest, int tag_enable, int provide_exif);
117 int __mmcamcorder_capture_save_exifinfo(MMHandleType handle, MMCamcorderCaptureDataType *original, MMCamcorderCaptureDataType *thumbnail, int provide_exif);
118 int __mmcamcorder_set_jpeg_data(MMHandleType handle, MMCamcorderCaptureDataType *dest, MMCamcorderCaptureDataType *thumbnail, int provide_exif);
119 gboolean __mmcamcorder_handoff_callback_capture(GstElement *fakesink, GstBuffer *buffer, GstPad *pad, gpointer u_data);
120 gboolean __mmcamcorder_handoff_callback_extra_preview(GstElement *fakesink, GstBuffer *buffer, GstPad *pad, gpointer u_data);
123 int _mmcamcorder_initialize_extra_preview(MMHandleType handle);
124 int _mmcamcorder_set_extra_preview_stream_format(MMHandleType camcorder, int stream_id, int pixel_format, int width, int height, int fps);
125 int _mmcamcorder_get_extra_preview_stream_format(MMHandleType camcorder, int stream_id, int *pixel_format, int *width, int *height, int *fps);
126 int _mmcamcorder_set_extra_preview_bitrate(MMHandleType camcorder, int stream_id, int bitrate);
127 int _mmcamcorder_get_extra_preview_bitrate(MMHandleType camcorder, int stream_id, int *bitrate);
128 int _mmcamcorder_set_extra_preview_gop_interval(MMHandleType camcorder, int stream_id, int interval);
129 int _mmcamcorder_get_extra_preview_gop_interval(MMHandleType camcorder, int stream_id, int *interval);
135 #endif /* __MM_CAMCORDER_STILLSHOT_H__ */