Wrap g_hash_table_remove() with ms_node_remove_from_table()
[platform/core/api/mediastreamer.git] / include / media_streamer_node.h
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef __TIZEN_MEDIA_STREAMER_NODE_H__
18 #define __TIZEN_MEDIA_STREAMER_NODE_H__
19
20 #include "media_streamer_priv.h"
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 /**
27  * @brief Gets Node's information by its type.
28  */
29 node_info_s *ms_node_get_klass_by_its_type(media_streamer_node_type_e element_type);
30
31 /**
32  * @brief Creates media streamer node using input and output format.
33  */
34 int ms_node_create(media_streamer_node_s *node, media_format_h in_fmt, media_format_h out_fmt);
35
36 /**
37  * @brief Creates media streamer source node.
38  */
39 int ms_src_node_create(media_streamer_node_s *node);
40
41 /**
42  * @brief Creates media streamer sink node.
43  */
44 int ms_sink_node_create(media_streamer_node_s *node);
45
46 /**
47  * @brief Destroys media streamer node.
48  */
49 void ms_node_destroy(media_streamer_node_s *node);
50
51 /**
52  * @brief Adds node to bin
53  */
54 int ms_add_node_into_bin(media_streamer_s *ms_streamer, media_streamer_node_s *node);
55
56 /**
57  * @brief Prepares source node for adaptive streaming.
58  */
59 int ms_adaptive_src_node_prepare(media_streamer_node_s *node, bool auto_plug);
60
61 /**
62  * @brief Prepares sink node for adaptive streaming.
63  */
64 int ms_adaptive_sink_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node);
65
66 /**
67  * @brief Prepares RTP node.
68  */
69 int ms_rtp_node_prepare(media_streamer_node_s *node);
70
71 /**
72  * @brief Prepares WebRTC node.
73  */
74 int ms_webrtc_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node);
75
76 /**
77  * @brief Prepares demux node.
78  */
79 int ms_demux_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node);
80
81 /**
82  * @brief Inserts media streamer node into nodes table.
83  */
84 int ms_node_insert_into_table(GHashTable *nodes_table, media_streamer_node_s *node);
85
86 /**
87  * @brief Removes media streamer node from nodes table.
88  */
89 int ms_node_remove_from_table(GHashTable *nodes_table, media_streamer_node_s *node);
90
91 /**
92  * @brief Reads node parameters from user's bundle object.
93  */
94 int ms_node_set_params_from_bundle(media_streamer_node_s *node, bundle *param_list);
95
96 /**
97  * @brief Writes GstElement properties into user's bundle object.
98  */
99 int ms_node_write_params_into_bundle(media_streamer_node_s *node, bundle *param_list);
100
101 /**
102  * @brief Gets node's parameter by param_name.
103  */
104 int ms_node_get_param(media_streamer_node_s *node, const char *param_name, param_s **param);
105
106 /**
107  * @brief Gets string value of node's parameter.
108  */
109 int ms_node_get_param_value(media_streamer_node_s *node, param_s *param, char **string_value);
110
111 /**
112  * @brief Sets parameter value into node's parameter.
113  */
114 int ms_node_set_param_value(media_streamer_node_s *node, param_s *param, const gchar *param_value);
115
116 /**
117  * @brief Sets media format value into node's pad.
118  */
119 int ms_node_set_pad_format(media_streamer_node_s *node, const char *pad_name, media_format_h fmt);
120
121 gboolean ms_sink_node_prepare_iter(const GValue *item, GValue *g_ret, gpointer user_data);
122 gboolean ms_src_node_prepare_iter(const GValue *item, GValue *g_ret, gpointer user_data);
123 gboolean ms_node_resources_acquire_iter(const GValue *item, GValue *ret, gpointer user_data);
124 gboolean ms_node_resources_release_iter(const GValue *item, GValue *ret, gpointer user_data);
125 gboolean ms_node_dpm_policy_check_iter(const GValue *item, GValue *ret, gpointer user_data);
126 void ms_node_remove_from_table_cb(void *data);
127 GstElement *ms_webrtc_node_get_webrtcbin(media_streamer_node_s *webrtc_node);
128
129 #ifdef __cplusplus
130 }
131 #endif
132
133 #endif /* __TIZEN_MEDIA_STREAMER_NODE_H__ */