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_GSTCOMMON_H__
23 #define __MM_CAMCORDER_GSTCOMMON_H__
25 /*=======================================================================================
27 ========================================================================================*/
29 #include "mm_camcorder_configure.h"
35 /*=======================================================================================
36 | GLOBAL DEFINITIONS AND DECLARATIONS FOR CAMCORDER |
37 ========================================================================================*/
39 /*=======================================================================================
41 ========================================================================================*/
43 /*=======================================================================================
45 ========================================================================================*/
47 * Enumerations for AMR bitrate
49 typedef enum _MMCamcorderAMRBitRate {
50 MM_CAMCORDER_MR475, /**< MR475 : 4.75 kbit/s */
51 MM_CAMCORDER_MR515, /**< MR515 : 5.15 kbit/s */
52 MM_CAMCORDER_MR59, /**< MR59 : 5.90 kbit/s */
53 MM_CAMCORDER_MR67, /**< MR67 : 6.70 kbit/s */
54 MM_CAMCORDER_MR74, /**< MR74 : 7.40 kbit/s */
55 MM_CAMCORDER_MR795, /**< MR795 : 7.95 kbit/s */
56 MM_CAMCORDER_MR102, /**< MR102 : 10.20 kbit/s */
57 MM_CAMCORDER_MR122, /**< MR122 : 12.20 kbit/s */
58 MM_CAMCORDER_MRDTX /**< MRDTX */
59 } MMCamcorderAMRBitRate;
64 typedef enum _MMCamcorderEncodebinProfile {
65 MM_CAMCORDER_ENCBIN_PROFILE_VIDEO = 0, /**< Video recording profile */
66 MM_CAMCORDER_ENCBIN_PROFILE_AUDIO, /**< Audio recording profile */
67 MM_CAMCORDER_ENCBIN_PROFILE_IMAGE, /**< Image capture profile */
68 MM_CAMCORDER_ENCBIN_PROFILE_NUM
69 } MMCamcorderEncodebinProfile;
71 /*=======================================================================================
72 | STRUCTURE DEFINITIONS |
73 ========================================================================================*/
76 * @note if name is NULL, not supported.
79 unsigned int prof_id; /**< id of mmcamcorder_profile_attrs_id */
80 unsigned int id; /**< id of value id */
81 char *name; /**< gstreamer element name*/
82 } _MMCamcorderElementName;
84 /*=======================================================================================
85 | CONSTANT DEFINITIONS |
86 ========================================================================================*/
88 /*=======================================================================================
90 ========================================================================================*/
92 /*=======================================================================================
93 | EXTERN GLOBAL VARIABLE |
94 ========================================================================================*/
96 /*=======================================================================================
97 | GLOBAL FUNCTION PROTOTYPES |
98 ========================================================================================*/
101 * This function creates bin of video source.
102 * Basically, main pipeline of camcorder is composed of several bin(a bundle
103 * of elements). Each bin operates its own function. This bin has a roll
104 * inputting video data from camera.
106 * @param[in] handle Handle of camcorder context.
107 * @return This function returns MM_ERROR_NONE on success, or the other values on error.
109 * @see __mmcamcorder_create_preview_pipeline()
111 int _mmcamcorder_create_preview_elements(MMHandleType handle);
114 * This function creates bin of audio source.
115 * Basically, main pipeline of camcorder is composed of several bin(a bundle
116 * of elements). Each bin operates its own function. This bin has a roll
117 * inputting audio data from audio source(such as mike).
119 * @param[in] handle Handle of camcorder context.
120 * @return This function returns MM_ERROR_NONE on success, or the other values on error.
122 * @see __mmcamcorder_create_preview_pipeline()
124 int _mmcamcorder_create_audiosrc_bin(MMHandleType handle);
127 * This function creates outputsink bin.
129 * @param[in] handle Handle of camcorder context.
130 * @param[in] profile profile of encodesinkbin.
131 * @return This function returns MM_ERROR_NONE on success, or the other values on error.
133 * @see __mmcamcorder_create_preview_pipeline()
135 int _mmcamcorder_create_encodesink_bin(MMHandleType handle, MMCamcorderEncodebinProfile profile);
138 * This function creates main pipeline of camcorder.
139 * Basically, main pipeline of camcorder is composed of several bin(a bundle
140 * of elements). And if the appilcation wants to make pipeline working, the
141 * application assemble bin that is proper to that task.
142 * When this function is called, bins that is needed for preview will be composed.
144 * @param[in] handle Handle of camcorder context.
145 * @return This function returns MM_ERROR_NONE on success, or the other values on error.
147 * @see _mmcamcorder_create_pipeline()
149 int _mmcamcorder_create_preview_pipeline(MMHandleType handle);
151 /* plug-in related */
152 void _mmcamcorder_ready_to_encode_callback(GstElement *element, guint size, gpointer handle);
155 int _mmcamcorder_videosink_window_set(MMHandleType handle, type_element *VideosinkElement);
156 int _mmcamcorder_vframe_stablize(MMHandleType handle);
157 gboolean _mmcamcorder_get_device_info(MMHandleType handle);
158 int _mmcamcorder_get_eos_message(MMHandleType handle);
159 void _mmcamcorder_remove_element_handle(MMHandleType handle, void *element, int first_elem, int last_elem);
160 int _mmcamcorder_check_audiocodec_fileformat_compatibility(MMHandleType handle);
161 int _mmcamcorder_check_videocodec_fileformat_compatibility(MMHandleType handle);
162 bool _mmcamcorder_set_display_rotation(MMHandleType handle, int display_rotate, int videosink_index);
163 bool _mmcamcorder_set_display_flip(MMHandleType handle, int display_flip, int videosink_index);
164 bool _mmcamcorder_set_videosrc_rotation(MMHandleType handle, int videosrc_rotate);
165 bool _mmcamcorder_set_videosrc_caps(MMHandleType handle, unsigned int fourcc, int width, int height, int fps, int rotate);
166 bool _mmcamcorder_set_videosrc_flip(MMHandleType handle, int viderosrc_flip);
167 bool _mmcamcorder_set_videosrc_anti_shake(MMHandleType handle, int anti_shake);
168 bool _mmcamcorder_set_videosrc_stabilization(MMHandleType handle, int stabilization);
169 bool _mmcamcorder_set_camera_resolution(MMHandleType handle, int width, int height);
170 bool _mmcamcorder_set_encoded_preview_bitrate(MMHandleType handle, int bitrate);
171 bool _mmcamcorder_set_encoded_preview_gop_interval(MMHandleType handle, int gop);
172 bool _mmcamcorder_set_sound_stream_info(GstElement *element, char *stream_type, int stream_index);
176 #endif /* __MM_CAMCORDER_GSTCOMMON_H__ */