4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: JongHyuk Choi <jhchoi.choi@samsung.com>, YeJin Cho <cho.yejin@samsung.com>, YoungHwan An <younghwan_.an@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_PLAYER_INTERNAL_H__
23 #define __MM_PLAYER_INTERNAL_H__
32 @addtogroup PLAYER-INTERNAL
41 <td>DEFAULT VALUE</td>
44 <td>"display_roi_x"</td>
50 <td>"display_roi_y"</td>
56 <td>"display_roi_width"</td>
62 <td>"display_roi_height"</td>
68 <td>"display_method"</td>
71 <td>MM_DISPLAY_METHOD_LETTER_BOX</td>
74 <td>"sound_volume_type"</td>
77 <td>MM_SOUND_VOLUME_TYPE_CALL</td>
80 <td>"sound_route"</td>
83 <td>MM_AUDIOROUTE_USE_EXTERNAL_SETTING</td>
86 <td>"sound_stop_when_unplugged"</td>
95 * Enumerations of video colorspace
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;
105 unsigned char *data; /* capture image buffer */
106 int size; /* capture image size */
107 MMPlayerVideoColorspace fmt; /* color space type */
108 } MMPlayerVideoCapture;
111 * Buffer need data callback function type.
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
117 * @return This callback function have to return MM_ERROR_NONE.
119 typedef bool (*mm_player_buffer_need_data_callback) (unsigned int size, void *user_param);
122 * Buffer enough data callback function type.
124 * @param user_param [in] User defined parameter which is passed when set
125 * to enough data callback
127 * @return This callback function have to return MM_ERROR_NONE.
129 typedef bool (*mm_player_buffer_enough_data_callback) (void *user_param);
132 * Buffer seek data callback function type.
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
138 * @return This callback function have to return MM_ERROR_NONE.
140 typedef bool (*mm_player_buffer_seek_data_callback) (unsigned long long offset, void *user_param);
143 * Video stream callback function type.
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
152 * @return This callback function have to return MM_ERROR_NONE.
154 typedef bool (*mm_player_video_stream_callback) (void *stream, int stream_size, void *user_param, int width, int height);
157 * Audio stream callback function type.
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
164 * @return This callback function have to return MM_ERROR_NONE.
166 typedef bool (*mm_player_video_capture_callback) (void *stream, int stream_size, void *user_param);
169 * Video frame render error callback function type.
171 * @param error_id [in] cause of error
172 * @param user_param [in] User defined parameter which is passed when set
173 * video frame render error callback
175 * @return This callback function have to return MM_ERROR_NONE.
177 typedef bool (*mm_player_video_frame_render_error_callback) (void *error_id, void *user_param);
180 * This function is to set play speed for playback.
182 * @param player [in] Handle of player.
183 * @param ratio [in] Speed for playback.
185 * @return This function returns zero on success, or negative value with error
187 * @remark The current supported range is from -64x to 64x.
188 * But, the quailty is dependent on codec performance.
189 * And, the sound is muted under normal speed and more than double speed.
193 int mm_player_set_play_speed(MMHandleType player, float rate);
196 * This function set callback function for receiving video stream from player.
198 * @param player [in] Handle of player.
199 * @param callback [in] Video stream callback function.
200 * @param user_param [in] User parameter.
202 * @return This function returns zero on success, or negative value with error
205 * @see mm_player_video_stream_callback mm_player_set_audio_stream_callback
208 int mm_player_set_video_stream_callback(MMHandleType player, mm_player_video_stream_callback callback, void *user_param);
211 * This function set callback function for rendering error information of video render plug-in.
213 * @param player [in] Handle of player.
214 * @param callback [in] Frame render error callback function.
215 * @param user_param [in] User parameter which is passed to callback function.
217 * @return This function returns zero on success, or negative value with error code.
224 int mm_player_set_video_frame_render_error_callback(MMHandleType player, mm_player_video_frame_render_error_callback callback, void *user_param);
227 * This function set callback function for receiving audio stream from player.
229 * @param player [in] Handle of player.
230 * @param callback [in] Audio buffer callback function.
231 * @param user_param [in] User parameter.
233 * @return This function returns zero on success, or negative value with error
235 * @remark It can be used for audio playback only.
236 * @see mm_player_audio_stream_callback
239 int mm_player_set_audio_buffer_callback(MMHandleType player, mm_player_audio_stream_callback callback, void *user_param);
242 * This function is to capture video frame.
244 * @param player [in] Handle of player.
246 * @return This function returns zero on success, or negative value with error
249 * @remark Captured buffer is sent asynchronously through message callback with MM_MESSAGE_VIDEO_CAPTURED.
250 * And, application should free the captured buffer directly.
251 * @see MM_MESSAGE_VIDEO_CAPTURED
254 int mm_player_do_video_capture(MMHandleType player);
257 * This function set callback function for receiving need data message from player.
259 * @param player [in] Handle of player.
260 * @param callback [in] Need data callback function.
261 * @param user_param [in] User parameter.
263 * @return This function returns zero on success, or negative value with error
266 * @see mm_player_set_buffer_enough_data_callback
269 int mm_player_set_buffer_need_data_callback(MMHandleType player, mm_player_buffer_need_data_callback callback , void *user_param);
272 * This function set callback function for receiving enough data message from player.
274 * @param player [in] Handle of player.
275 * @param callback [in] Enough data callback function.
276 * @param user_param [in] User parameter.
278 * @return This function returns zero on success, or negative value with error
281 * @see mm_player_set_buffer_need_data_callback
284 int mm_player_set_buffer_enough_data_callback(MMHandleType player, mm_player_buffer_enough_data_callback callback, void *user_param);
287 * This function set callback function for receiving seek data message from player.
289 * @param player [in] Handle of player.
290 * @param callback [in] Seek data callback function.
291 * @param user_param [in] User parameter.
293 * @return This function returns zero on success, or negative value with error
299 int mm_player_set_buffer_seek_data_callback(MMHandleType player, mm_player_buffer_seek_data_callback callback, void *user_param);
302 * This function set callback function for putting data into player.
304 * @param player [in] Handle of player.
305 * @param buf [in] data to push into player
306 * @param size [in] buffer size to push
308 * @return This function returns zero on success, or negative value with error
314 int mm_player_push_buffer(MMHandleType player, unsigned char *buf, int size);
317 * This function changes the previous videosink plugin for a new one
319 * @param player [in] Handle of player.
320 * @param display_surface_type [in] display surface type to set
321 * @param display_overlay [in] display overlay to set
323 * @return This function returns zero on success, or negative value with error
325 * @remark Not supported
329 int mm_player_change_videosink(MMHandleType player, MMDisplaySurfaceType display_surface_type, void *display_overlay);
339 #endif /* __MM_PLAYER_INTERNAL_H__ */