2 * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 #ifndef __TIZEN_MEDIA_STREAMER_NODE_H__
18 #define __TIZEN_MEDIA_STREAMER_NODE_H__
20 #include "media_streamer_priv.h"
27 * @brief Gets Node's information by its type.
29 node_info_s *ms_node_get_klass_by_its_type(media_streamer_node_type_e element_type);
32 * @brief Creates media streamer node using input and output format.
34 int ms_node_create(media_streamer_node_s *node, media_format_h in_fmt, media_format_h out_fmt);
37 * @brief Creates media streamer source node.
39 int ms_src_node_create(media_streamer_node_s *node);
42 * @brief Creates media streamer sink node.
44 int ms_sink_node_create(media_streamer_node_s *node);
47 * @brief Destroys media streamer node.
49 void ms_node_destroy(media_streamer_node_s *node);
52 * @brief Adds node to bin
54 int ms_add_node_into_bin(media_streamer_s *ms_streamer, media_streamer_node_s *node);
57 * @brief Prepares source node for adaptive streaming.
59 int ms_adaptive_src_node_prepare(media_streamer_node_s *node, bool auto_plug);
62 * @brief Prepares sink node for adaptive streaming.
64 int ms_adaptive_sink_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node);
67 * @brief Prepares RTP node.
69 int ms_rtp_node_prepare(media_streamer_node_s *node);
72 * @brief Prepares WebRTC node.
74 int ms_webrtc_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node);
77 * @brief Prepares demux node.
79 int ms_demux_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node);
82 * @brief Inserts media streamer node into nodes table.
84 int ms_node_insert_into_table(GHashTable *nodes_table, media_streamer_node_s *node);
87 * @brief Removes media streamer node from nodes table.
89 int ms_node_remove_from_table(GHashTable *nodes_table, media_streamer_node_s *node);
92 * @brief Reads node parameters from user's bundle object.
94 int ms_node_set_params_from_bundle(media_streamer_node_s *node, bundle *param_list);
97 * @brief Writes GstElement properties into user's bundle object.
99 int ms_node_write_params_into_bundle(media_streamer_node_s *node, bundle *param_list);
102 * @brief Gets node's parameter by param_name.
104 int ms_node_get_param(media_streamer_node_s *node, const char *param_name, param_s **param);
107 * @brief Gets string value of node's parameter.
109 int ms_node_get_param_value(media_streamer_node_s *node, param_s *param, char **string_value);
112 * @brief Sets parameter value into node's parameter.
114 int ms_node_set_param_value(media_streamer_node_s *node, param_s *param, const gchar *param_value);
117 * @brief Sets media format value into node's pad.
119 int ms_node_set_pad_format(media_streamer_node_s *node, const char *pad_name, media_format_h fmt);
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);
133 #endif /* __TIZEN_MEDIA_STREAMER_NODE_H__ */