4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: JongHyuk Choi <jhchoi.choi@samsung.com>, heechul jeon <heechul.jeon@samsung.co>,
7 * YoungHwan An <younghwan_.an@samsung.com>, Eunhae Choi <eunhae1.choi@samsung.com>
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
23 #ifndef __MM_PLAYER_GST_H__
24 #define __MM_PLAYER_GST_H__
26 /*=======================================================================================
28 ========================================================================================*/
30 #include "mm_player_priv.h"
38 #define MMPLAYER_GST_GET_CAPS_INFO(x_pad, x_caps, x_str, x_name, x_ret) \
41 x_caps = gst_pad_query_caps(x_pad, NULL); \
43 x_str = gst_caps_get_structure(x_caps, 0); \
45 x_name = gst_structure_get_name(x_str); \
48 if (!x_caps || !x_str || !x_name) { \
49 LOGE("failed to get caps info"); \
54 /*=======================================================================================
55 | GLOBAL FUNCTION PROTOTYPES |
56 ========================================================================================*/
58 gint __mmplayer_gst_handle_core_error(mmplayer_t *player, int code);
59 gint __mmplayer_gst_handle_library_error(mmplayer_t *player, int code);
60 gint __mmplayer_gst_handle_resource_error(mmplayer_t *player, int code, GstMessage *message);
61 gint __mmplayer_gst_handle_stream_error(mmplayer_t *player, GError *error, GstMessage *message);
63 gboolean __mmplayer_handle_gst_error(mmplayer_t *player, GstMessage *message, GError *error);
64 int __mmplayer_gst_set_state(mmplayer_t *player, GstElement *element, GstState state, gboolean async, gint timeout);
66 int __mmplayer_gst_start(mmplayer_t *player);
67 int __mmplayer_gst_stop(mmplayer_t *player);
68 int __mmplayer_gst_pause(mmplayer_t *player, gboolean async);
69 int __mmplayer_gst_resume(mmplayer_t *player, gboolean async);
70 gboolean __mmplayer_gst_send_event_to_sink(mmplayer_t *player, GstEvent *event);
71 gboolean __mmplayer_gst_seek(mmplayer_t *player, GstElement *element, gdouble rate,
72 GstFormat format, GstSeekFlags flags, GstSeekType cur_type,
73 gint64 cur, GstSeekType stop_type, gint64 stop);
74 int __mmplayer_gst_set_position(mmplayer_t *player, gint64 position, gboolean internal_called);
75 int __mmplayer_gst_get_position(mmplayer_t *player, gint64 *position);
76 int __mmplayer_gst_get_buffer_position(mmplayer_t *player, int *start_pos, int *end_pos);
77 GstElement *__mmplayer_gst_create_source(mmplayer_t *player);
78 int __mmplayer_gst_build_es_pipeline(mmplayer_t *player);
79 int __mmplayer_gst_build_pipeline(mmplayer_t *player);
80 int __mmplayer_gst_add_bus_watch(mmplayer_t *player);
86 #endif /* __MM_PLAYER_GST_H__ */