clean up for 2.0 beta
[platform/core/multimedia/libmm-player.git] / src / include / mm_player_internal.h
1 /*
2  * libmm-player
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: JongHyuk Choi <jhchoi.choi@samsung.com>, YeJin Cho <cho.yejin@samsung.com>, YoungHwan An <younghwan_.an@samsung.com>
7  *
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
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
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.
19  *
20  */
21
22 #ifndef __MM_PLAYER_INTERNAL_H__
23 #define __MM_PLAYER_INTERNAL_H__
24
25 #include <mm_types.h>
26
27 #ifdef __cplusplus
28         extern "C" {
29 #endif
30
31 /**
32         @addtogroup PLAYER-INTERNAL
33         @{
34
35         @par
36         <div><table>
37         <tr>
38         <td>PROPERTY</td>
39         <td>TYPE</td>
40         <td>VALID TYPE</td>
41         <td>DEFAULT VALUE</td>
42         </tr>
43         <tr>
44         <td>"display_roi_x"</td>
45         <td>int</td>
46         <td>range</td>
47         <td>0</td>
48         </tr>
49         <tr>
50         <td>"display_roi_y"</td>
51         <td>int</td>
52         <td>range</td>
53         <td>0</td>
54         </tr>
55         <tr>
56         <td>"display_roi_width"</td>
57         <td>int</td>
58         <td>range</td>
59         <td>640</td>
60         </tr>
61         <tr>
62         <td>"display_roi_height"</td>
63         <td>int</td>
64         <td>range</td>
65         <td>480</td>
66         </tr>
67         <tr>
68         <td>"display_method"</td>
69         <td>int</td>
70         <td>range</td>
71         <td>MM_DISPLAY_METHOD_LETTER_BOX</td>
72         </tr>
73         <tr>
74         <td>"sound_volume_type"</td>
75         <td>int</td>
76         <td>range</td>
77         <td>MM_SOUND_VOLUME_TYPE_CALL</td>
78         </tr>
79         <tr>
80         <td>"sound_route"</td>
81         <td>int</td>
82         <td>range</td>
83         <td>MM_AUDIOROUTE_USE_EXTERNAL_SETTING</td>
84         </tr>
85         <tr>
86         <td>"sound_stop_when_unplugged"</td>
87         <td>int</td>
88         <td>range</td>
89         </tr>
90         </table></div>
91
92 */
93
94 /*
95  * Enumerations of video colorspace
96  */
97 typedef enum {
98     MM_PLAYER_COLORSPACE_I420 = 0,              /**< I420 format - planer */
99     MM_PLAYER_COLORSPACE_RGB888,                        /**< RGB888 pixel format */
100     MM_PLAYER_COLORSPACE_NV12_TILED,            /**< Customized color format in s5pc110 */
101 }MMPlayerVideoColorspace;
102
103 typedef struct
104 {
105         unsigned char *data;                                    /* capture image buffer */
106         int size;                                                               /* capture image size */
107         MMPlayerVideoColorspace fmt;                    /* color space type */  
108 } MMPlayerVideoCapture;
109
110 /**
111  * Buffer need data callback function type.
112  *
113  * @param       size            [in]    size required for the buffer playback
114  * @param       user_param      [in]    User defined parameter which is passed when set
115  *                                                              to need data callback
116  *
117  * @return      This callback function have to return MM_ERROR_NONE.
118  */
119 typedef bool    (*mm_player_buffer_need_data_callback) (unsigned int size, void *user_param);
120
121 /**
122  * Buffer enough data callback function type.
123  *
124  * @param       user_param      [in]    User defined parameter which is passed when set
125  *                                                              to enough data callback
126  *
127  * @return      This callback function have to return MM_ERROR_NONE.
128  */
129 typedef bool    (*mm_player_buffer_enough_data_callback) (void *user_param);
130
131 /**
132  * Buffer seek data callback function type.
133  *
134  * @param       offset                  [in]    offset for the buffer playback
135  * @param       user_param              [in]    User defined parameter which is passed when set
136  *                                                                      to seek data callback
137  *
138  * @return      This callback function have to return MM_ERROR_NONE.
139  */
140 typedef bool    (*mm_player_buffer_seek_data_callback) (unsigned long long offset, void *user_param);
141
142 /**
143  * Video stream callback function type.
144  *
145  * @param       stream          [in]    Reference pointer to video frame data
146  * @param       stream_size     [in]    Size of video frame data
147  * @param       user_param      [in]    User defined parameter which is passed when set
148  *                                                              video stream callback
149  * @param       width           [in]    width of video frame
150  * @param       height          [in]    height of video frame                                                   
151  *
152  * @return      This callback function have to return MM_ERROR_NONE.
153  */
154 typedef bool    (*mm_player_video_stream_callback) (void *stream, int stream_size, void *user_param, int width, int height);
155
156 /**
157  * Audio stream callback function type.
158  *
159  * @param       stream          [in]    Reference pointer to audio frame data
160  * @param       stream_size     [in]    Size of audio frame data
161  * @param       user_param      [in]    User defined parameter which is passed when set
162  *                                                              audio stream callback
163  *
164  * @return      This callback function have to return MM_ERROR_NONE.
165  */
166 typedef bool    (*mm_player_video_capture_callback) (void *stream, int stream_size, void *user_param);
167
168 /**
169  * This function is to set play speed for playback.
170  *
171  * @param       player          [in]    Handle of player.
172  * @param       ratio           [in]    Speed for playback.
173  *
174  * @return      This function returns zero on success, or negative value with error
175  *                      code
176  * @remark      The current supported range is from -64x to 64x. 
177  *              But, the quailty is dependent on codec performance.
178  *              And, the sound is muted under normal speed and more than double speed.  
179  * @see
180  * @since
181  */
182 int mm_player_set_play_speed(MMHandleType player, float rate);
183
184 /**
185  * This function set callback function for receiving video stream from player.
186  *
187  * @param       player          [in]    Handle of player.
188  * @param       callback        [in]    Video stream callback function.
189  * @param       user_param      [in]    User parameter.
190  *
191  * @return      This function returns zero on success, or negative value with error
192  *                      code.
193  * @remark
194  * @see         mm_player_video_stream_callback mm_player_set_audio_stream_callback
195  * @since
196  */
197 int mm_player_set_video_stream_callback(MMHandleType player, mm_player_video_stream_callback callback, void *user_param);
198
199 /**
200  * This function set callback function for receiving audio stream from player.
201  *
202  * @param       player          [in]    Handle of player.
203  * @param       callback                [in]    Audio buffer callback function.
204  * @param       user_param      [in]    User parameter.
205  *
206  * @return      This function returns zero on success, or negative value with error
207  *                      code.
208  * @remark      It can be used for audio playback only.
209  * @see         mm_player_audio_stream_callback
210  * @since
211  */
212 int mm_player_set_audio_buffer_callback(MMHandleType player, mm_player_audio_stream_callback callback, void *user_param);
213
214 /**
215  * This function is to capture video frame. 
216  *
217  * @param       player          [in]    Handle of player.
218  *
219  * @return      This function returns zero on success, or negative value with error
220  *                      code.
221  *
222  * @remark      Captured buffer is sent asynchronously through message callback with MM_MESSAGE_VIDEO_CAPTURED. 
223  *                      And, application should free the captured buffer directly. 
224  * @see         MM_MESSAGE_VIDEO_CAPTURED
225  * @since
226  */
227 int mm_player_do_video_capture(MMHandleType player);
228
229 /**
230  * This function set callback function for receiving need data message from player.
231  *
232  * @param       player          [in]    Handle of player.
233  * @param       callback        [in]    Need data callback function.
234  * @param       user_param      [in]    User parameter.
235  *
236  * @return      This function returns zero on success, or negative value with error
237  *                      code.
238  * @remark
239  * @see         mm_player_set_buffer_enough_data_callback
240  * @since
241  */
242 int mm_player_set_buffer_need_data_callback(MMHandleType player, mm_player_buffer_need_data_callback callback , void *user_param);
243
244 /**
245  * This function set callback function for receiving enough data message from player.
246  *
247  * @param       player          [in]    Handle of player.
248  * @param       callback        [in]    Enough data callback function.
249  * @param       user_param      [in]    User parameter.
250  *
251  * @return      This function returns zero on success, or negative value with error
252  *                      code.
253  * @remark
254  * @see         mm_player_set_buffer_need_data_callback
255  * @since
256  */
257 int mm_player_set_buffer_enough_data_callback(MMHandleType player, mm_player_buffer_enough_data_callback callback, void *user_param);
258
259 /**
260  * This function set callback function for receiving seek data message from player.
261  *
262  * @param       player          [in]    Handle of player.
263  * @param       callback        [in]    Seek data callback function.
264  * @param       user_param      [in]    User parameter.
265  *
266  * @return      This function returns zero on success, or negative value with error
267  *                      code.
268  * @remark
269  * @see
270  * @since
271  */
272 int mm_player_set_buffer_seek_data_callback(MMHandleType player, mm_player_buffer_seek_data_callback callback, void *user_param);
273
274 /**
275  * This function set callback function for putting data into player.
276  *
277  * @param       player          [in]    Handle of player.
278  * @param       buf                     [in]    data to push into player
279  * @param       size                    [in]    buffer size to push
280  *
281  * @return      This function returns zero on success, or negative value with error
282  *                      code.
283  * @remark
284  * @see
285  * @since
286  */
287 int mm_player_push_buffer(MMHandleType player, unsigned char *buf, int size);
288
289
290 /**
291         @}
292  */
293
294 #ifdef __cplusplus
295         }
296 #endif
297
298 #endif  /* __MM_PLAYER_INTERNAL_H__ */