From: Sangchul Lee Date: Fri, 22 May 2020 10:54:26 +0000 (+0900) Subject: Use '__' prefix only for static functions X-Git-Tag: submit/tizen/20200714.065000~53 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e90f076d172f4ae4e4e8bbda36df075034f0e93d;p=platform%2Fcore%2Fapi%2Fmediastreamer.git Use '__' prefix only for static functions Some functions are moved to the proper file. [Version] 0.1.40 [Issue Type] Naming convention Change-Id: I1bc0d028ede29369b256cb323b6c926a12a73252 Signed-off-by: Sangchul Lee --- diff --git a/include/media_streamer_gst.h b/include/media_streamer_gst.h index c1f77b1..e722cb7 100644 --- a/include/media_streamer_gst.h +++ b/include/media_streamer_gst.h @@ -47,141 +47,142 @@ extern "C" { /** * @brief Generates dot files for GStreamer pipeline. */ -void __ms_generate_dots(GstElement *bin, gchar *name_tag); +void ms_generate_dots(GstElement *bin, gchar *name_tag); /** * @brief Creates GstElement by plugin name. */ -GstElement *__ms_element_create(const char *plugin_name, const char *name); +GstElement *ms_element_create(const char *plugin_name, const char *name); /** * @brief Creates GstBin name for adaptive streaming. */ -GstElement *__ms_adaptive_element_create(void); +GstElement *ms_adaptive_element_create(void); /** * @brief Creates GstElement from specified node_plug_s structure. */ -GstElement *__ms_node_element_create(node_plug_s *plug_info, media_streamer_node_type_e type); +GstElement *ms_node_element_create(node_plug_s *plug_info, media_streamer_node_type_e type); /** * @brief Creates rtp container GstElement. */ -GstElement *__ms_rtp_element_create(void); +GstElement *ms_rtp_element_create(void); /** * @brief Unlink all pads into GstElement. */ -gboolean __ms_element_unlink(GstElement *element); +gboolean ms_element_unlink(GstElement *element); /** * @brief Remove GstElement from bin. */ -gboolean __ms_bin_remove_element(GstElement *element); +gboolean ms_bin_remove_element(GstElement *element); /** * @brief Add GstElement into bin if not added before and refs it. */ -gboolean __ms_bin_add_element(GstElement *bin, GstElement *element, gboolean do_ref); +gboolean ms_bin_add_element(GstElement *bin, GstElement *element, gboolean do_ref); /** * @brief Gets pad type of element pad. */ -const gchar *__ms_get_pad_type(GstPad *element_pad); +const gchar *ms_get_pad_type(GstPad *element_pad); + /** * @brief Creates decodebin to link with sink part. */ -GstElement *__ms_decodebin_create(media_streamer_s *ms_streamer, char *name); +GstElement *ms_decodebin_create(media_streamer_s *ms_streamer, char *name); /** * @brief Creates next element by klass or by properties and links with the previous one. */ -GstElement *__ms_combine_next_element(GstElement *previous_element, GstPad *prev_elem_src_pad, GstElement *bin_to_find_in, media_streamer_node_type_e node_type); +GstElement *ms_combine_next_element(GstElement *previous_element, GstPad *prev_elem_src_pad, GstElement *bin_to_find_in, media_streamer_node_type_e node_type); /** * @brief Locks gst_element being contained in GValue data. */ -gboolean __ms_element_lock_state(const GValue *item, GValue *ret, gpointer user_data); +gboolean ms_element_lock_state(const GValue *item, GValue *ret, gpointer user_data); /** * @brief Unlocks gst_element being contained in GValue data. */ -gboolean __ms_element_unlock_state(const GValue *item, GValue *ret, gpointer user_data); - -/** - * @brief Gets state of media streamer. - */ -void __ms_get_state(media_streamer_s *ms_streamer); +gboolean ms_element_unlock_state(const GValue *item, GValue *ret, gpointer user_data); /** * @brief Creates pipeline, bus and src/sink/transform bins. */ -int __ms_pipeline_create(media_streamer_s *ms_streamer); +int ms_pipeline_create(media_streamer_s *ms_streamer); /** * @brief Prepares Media Streamer pipeline and autoplug nodes if needed. * */ -int __ms_pipeline_prepare(media_streamer_s *ms_streamer); +int ms_pipeline_prepare(media_streamer_s *ms_streamer); /** * @brief Unprepares Media Streamer pipeline and unlink nodes * which user didn't link before. */ -int __ms_pipeline_unprepare(media_streamer_s *ms_streamer); +int ms_pipeline_unprepare(media_streamer_s *ms_streamer); + +/** + * @brief Gets pipeline state of media streamer. + */ +void ms_pipeline_get_state(media_streamer_s *ms_streamer); /** * @brief Sets GstElement into state. */ -int __ms_element_set_state(GstElement *element, GstState state); +int ms_element_set_state(GstElement *element, GstState state); /** * @brief Iterates pas inside gst element. */ -int __ms_element_pad_names(GstElement *element, GstPadDirection pad_type, char ***pad_name_array, int *pads_count); +int ms_element_pad_names(GstElement *element, GstPadDirection pad_type, char ***pad_name_array, int *pads_count); /** * @brief Gets mediaformat from the GstElement's pad by pad name. */ -int __ms_element_get_pad_fmt(GstElement *element, const char *pad_name, media_format_h *fmt); +int ms_element_get_pad_fmt(GstElement *element, const char *pad_name, media_format_h *fmt); /** * @brief Sets mediaformat to the GstElement's pad. */ -int __ms_element_set_fmt(GstElement *element, const char *pad_name, media_format_h fmt); +int ms_element_set_fmt(GstElement *element, const char *pad_name, media_format_h fmt); /** * @brief Creates GstCap's from mediaformat. */ -GstCaps *__ms_create_caps_from_fmt(media_format_h fmt); +GstCaps *ms_create_caps_from_fmt(media_format_h fmt); /** * @brief Seeks GstElement to according time value. */ -gboolean __ms_gst_seek(GstElement *element, gint64 g_time, GstSeekFlags seek_flag); +gboolean ms_gst_seek(GstElement *element, gint64 g_time, GstSeekFlags seek_flag); /** * @brief Push the media packet buffer to the source element. */ -int __ms_element_push_packet(GstElement *src_element, media_packet_h packet); +int ms_element_push_packet(GstElement *src_element, media_packet_h packet); /** * @brief Pull the media packet buffer from sink element. */ -int __ms_element_pull_packet(GstElement *sink_element, media_packet_h *packet); +int ms_element_pull_packet(GstElement *sink_element, media_packet_h *packet); /** * @brief Finds type of media */ -int __ms_find_type(media_streamer_s *ms_streamer, GstElement *element); +int ms_find_type(media_streamer_s *ms_streamer, GstElement *element); -void __ms_rtpbin_pad_added_cb(GstElement *element, GstPad *new_pad, gpointer user_data); +void ms_rtpbin_pad_added_cb(GstElement *element, GstPad *new_pad, gpointer user_data); -void __ms_demux_pad_added_cb(GstElement *element, GstPad *new_pad, gpointer user_data); +void ms_demux_pad_added_cb(GstElement *element, GstPad *new_pad, gpointer user_data); -void __ms_hlsdemux_pad_added_cb(GstElement *element, GstPad *new_pad, gpointer user_data); +void ms_hlsdemux_pad_added_cb(GstElement *element, GstPad *new_pad, gpointer user_data); -void __ms_demux_nomore_pads_cb(GstElement *element, gpointer user_data); +void ms_demux_nomore_pads_cb(GstElement *element, gpointer user_data); #ifdef __cplusplus diff --git a/include/media_streamer_http_server.h b/include/media_streamer_http_server.h index 667c8c5..f0a3b33 100644 --- a/include/media_streamer_http_server.h +++ b/include/media_streamer_http_server.h @@ -27,14 +27,14 @@ extern "C" { typedef void *media_streamer_http_server_h; -int __ms_http_server_create(media_streamer_http_server_h *server); -int __ms_http_server_destroy(media_streamer_http_server_h server); +int ms_http_server_create(media_streamer_http_server_h *server); +int ms_http_server_destroy(media_streamer_http_server_h server); -int __ms_http_server_start(media_streamer_http_server_h server, int port); -int __ms_http_server_stop(media_streamer_http_server_h server); +int ms_http_server_start(media_streamer_http_server_h server, int port); +int ms_http_server_stop(media_streamer_http_server_h server); -int __ms_http_server_register_uri(media_streamer_http_server_h server, char *uri, char *file_path); -int __ms_http_server_unregister_uri(media_streamer_http_server_h server, char *uri); +int ms_http_server_register_uri(media_streamer_http_server_h server, char *uri, char *file_path); +int ms_http_server_unregister_uri(media_streamer_http_server_h server, char *uri); #ifdef __cplusplus } diff --git a/include/media_streamer_node.h b/include/media_streamer_node.h index e39d424..9e2615e 100644 --- a/include/media_streamer_node.h +++ b/include/media_streamer_node.h @@ -26,103 +26,98 @@ extern "C" { /** * @brief Gets Node's information by its type. */ -node_info_s *__ms_node_get_klass_by_its_type(media_streamer_node_type_e element_type); +node_info_s *ms_node_get_klass_by_its_type(media_streamer_node_type_e element_type); /** * @brief Creates media streamer node using input and output format. */ -int __ms_node_create(media_streamer_node_s *node, media_format_h in_fmt, media_format_h out_fmt); +int ms_node_create(media_streamer_node_s *node, media_format_h in_fmt, media_format_h out_fmt); /** * @brief Creates media streamer source node. */ -int __ms_src_node_create(media_streamer_node_s *node); +int ms_src_node_create(media_streamer_node_s *node); /** * @brief Creates media streamer sink node. */ -int __ms_sink_node_create(media_streamer_node_s *node); +int ms_sink_node_create(media_streamer_node_s *node); /** * @brief Destroys media streamer node. */ -void __ms_node_destroy(media_streamer_node_s *node); +void ms_node_destroy(media_streamer_node_s *node); /** * @brief Adds node to bin */ -int __ms_add_node_into_bin(media_streamer_s *ms_streamer, media_streamer_node_s *node); +int ms_add_node_into_bin(media_streamer_s *ms_streamer, media_streamer_node_s *node); /** * @brief Prepares source node for adaptive streaming. */ -int __ms_adaptive_src_node_prepare(media_streamer_node_s *node, bool auto_plug); +int ms_adaptive_src_node_prepare(media_streamer_node_s *node, bool auto_plug); /** * @brief Prepares sink node for adaptive streaming. */ -int __ms_adaptive_sink_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node); +int ms_adaptive_sink_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node); /** * @brief Prepares rtp node. */ -gboolean __ms_rtp_node_prepare(media_streamer_node_s *node); +gboolean ms_rtp_node_prepare(media_streamer_node_s *node); /** * @brief Prepares demux node. */ -int __ms_demux_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node); +int ms_demux_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node); /** * @brief Inserts media streamer node into nodes table. */ -int __ms_node_insert_into_table(GHashTable *nodes_table, media_streamer_node_s *node); +int ms_node_insert_into_table(GHashTable *nodes_table, media_streamer_node_s *node); /** * @brief Removes media streamer node from nodes table. */ -void __ms_node_remove_from_table(void *data); +void ms_node_remove_from_table(void *data); /** * @brief Reads node parameters from user's bundle object. */ -int __ms_node_set_params_from_bundle(media_streamer_node_s *node, bundle *param_list); +int ms_node_set_params_from_bundle(media_streamer_node_s *node, bundle *param_list); /** * @brief Writes GstElement properties into user's bundle object. */ -int __ms_node_write_params_into_bundle(media_streamer_node_s *node, bundle *param_list); +int ms_node_write_params_into_bundle(media_streamer_node_s *node, bundle *param_list); /** * @brief Gets node's parameter by param_name. */ -int __ms_node_get_param(media_streamer_node_s *node, const char *param_name, param_s **param); - -/** - * @brief Gets list of all node's parameters. - */ -int __ms_node_get_param_list(media_streamer_node_s *node, GList **param_list); +int ms_node_get_param(media_streamer_node_s *node, const char *param_name, param_s **param); /** * @brief Gets string value of node's parameter. */ -int __ms_node_get_param_value(media_streamer_node_s *node, param_s *param, char **string_value); +int ms_node_get_param_value(media_streamer_node_s *node, param_s *param, char **string_value); /** * @brief Sets parameter value into node's parameter. */ -int __ms_node_set_param_value(media_streamer_node_s *node, param_s *param, const gchar *param_value); +int ms_node_set_param_value(media_streamer_node_s *node, param_s *param, const gchar *param_value); /** * @brief Sets media format value into node's pad. */ -int __ms_node_set_pad_format(media_streamer_node_s *node, const char *pad_name, media_format_h fmt); +int ms_node_set_pad_format(media_streamer_node_s *node, const char *pad_name, media_format_h fmt); -gboolean _ms_sink_node_prepare_iter(const GValue *item, GValue *g_ret, gpointer user_data); -gboolean _ms_src_node_prepare_iter(const GValue *item, GValue *g_ret, gpointer user_data); -gboolean _ms_node_resources_acquire_iter(const GValue *item, GValue *ret, gpointer user_data); -gboolean _ms_node_resources_release_iter(const GValue *item, GValue *ret, gpointer user_data); -gboolean _ms_node_policy_check_iter(const GValue *item, GValue *ret, gpointer user_data); +gboolean ms_sink_node_prepare_iter(const GValue *item, GValue *g_ret, gpointer user_data); +gboolean ms_src_node_prepare_iter(const GValue *item, GValue *g_ret, gpointer user_data); +gboolean ms_node_resources_acquire_iter(const GValue *item, GValue *ret, gpointer user_data); +gboolean ms_node_resources_release_iter(const GValue *item, GValue *ret, gpointer user_data); +gboolean ms_node_policy_check_iter(const GValue *item, GValue *ret, gpointer user_data); #ifdef __cplusplus } diff --git a/include/media_streamer_node_policy.h b/include/media_streamer_node_policy.h index 827d578..6ada20d 100644 --- a/include/media_streamer_node_policy.h +++ b/include/media_streamer_node_policy.h @@ -29,9 +29,9 @@ typedef enum { POLICY_TYPE_MIC, } media_streamer_policy_type_e; -int __ms_node_policy_init(media_streamer_node_s *node); -int __ms_node_policy_deinit(media_streamer_node_s *node); -int _ms_node_policy_check(media_streamer_node_s *node); +int ms_node_policy_init(media_streamer_node_s *node); +int ms_node_policy_deinit(media_streamer_node_s *node); +int ms_node_policy_check(media_streamer_node_s *node); #ifdef __cplusplus } diff --git a/include/media_streamer_node_resources.h b/include/media_streamer_node_resources.h index 1dcd011..2b4c44d 100644 --- a/include/media_streamer_node_resources.h +++ b/include/media_streamer_node_resources.h @@ -23,8 +23,8 @@ extern "C" { #endif -int _ms_node_resource_acquire(media_streamer_node_s *node); -int _ms_node_resource_release(media_streamer_node_s *node); +int ms_node_resource_acquire(media_streamer_node_s *node); +int ms_node_resource_release(media_streamer_node_s *node); #ifdef __cplusplus } diff --git a/include/media_streamer_priv.h b/include/media_streamer_priv.h index 585a981..f066325 100644 --- a/include/media_streamer_priv.h +++ b/include/media_streamer_priv.h @@ -130,41 +130,37 @@ typedef struct { int policy_changed_cb_id; } media_streamer_node_s; -typedef struct _media_streamer_wl_info_s { - gint parent_id; -} media_streamer_wl_info_s; - /** * @brief Gets the play position of Media streamer element. */ -int __ms_get_position(media_streamer_s *ms_streamer, int *time); +int ms_get_position(media_streamer_s *ms_streamer, int *time); /** * @brief Gets the duration of Media streamer element. */ -int __ms_get_duration(media_streamer_s *ms_streamer, int *time); +int ms_get_duration(media_streamer_s *ms_streamer, int *time); /** * @brief Seeks Media streamer element to the pointed position. */ -int __ms_seek(media_streamer_s *ms_streamer, int time, bool flag); +int ms_seek(media_streamer_s *ms_streamer, int time, bool flag); /** * @brief Destroys media streamer structure. */ -int __ms_destroy(media_streamer_s *ms_streamer); +int ms_destroy(media_streamer_s *ms_streamer); /** * @brief Creates media streamer structure. */ -int __ms_create(media_streamer_s *ms_streamer); +int ms_create(media_streamer_s *ms_streamer); /** * @brief Changes state of media streamer. */ -int __ms_state_change(media_streamer_s *ms_streamer, media_streamer_state_e state); +int ms_state_change(media_streamer_s *ms_streamer, media_streamer_state_e state); -int __ms_release_resources(media_streamer_s *ms_streamer); +int ms_release_resources(media_streamer_s *ms_streamer); #ifdef __cplusplus } diff --git a/include/media_streamer_util.h b/include/media_streamer_util.h index eed28c6..d4b7f46 100644 --- a/include/media_streamer_util.h +++ b/include/media_streamer_util.h @@ -24,6 +24,7 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { @@ -133,6 +134,10 @@ typedef struct { gulong signal_id; } media_streamer_signal_s; +typedef struct _media_streamer_wl_info_s { + gint parent_id; +} media_streamer_wl_info_s; + /*Test elements*/ #define DEFAULT_VIDEO_TEST_SOURCE "videotestsrc" #define DEFAULT_AUDIO_TEST_SOURCE "audiotestsrc" @@ -220,7 +225,7 @@ typedef struct { GValue *val = g_malloc0(sizeof(GValue)); \ g_value_init(val, G_TYPE_INT); \ g_value_set_int(val, value); \ - g_object_set_data_full(G_OBJECT(obj), key, (gpointer)val, __ms_param_value_destroy); \ + g_object_set_data_full(G_OBJECT(obj), key, (gpointer)val, ms_param_value_destroy); \ } while (0) #define MS_SET_INT_STATIC_STRING_PARAM(obj, key, value) \ @@ -228,7 +233,7 @@ typedef struct { GValue *val = g_malloc0(sizeof(GValue)); \ g_value_init(val, G_TYPE_STRING); \ g_value_set_static_string(val, value); \ - g_object_set_data_full(G_OBJECT(obj), key, (gpointer)val, __ms_param_value_destroy); \ + g_object_set_data_full(G_OBJECT(obj), key, (gpointer)val, ms_param_value_destroy); \ } while (0) #define MS_SET_INT_CAPS_PARAM(obj, key, value) \ @@ -236,7 +241,7 @@ typedef struct { GValue *val = g_malloc0(sizeof(GValue)); \ g_value_init(val, GST_TYPE_CAPS); \ gst_value_set_caps(val, value); \ - g_object_set_data_full(G_OBJECT(obj), key, (gpointer)val, __ms_param_value_destroy); \ + g_object_set_data_full(G_OBJECT(obj), key, (gpointer)val, ms_param_value_destroy); \ } while (0) #define MS_GET_CAPS_TYPE(caps, type) \ @@ -251,59 +256,61 @@ typedef struct { * @brief Loads media streamer settings from ini file. * The default values will be used if error has occurred. */ -void __ms_load_ini_settings(media_streamer_ini_t *ini); +void ms_load_ini_settings(media_streamer_ini_t *ini); /** * @brief Read and copy string reading from ini file. */ -gchar *__ms_ini_get_string(const char *ini_path, const char *default_str); +gchar *ms_ini_get_string(const char *ini_path, const char *default_str); /** * @brief Reads comma-separated string list from ini file. */ -void __ms_ini_read_list(const char *key, gchar ***list); +void ms_ini_read_list(const char *key, gchar ***list); /** * @brief Converts Media Format mime type into Caps media format string. */ -const gchar *__ms_convert_mime_to_string_format(media_format_mimetype_e mime); +const gchar *ms_convert_mime_to_string_format(media_format_mimetype_e mime); /** * @brief Converts Media Format mime type into rtp media type. */ -const gchar *__ms_convert_mime_to_rtp_format(media_format_mimetype_e mime); +const gchar *ms_convert_mime_to_rtp_format(media_format_mimetype_e mime); /** * @brief Converts Caps stream format into Media Format mime type. */ -media_format_mimetype_e __ms_convert_string_format_to_media_format(const char *format_type); +media_format_mimetype_e ms_convert_string_format_to_media_format(const char *format_type); /** * @brief Creates Media streamer signal structure, * connects it to object and appends it to signal list. */ -void __ms_signal_create(GList **sig_list, GstElement *obj, const char *sig_name, GCallback cb, gpointer user_data); +void ms_signal_create(GList **sig_list, GstElement *obj, const char *sig_name, GCallback cb, gpointer user_data); /** * @brief Disconnects signal from object and * destroys Media streamer signal object. */ -void __ms_signal_destroy(void *data); +void ms_signal_destroy(void *data); /** * @brief Destroys the which set as rtp node parameter. */ -void __ms_param_value_destroy(gpointer data); +void ms_param_value_destroy(gpointer data); /** * @brief Check URI is valid file */ -int __ms_util_uri_path_check(const char *file_uri); +int ms_util_uri_path_check(const char *file_uri); /** * @brief Iterates func over all elements contained within a bin. */ -int __ms_bin_foreach_elements(GstBin *bin, GstIteratorFoldFunction func, void *user_data); +int ms_bin_foreach_elements(GstBin *bin, GstIteratorFoldFunction func, void *user_data); + +int ms_get_wl_info(Evas_Object *obj, media_streamer_wl_info_s *wl_info); #ifdef __cplusplus } diff --git a/packaging/capi-media-streamer.spec b/packaging/capi-media-streamer.spec index fbf7c1e..fd9b6e1 100644 --- a/packaging/capi-media-streamer.spec +++ b/packaging/capi-media-streamer.spec @@ -1,7 +1,7 @@ Name: capi-media-streamer Summary: A Media Streamer API -Version: 0.1.39 -Release: 1 +Version: 0.1.40 +Release: 0 Group: Multimedia/API License: Apache-2.0 URL: http://source.tizen.org diff --git a/src/media_streamer.c b/src/media_streamer.c index 1d0700e..c35edd9 100644 --- a/src/media_streamer.c +++ b/src/media_streamer.c @@ -41,10 +41,10 @@ int media_streamer_node_create_src(media_streamer_node_src_type_e type, media_st ms_src->type = MEDIA_STREAMER_NODE_TYPE_SRC; ms_src->subtype = (media_streamer_node_src_type_e) type; - ret = __ms_src_node_create(ms_src); + ret = ms_src_node_create(ms_src); if (ret != MEDIA_STREAMER_ERROR_NONE) { ms_error("Error creating Src node [%d]", ret); - __ms_node_destroy(ms_src); + ms_node_destroy(ms_src); return ret; } @@ -71,9 +71,9 @@ int media_streamer_node_create_sink(media_streamer_node_sink_type_e type, media_ ms_sink->type = MEDIA_STREAMER_NODE_TYPE_SINK; ms_sink->subtype = (media_streamer_node_sink_type_e) type; - ret = __ms_sink_node_create(ms_sink); + ret = ms_sink_node_create(ms_sink); if (ret != MEDIA_STREAMER_ERROR_NONE) { - __ms_node_destroy(ms_sink); + ms_node_destroy(ms_sink); ms_error("Error creating Sink node [%d]", ret); return ret; } @@ -101,9 +101,9 @@ int media_streamer_node_create(media_streamer_node_type_e type, media_format_h i ms_node->type = type; ms_node->subtype = 0; - ret = __ms_node_create(ms_node, in_fmt, out_fmt); + ret = ms_node_create(ms_node, in_fmt, out_fmt); if (ret != MEDIA_STREAMER_ERROR_NONE) { - __ms_node_destroy(ms_node); + ms_node_destroy(ms_node); ms_error("Error creating Node [%d]", ret); return ret; } else { @@ -127,7 +127,7 @@ int media_streamer_node_destroy(media_streamer_node_h node) if (ms_node->parent_streamer == NULL) { /* This node was not added into any media streamer */ - __ms_node_destroy(ms_node); + ms_node_destroy(ms_node); } else { ms_error("Node destroy error: needed to remove node from media streamer before destroying."); return MEDIA_STREAMER_ERROR_INVALID_OPERATION; @@ -184,10 +184,10 @@ int media_streamer_node_add(media_streamer_h streamer, media_streamer_node_h nod g_mutex_lock(&ms_streamer->mutex_lock); - ret = __ms_node_insert_into_table(ms_streamer->nodes_table, ms_node); + ret = ms_node_insert_into_table(ms_streamer->nodes_table, ms_node); if (ret == MEDIA_STREAMER_ERROR_NONE) { ms_node->parent_streamer = ms_streamer; - ret = __ms_add_node_into_bin(ms_streamer, ms_node); + ret = ms_add_node_into_bin(ms_streamer, ms_node); } g_mutex_unlock(&ms_streamer->mutex_lock); @@ -209,15 +209,15 @@ int media_streamer_prepare(media_streamer_h streamer) g_mutex_lock(&ms_streamer->mutex_lock); - __ms_generate_dots(ms_streamer->pipeline, "before_prepare"); + ms_generate_dots(ms_streamer->pipeline, "before_prepare"); - ret = __ms_pipeline_prepare(ms_streamer); + ret = ms_pipeline_prepare(ms_streamer); - __ms_generate_dots(ms_streamer->pipeline, "after_prepare"); + ms_generate_dots(ms_streamer->pipeline, "after_prepare"); g_mutex_unlock(&ms_streamer->mutex_lock); - __ms_get_state(ms_streamer); + ms_pipeline_get_state(ms_streamer); ms_debug_fleave(); @@ -236,13 +236,13 @@ int media_streamer_unprepare(media_streamer_h streamer) g_mutex_lock(&ms_streamer->mutex_lock); - __ms_generate_dots(ms_streamer->pipeline, "before_unprepare"); + ms_generate_dots(ms_streamer->pipeline, "before_unprepare"); - ret = __ms_pipeline_unprepare(ms_streamer); + ret = ms_pipeline_unprepare(ms_streamer); - __ms_http_server_destroy(ms_streamer->http_server); + ms_http_server_destroy(ms_streamer->http_server); - __ms_generate_dots(ms_streamer->pipeline, "after_unprepare"); + ms_generate_dots(ms_streamer->pipeline, "after_unprepare"); g_mutex_unlock(&ms_streamer->mutex_lock); @@ -263,11 +263,11 @@ int media_streamer_play(media_streamer_h streamer) g_mutex_lock(&ms_streamer->mutex_lock); - ret = __ms_state_change(ms_streamer, MEDIA_STREAMER_STATE_PLAYING); + ret = ms_state_change(ms_streamer, MEDIA_STREAMER_STATE_PLAYING); g_mutex_unlock(&ms_streamer->mutex_lock); - __ms_get_state(ms_streamer); + ms_pipeline_get_state(ms_streamer); ms_debug_fleave(); @@ -291,17 +291,17 @@ int media_streamer_create(media_streamer_h *streamer) g_mutex_lock(&ms_streamer->mutex_lock); - ret = __ms_create(ms_streamer); + ret = ms_create(ms_streamer); if (ret != MEDIA_STREAMER_ERROR_NONE) { ms_error("Error creating Media Streamer"); g_mutex_unlock(&ms_streamer->mutex_lock); - __ms_destroy(ms_streamer); + ms_destroy(ms_streamer); return ret; } ms_streamer->pend_state = MEDIA_STREAMER_STATE_NONE; - ret = __ms_state_change(ms_streamer, MEDIA_STREAMER_STATE_IDLE); + ret = ms_state_change(ms_streamer, MEDIA_STREAMER_STATE_IDLE); *streamer = ms_streamer; g_mutex_unlock(&ms_streamer->mutex_lock); @@ -323,7 +323,7 @@ int media_streamer_destroy(media_streamer_h streamer) ms_retvm_if(ms_streamer == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "streamer is NULL"); ms_retvm_if(ms_streamer->state > MEDIA_STREAMER_STATE_IDLE, MEDIA_STREAMER_ERROR_INVALID_STATE, "Error: Media streamer must be unprepared before destroying!"); - ret = __ms_destroy(ms_streamer); + ret = ms_destroy(ms_streamer); ms_debug_fleave(); @@ -565,11 +565,11 @@ int media_streamer_pause(media_streamer_h streamer) g_mutex_lock(&ms_streamer->mutex_lock); - ret = __ms_state_change(ms_streamer, MEDIA_STREAMER_STATE_PAUSED); + ret = ms_state_change(ms_streamer, MEDIA_STREAMER_STATE_PAUSED); g_mutex_unlock(&ms_streamer->mutex_lock); - __ms_get_state(ms_streamer); + ms_pipeline_get_state(ms_streamer); ms_debug_fleave(); @@ -588,18 +588,18 @@ int media_streamer_stop(media_streamer_h streamer) g_mutex_lock(&ms_streamer->mutex_lock); - ret = __ms_seek(streamer, 0, FALSE); + ret = ms_seek(streamer, 0, FALSE); if (ret != MEDIA_STREAMER_ERROR_NONE) ms_error("Error while putting media streamer to zero playing position"); else - ret = __ms_state_change(ms_streamer, MEDIA_STREAMER_STATE_PAUSED); + ret = ms_state_change(ms_streamer, MEDIA_STREAMER_STATE_PAUSED); - __ms_http_server_stop(ms_streamer->http_server); + ms_http_server_stop(ms_streamer->http_server); g_mutex_unlock(&ms_streamer->mutex_lock); - __ms_get_state(ms_streamer); + ms_pipeline_get_state(ms_streamer); ms_debug_fleave(); @@ -639,12 +639,12 @@ int media_streamer_set_play_position(media_streamer_h streamer, int time, bool a /* if query duration failed or returns duration value MS_TIME_NONE, * we suppose that pipeline does not support seek. */ - ret = __ms_get_duration(ms_streamer, &duration); + ret = ms_get_duration(ms_streamer, &duration); if (ret == MEDIA_STREAMER_ERROR_NONE && duration != MS_TIME_NONE) { ms_streamer->seek_done_cb.callback = callback; ms_streamer->seek_done_cb.user_data = user_data; - ret = __ms_seek(streamer, time, accurate); + ret = ms_seek(streamer, time, accurate); } else ret = MEDIA_STREAMER_ERROR_NOT_SUPPORTED; @@ -667,7 +667,7 @@ int media_streamer_get_play_position(media_streamer_h streamer, int *time) g_mutex_lock(&ms_streamer->mutex_lock); - ret = __ms_get_position(streamer, time); + ret = ms_get_position(streamer, time); g_mutex_unlock(&ms_streamer->mutex_lock); @@ -688,7 +688,7 @@ int media_streamer_get_duration(media_streamer_h streamer, int *duration) g_mutex_lock(&ms_streamer->mutex_lock); - ret = __ms_get_duration(streamer, duration); + ret = ms_get_duration(streamer, duration); g_mutex_unlock(&ms_streamer->mutex_lock); @@ -709,7 +709,7 @@ int media_streamer_node_push_packet(media_streamer_node_h src, media_packet_h pa ms_debug_fleave(); - return __ms_element_push_packet(ms_node->gst_element, packet); + return ms_element_push_packet(ms_node->gst_element, packet); } int media_streamer_node_pull_packet(media_streamer_node_h sink, media_packet_h *packet) @@ -726,7 +726,7 @@ int media_streamer_node_pull_packet(media_streamer_node_h sink, media_packet_h * ms_debug_fleave(); - return __ms_element_pull_packet(ms_node->gst_element, packet); + return ms_element_pull_packet(ms_node->gst_element, packet); } int media_streamer_node_link(media_streamer_node_h src_node, const char *src_pad_name, media_streamer_node_h dest_node, const char *sink_pad_name) @@ -769,7 +769,7 @@ int media_streamer_node_set_pad_format(media_streamer_node_h node, const char *p ms_debug_fleave(); /* By default it sets format to object's property 'caps' */ - return __ms_node_set_pad_format(node, pad_name, fmt); + return ms_node_set_pad_format(node, pad_name, fmt); } int media_streamer_node_get_pad_format(media_streamer_node_h node, const char *pad_name, media_format_h *fmt) @@ -784,7 +784,7 @@ int media_streamer_node_get_pad_format(media_streamer_node_h node, const char *p ms_debug_fleave(); - return __ms_element_get_pad_fmt(ms_node->gst_element, pad_name, fmt); + return ms_element_get_pad_fmt(ms_node->gst_element, pad_name, fmt); } int media_streamer_node_get_pad_name(media_streamer_node_h node, char ***src_pad_name, int *src_pad_num, char ***sink_pad_name, int *sink_pad_num) @@ -801,10 +801,10 @@ int media_streamer_node_get_pad_name(media_streamer_node_h node, char ***src_pad ms_retvm_if(sink_pad_num == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "sink_pad_num is NULL"); ms_retvm_if(ms_node->gst_element == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "gst_element is NULL"); - ret = __ms_element_pad_names(ms_node->gst_element, GST_PAD_SRC, src_pad_name, src_pad_num); + ret = ms_element_pad_names(ms_node->gst_element, GST_PAD_SRC, src_pad_name, src_pad_num); ms_retvm_if(ret, MEDIA_STREAMER_ERROR_INVALID_OPERATION, "Error iterating src pads"); - ret = __ms_element_pad_names(ms_node->gst_element, GST_PAD_SINK, sink_pad_name, sink_pad_num); + ret = ms_element_pad_names(ms_node->gst_element, GST_PAD_SINK, sink_pad_name, sink_pad_num); ms_retvm_if(ret, MEDIA_STREAMER_ERROR_INVALID_OPERATION, "Error iterating sink pads"); ms_debug_fleave(); @@ -823,7 +823,7 @@ int media_streamer_node_set_params(media_streamer_node_h node, bundle *param_lis ms_retvm_if(ms_node->gst_element == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "gst_element is NULL"); ms_retvm_if(param_list == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "param_list is NULL"); - ret = __ms_node_set_params_from_bundle(ms_node, param_list); + ret = ms_node_set_params_from_bundle(ms_node, param_list); ms_debug_fleave(); @@ -844,7 +844,7 @@ int media_streamer_node_get_params(media_streamer_node_h node, bundle **param_li ms_params = bundle_create(); ms_retvm_if(ms_params == NULL, MEDIA_STREAMER_ERROR_INVALID_OPERATION, "Error creating new params object"); - ret = __ms_node_write_params_into_bundle(ms_node, ms_params); + ret = ms_node_write_params_into_bundle(ms_node, ms_params); if (ret == MEDIA_STREAMER_ERROR_NONE) *param_list = ms_params; else @@ -867,9 +867,9 @@ int media_streamer_node_set_param(media_streamer_node_h node, const char *param_ ms_retvm_if(ms_node->gst_element == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "gst_element is NULL"); ms_retvm_if(param_name == NULL || param_value == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "Parameters name or value is NULL"); - ret = __ms_node_get_param(node, param_name, ¶m); + ret = ms_node_get_param(node, param_name, ¶m); if (ret == MEDIA_STREAMER_ERROR_NONE) - ret = __ms_node_set_param_value(node, param, param_value); + ret = ms_node_set_param_value(node, param, param_value); ms_debug_fleave(); @@ -888,9 +888,9 @@ int media_streamer_node_get_param(media_streamer_node_h node, const char *param_ ms_retvm_if(param_name == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "param_name is NULL"); ms_retvm_if(param_value == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "param_value is NULL"); - ret = __ms_node_get_param(ms_node, param_name, ¶m); + ret = ms_node_get_param(ms_node, param_name, ¶m); if (ret == MEDIA_STREAMER_ERROR_NONE) - ret = __ms_node_get_param_value(ms_node, param, param_value); + ret = ms_node_get_param_value(ms_node, param, param_value); ms_debug_fleave(); diff --git a/src/media_streamer_gst.c b/src/media_streamer_gst.c index d9fb8fa..7a7c712 100644 --- a/src/media_streamer_gst.c +++ b/src/media_streamer_gst.c @@ -34,7 +34,7 @@ typedef enum { static int __ms_adaptive_sink_prepare(media_streamer_s *ms_streamer); -void __ms_generate_dots(GstElement *bin, gchar *name_tag) +void ms_generate_dots(GstElement *bin, gchar *name_tag) { gchar *dot_name; ms_retm_if(bin == NULL, "bin is NULL"); @@ -215,7 +215,7 @@ static GstElement *__ms_pad_get_peer_element(GstPad *pad) return ret; } -gboolean __ms_element_unlink(GstElement *element) +gboolean ms_element_unlink(GstElement *element) { gboolean ret = TRUE; GstPad *pad = NULL; @@ -240,7 +240,7 @@ gboolean __ms_element_unlink(GstElement *element) return ret; } -gboolean __ms_bin_remove_element(GstElement *element) +gboolean ms_bin_remove_element(GstElement *element) { GstElement *parent = NULL; gboolean ret = FALSE; @@ -265,7 +265,7 @@ gboolean __ms_bin_remove_element(GstElement *element) return ret; } -gboolean __ms_bin_add_element(GstElement *bin, GstElement *element, gboolean do_ref) +gboolean ms_bin_add_element(GstElement *bin, GstElement *element, gboolean do_ref) { GstElement *parent = NULL; gboolean ret = FALSE; @@ -293,7 +293,7 @@ gboolean __ms_bin_add_element(GstElement *bin, GstElement *element, gboolean do_ return ret; } -const gchar *__ms_get_pad_type(GstPad *element_pad) +const gchar *ms_get_pad_type(GstPad *element_pad) { const gchar *pad_type = NULL; GstCaps *pad_caps = NULL; @@ -478,7 +478,7 @@ static GstElement *__ms_bin_find_element_by_type(GstElement *previous_element, G return elements_linked ? found_element : NULL; } -int __ms_factory_rank_compare(GstPluginFeature *first_feature, GstPluginFeature *second_feature) +static int __ms_factory_rank_compare(GstPluginFeature *first_feature, GstPluginFeature *second_feature) { ms_debug_fenter(); guint first_rank = 0, second_rank = 0; @@ -493,7 +493,7 @@ int __ms_factory_rank_compare(GstPluginFeature *first_feature, GstPluginFeature return second_rank - first_rank; } -GstElement *__ms_combine_next_element(GstElement *previous_element, GstPad *prev_elem_src_pad, GstElement *bin_to_find_in, media_streamer_node_type_e node_type) +GstElement *ms_combine_next_element(GstElement *previous_element, GstPad *prev_elem_src_pad, GstElement *bin_to_find_in, media_streamer_node_type_e node_type) { GstCaps *prev_caps = NULL; GstElement *found_element = NULL; @@ -504,7 +504,7 @@ GstElement *__ms_combine_next_element(GstElement *previous_element, GstPad *prev ms_debug_fenter(); - node_klass_type = __ms_node_get_klass_by_its_type(node_type); + node_klass_type = ms_node_get_klass_by_its_type(node_type); /* - 1 - If previous element is linked - check for peer element */ found_element = __ms_find_peer_element_by_type(GST_ELEMENT(previous_element), prev_elem_src_pad, node_klass_type); @@ -528,15 +528,15 @@ GstElement *__ms_combine_next_element(GstElement *previous_element, GstPad *prev node_plug_s plug_info = {node_klass_type, NULL, prev_caps, NULL}; /* Create Node by ini or registry */ - found_element = __ms_node_element_create(&plug_info, node_type); + found_element = ms_node_element_create(&plug_info, node_type); if (found_element) { ms_info("New Element [%s] is created ", GST_ELEMENT_NAME(found_element)); /* Add created element */ - if (__ms_bin_add_element(bin_to_find_in, found_element, TRUE)) { + if (ms_bin_add_element(bin_to_find_in, found_element, TRUE)) { gst_element_sync_state_with_parent(found_element); __ms_link_two_elements(previous_element, prev_elem_src_pad, found_element); - __ms_generate_dots(bin_to_find_in, GST_ELEMENT_NAME(found_element)); + ms_generate_dots(bin_to_find_in, GST_ELEMENT_NAME(found_element)); } else { ms_error("Element [%s] was not added into [%s] bin", GST_ELEMENT_NAME(found_element), GST_ELEMENT_NAME(bin_to_find_in)); MS_SAFE_UNREF(found_element); @@ -642,8 +642,8 @@ static gint __pad_type_compare(gconstpointer a, gconstpointer b) a_pad = GST_PAD(a); b_pad = GST_PAD(b); - a_pad_type = __ms_get_pad_type(a_pad); - b_pad_type = __ms_get_pad_type(b_pad); + a_pad_type = ms_get_pad_type(a_pad); + b_pad_type = ms_get_pad_type(b_pad); ms_debug_fleave(); @@ -688,54 +688,54 @@ static void __decodebin_nomore_pads_combine(GstPad *src_pad, media_streamer_s *m ms_retm_if(ms_streamer == NULL, "ms_streamer is NULL"); found_element = gst_pad_get_parent_element(src_pad); - new_pad_type = __ms_get_pad_type(src_pad); + new_pad_type = ms_get_pad_type(src_pad); if (MS_ELEMENT_IS_VIDEO(new_pad_type)) { - if (__ms_bin_find_element_by_type(found_element, src_pad, ms_streamer->transform_bin, __ms_node_get_klass_by_its_type(MEDIA_STREAMER_NODE_TYPE_TEXT_OVERLAY))) { - found_element = __ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_TEXT_OVERLAY); + if (__ms_bin_find_element_by_type(found_element, src_pad, ms_streamer->transform_bin, ms_node_get_klass_by_its_type(MEDIA_STREAMER_NODE_TYPE_TEXT_OVERLAY))) { + found_element = ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_TEXT_OVERLAY); src_pad = NULL; } if (sink_bin_type == MEDIA_STREAMER_SINK_BIN_RTP_SERVER) { - found_element = __ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_PAY); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_RTP); + found_element = ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_PAY); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_RTP); } else if (sink_bin_type == MEDIA_STREAMER_SINK_BIN_ADAPTIVE) { - found_element = __ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_MUXER); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); + found_element = ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_MUXER); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); } else { caps = gst_pad_query_caps(src_pad, NULL); caps_str = gst_caps_to_string(caps); if (caps_str && (g_strrstr(caps_str, "ST12") || g_strrstr(caps_str, "SN12") || g_strrstr(caps_str, "SN21") || g_strrstr(caps_str, "S420") || g_strrstr(caps_str, "SR32"))) { - found_element = __ms_combine_next_element(found_element, src_pad, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); + found_element = ms_combine_next_element(found_element, src_pad, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); } else { - found_element = __ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_CONVERTER); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); + found_element = ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_CONVERTER); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); } MS_SAFE_GFREE(caps_str); gst_caps_unref(caps); } } else if (MS_ELEMENT_IS_AUDIO(new_pad_type)) { if (sink_bin_type == MEDIA_STREAMER_SINK_BIN_RTP_SERVER) { - found_element = __ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_PAY); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_RTP); + found_element = ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_PAY); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_RTP); } else if (sink_bin_type == MEDIA_STREAMER_SINK_BIN_ADAPTIVE) { - found_element = __ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_MUXER); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); + found_element = ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_MUXER); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); } else { - found_element = __ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_CONVERTER); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); + found_element = ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_CONVERTER); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); } } else if (MS_ELEMENT_IS_TEXT(new_pad_type)) { - found_element = __ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_TEXT_OVERLAY); + found_element = ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_TEXT_OVERLAY); } else { ms_error("Unsupported pad type [%s]!", new_pad_type); } - __ms_generate_dots(ms_streamer->pipeline, "after_sink_linked"); + ms_generate_dots(ms_streamer->pipeline, "after_sink_linked"); gst_object_unref(found_element); ms_debug_fleave(); @@ -795,7 +795,7 @@ static void __decodebin_nomore_pads_cb(GstElement *decodebin, gpointer user_data ms_debug_fleave(); } -GstElement *__ms_decodebin_create(media_streamer_s *ms_streamer, char *name) +static GstElement *__ms_decodebin_create(media_streamer_s *ms_streamer, char *name) { GstElement *decodebin = NULL; @@ -803,13 +803,13 @@ GstElement *__ms_decodebin_create(media_streamer_s *ms_streamer, char *name) ms_retvm_if(!ms_streamer, NULL, "ms_streamer is NULL"); - decodebin = __ms_element_create(DEFAULT_DECODEBIN, name); - __ms_bin_add_element(ms_streamer->transform_bin, decodebin, TRUE); + decodebin = ms_element_create(DEFAULT_DECODEBIN, name); + ms_bin_add_element(ms_streamer->transform_bin, decodebin, TRUE); gst_element_sync_state_with_parent(decodebin); - __ms_signal_create(&ms_streamer->autoplug_sig_list, decodebin, "pad-added", G_CALLBACK(__decodebin_pad_added_cb), ms_streamer); - __ms_signal_create(&ms_streamer->autoplug_sig_list, decodebin, "autoplug-select", G_CALLBACK(__decodebin_autoplug_select_cb), ms_streamer); - __ms_signal_create(&ms_streamer->autoplug_sig_list, decodebin, "no-more-pads", G_CALLBACK(__decodebin_nomore_pads_cb), ms_streamer); + ms_signal_create(&ms_streamer->autoplug_sig_list, decodebin, "pad-added", G_CALLBACK(__decodebin_pad_added_cb), ms_streamer); + ms_signal_create(&ms_streamer->autoplug_sig_list, decodebin, "autoplug-select", G_CALLBACK(__decodebin_autoplug_select_cb), ms_streamer); + ms_signal_create(&ms_streamer->autoplug_sig_list, decodebin, "no-more-pads", G_CALLBACK(__decodebin_nomore_pads_cb), ms_streamer); ms_debug_fleave(); @@ -833,8 +833,8 @@ static gboolean __ms_sink_bin_prepare(media_streamer_s *ms_streamer, GstPad *src if (MS_ELEMENT_IS_VIDEO(src_pad_type)) { gst_object_ref(parent_rtp_element); - found_element = __ms_combine_next_element(parent_rtp_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_DEPAY); - decoder_element = __ms_bin_find_element_by_type(found_element, NULL, ms_streamer->transform_bin, __ms_node_get_klass_by_its_type(MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER)); + found_element = ms_combine_next_element(parent_rtp_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_DEPAY); + decoder_element = __ms_bin_find_element_by_type(found_element, NULL, ms_streamer->transform_bin, ms_node_get_klass_by_its_type(MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER)); if (!decoder_element) { if (ms_streamer->ini.use_decodebin) { @@ -848,18 +848,18 @@ static gboolean __ms_sink_bin_prepare(media_streamer_s *ms_streamer, GstPad *src return TRUE; } else { gst_object_ref(found_element); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); } } else { __ms_link_two_elements(found_element, NULL, decoder_element); - found_element = __ms_combine_next_element(decoder_element, NULL, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); + found_element = ms_combine_next_element(decoder_element, NULL, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); } } else if (MS_ELEMENT_IS_AUDIO(src_pad_type)) { gst_object_ref(parent_rtp_element); - found_element = __ms_combine_next_element(parent_rtp_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_DEPAY); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); + found_element = ms_combine_next_element(parent_rtp_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_DEPAY); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->sink_bin, MEDIA_STREAMER_NODE_TYPE_SINK); } else { ms_info("Unknown media type received from rtp element!"); } @@ -871,7 +871,7 @@ static gboolean __ms_sink_bin_prepare(media_streamer_s *ms_streamer, GstPad *src return TRUE; } -void __ms_rtpbin_pad_added_cb(GstElement *src, GstPad *new_pad, gpointer user_data) +void ms_rtpbin_pad_added_cb(GstElement *src, GstPad *new_pad, gpointer user_data) { media_streamer_s *ms_streamer = NULL; GstPad *target_pad = NULL; @@ -912,8 +912,8 @@ void __ms_rtpbin_pad_added_cb(GstElement *src, GstPad *new_pad, gpointer user_da gst_ghost_pad_set_target(GST_GHOST_PAD(src_pad), new_pad); if (src_pad && __ms_sink_bin_prepare(ms_streamer, src_pad, src_pad_type)) { - __ms_element_set_state(ms_node->gst_element, GST_STATE_PLAYING); - __ms_generate_dots(ms_streamer->pipeline, "rtpbin_playing"); + ms_element_set_state(ms_node->gst_element, GST_STATE_PLAYING); + ms_generate_dots(ms_streamer->pipeline, "rtpbin_playing"); } else { ms_error("Failed to prepare sink_bin for pad type [%s]", src_pad_type); } @@ -930,7 +930,7 @@ void __ms_rtpbin_pad_added_cb(GstElement *src, GstPad *new_pad, gpointer user_da } //LCOV_EXCL_STOP -void __ms_demux_pad_added_cb(GstElement *element, GstPad *new_pad, gpointer user_data) +void ms_demux_pad_added_cb(GstElement *element, GstPad *new_pad, gpointer user_data) { media_streamer_s *ms_streamer = (media_streamer_s *) user_data; @@ -950,7 +950,7 @@ void __ms_demux_pad_added_cb(GstElement *element, GstPad *new_pad, gpointer user ms_debug_fleave(); } -void __ms_hlsdemux_pad_added_cb(GstElement *element, GstPad *new_pad, gpointer user_data) +void ms_hlsdemux_pad_added_cb(GstElement *element, GstPad *new_pad, gpointer user_data) { GstPad *gp = NULL; @@ -970,24 +970,24 @@ static void __demux_nomore_pads_combine(GstPad *src_pad, media_streamer_s *ms_st ms_debug_fenter(); found_element = gst_pad_get_parent_element(src_pad); - new_pad_type = __ms_get_pad_type(src_pad); + new_pad_type = ms_get_pad_type(src_pad); if (MS_ELEMENT_IS_VIDEO(new_pad_type)) - found_element = __ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER); + found_element = ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER); else if (MS_ELEMENT_IS_AUDIO(new_pad_type)) - found_element = __ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER); + found_element = ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER); else if (MS_ELEMENT_IS_TEXT(new_pad_type)) - found_element = __ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_TEXT_OVERLAY); + found_element = ms_combine_next_element(found_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_TEXT_OVERLAY); else ms_error("Unsupported pad type [%s]!", new_pad_type); - __ms_generate_dots(ms_streamer->pipeline, "after_demux_linked"); + ms_generate_dots(ms_streamer->pipeline, "after_demux_linked"); gst_object_unref(found_element); ms_debug_fleave(); } -void __ms_demux_nomore_pads_cb(GstElement *element, gpointer user_data) +void ms_demux_nomore_pads_cb(GstElement *element, gpointer user_data) { media_streamer_s *ms_streamer = (media_streamer_s *) user_data; GList *iterator = NULL; @@ -1010,7 +1010,7 @@ void __ms_demux_nomore_pads_cb(GstElement *element, gpointer user_data) ms_debug_fleave(); } -int __ms_element_set_state(GstElement *element, GstState state) +int ms_element_set_state(GstElement *element, GstState state) { GstStateChangeReturn ret_state; @@ -1030,7 +1030,7 @@ int __ms_element_set_state(GstElement *element, GstState state) return MEDIA_STREAMER_ERROR_NONE; } -GstElement *__ms_element_create(const char *plugin_name, const char *name) +GstElement *ms_element_create(const char *plugin_name, const char *name) { GstElement *plugin_elem = NULL; @@ -1077,25 +1077,25 @@ static int __ms_adaptive_sink_prepare(media_streamer_s *ms_streamer) video_enc_plug_info.info = &(nodes_info[0]); video_enc_plug_info.src_caps = video_enc_src_caps; video_enc_plug_info.sink_caps = video_enc_sink_caps; - video_enc = __ms_node_element_create(&video_enc_plug_info, MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER); + video_enc = ms_node_element_create(&video_enc_plug_info, MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER); audio_enc_src_caps = gst_caps_new_simple("audio/mpeg", "mpegversion", G_TYPE_INT, 4, NULL); audio_enc_sink_caps = gst_caps_new_empty_simple("audio/x-raw"); audio_enc_plug_info.info = &(nodes_info[1]); audio_enc_plug_info.src_caps = audio_enc_src_caps; audio_enc_plug_info.sink_caps = audio_enc_sink_caps; - audio_enc = __ms_node_element_create(&audio_enc_plug_info, MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER); + audio_enc = ms_node_element_create(&audio_enc_plug_info, MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER); muxer_src_caps = gst_caps_new_empty_simple("video/mpegts"); mux_plug_info.info = &(nodes_info[2]); mux_plug_info.src_caps = muxer_src_caps; - muxer = __ms_node_element_create(&mux_plug_info, MEDIA_STREAMER_NODE_TYPE_MUXER); + muxer = ms_node_element_create(&mux_plug_info, MEDIA_STREAMER_NODE_TYPE_MUXER); - __ms_bin_add_element(ms_streamer->transform_bin, muxer, FALSE); + ms_bin_add_element(ms_streamer->transform_bin, muxer, FALSE); gst_element_sync_state_with_parent(muxer); - __ms_bin_add_element(ms_streamer->transform_bin, video_enc, FALSE); + ms_bin_add_element(ms_streamer->transform_bin, video_enc, FALSE); gst_element_sync_state_with_parent(video_enc); - __ms_bin_add_element(ms_streamer->transform_bin, audio_enc, FALSE); + ms_bin_add_element(ms_streamer->transform_bin, audio_enc, FALSE); gst_element_sync_state_with_parent(audio_enc); ms_debug_fleave(); @@ -1103,7 +1103,7 @@ static int __ms_adaptive_sink_prepare(media_streamer_s *ms_streamer) return MEDIA_STREAMER_ERROR_NONE; } -GstElement *__ms_adaptive_element_create(void) +GstElement *ms_adaptive_element_create(void) { GstElement *adaptive_bin = NULL; @@ -1170,7 +1170,7 @@ static gboolean __ms_feature_node_filter(GstPluginFeature *feature, gpointer dat return FALSE; } -static GstElement *__ms_element_create_from_ini(node_plug_s *plug_info, media_streamer_node_type_e type) +static GstElement *ms_element_create_from_ini(node_plug_s *plug_info, media_streamer_node_type_e type) { const gchar *src_type, *sink_type; const gchar *format_type; @@ -1211,10 +1211,10 @@ static GstElement *__ms_element_create_from_ini(node_plug_s *plug_info, media_st return NULL; } - plugin_name = __ms_ini_get_string(conf_key, NULL); + plugin_name = ms_ini_get_string(conf_key, NULL); if (plugin_name) { - gst_element = __ms_element_create(plugin_name, NULL); + gst_element = ms_element_create(plugin_name, NULL); MS_SAFE_GFREE(plugin_name); } @@ -1223,7 +1223,7 @@ static GstElement *__ms_element_create_from_ini(node_plug_s *plug_info, media_st return gst_element; } -static GstElement *__ms_element_create_by_registry(node_plug_s *plug_info, media_streamer_node_type_e type) +static GstElement *ms_element_create_by_registry(node_plug_s *plug_info, media_streamer_node_type_e type) { GstElement *gst_element = NULL; const gchar *src_type = NULL; @@ -1238,7 +1238,7 @@ static GstElement *__ms_element_create_by_registry(node_plug_s *plug_info, media MS_GET_CAPS_TYPE(plug_info->src_caps, src_type); MS_GET_CAPS_TYPE(plug_info->sink_caps, sink_type); - __ms_ini_read_list("general:exclude elements", &plug_info->exclude_names); + ms_ini_read_list("general:exclude elements", &plug_info->exclude_names); factories = gst_registry_feature_filter(gst_registry_get(), __ms_feature_node_filter, FALSE, plug_info); @@ -1247,7 +1247,7 @@ static GstElement *__ms_element_create_by_registry(node_plug_s *plug_info, media if (factories) { factory = GST_ELEMENT_FACTORY(factories->data); ms_info("Sorted result element is [%s]", GST_OBJECT_NAME(factory)); - gst_element = __ms_element_create(GST_OBJECT_NAME(factory), NULL); + gst_element = ms_element_create(GST_OBJECT_NAME(factory), NULL); } else { ms_debug("Could not find any compatible element for node [%d]: in[%s] - out[%s]", type, sink_type, src_type); @@ -1287,18 +1287,18 @@ static GstElement *__ms_video_encoder_element_create(node_plug_s *plug_info) } /* Creating Scaler, Converter */ - video_scale = __ms_element_create(DEFAULT_VIDEO_SCALE, NULL); - video_convert = __ms_element_create(DEFAULT_VIDEO_CONVERT, NULL); + video_scale = ms_element_create(DEFAULT_VIDEO_SCALE, NULL); + video_convert = ms_element_create(DEFAULT_VIDEO_CONVERT, NULL); /* Creating Video Encoder */ - encoder_info.info = __ms_node_get_klass_by_its_type(MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER); + encoder_info.info = ms_node_get_klass_by_its_type(MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER); encoder_info.src_caps = enc_caps; encoder_info.sink_caps = plug_info->sink_caps; encoder_info.exclude_names = NULL; - encoder_elem = __ms_element_create_from_ini(&encoder_info, MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER); + encoder_elem = ms_element_create_from_ini(&encoder_info, MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER); if (!encoder_elem) - encoder_elem = __ms_element_create_by_registry(&encoder_info, MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER); + encoder_elem = ms_element_create_by_registry(&encoder_info, MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER); /* Creating Video Parser */ parser_info.info = &node_info; @@ -1306,9 +1306,9 @@ static GstElement *__ms_video_encoder_element_create(node_plug_s *plug_info) parser_info.sink_caps = enc_caps; parser_info.exclude_names = NULL; - encoder_parser = __ms_element_create_from_ini(&parser_info, MEDIA_STREAMER_NODE_TYPE_PARSER); + encoder_parser = ms_element_create_from_ini(&parser_info, MEDIA_STREAMER_NODE_TYPE_PARSER); if (!encoder_parser) - encoder_parser = __ms_element_create_by_registry(&parser_info, MEDIA_STREAMER_NODE_TYPE_PARSER); + encoder_parser = ms_element_create_by_registry(&parser_info, MEDIA_STREAMER_NODE_TYPE_PARSER); /* Creating bin - Video Encoder */ encoder_bin = gst_bin_new("video_encoder"); @@ -1320,7 +1320,7 @@ static GstElement *__ms_video_encoder_element_create(node_plug_s *plug_info) /* Settings if H264 format is set*/ MS_GET_CAPS_TYPE(enc_caps, src_type); - encoder_type = __ms_convert_string_format_to_media_format(src_type); + encoder_type = ms_convert_string_format_to_media_format(src_type); if (encoder_type == MEDIA_FORMAT_H264_SP) { g_object_set(GST_OBJECT(encoder_parser), "config-interval", H264_PARSER_CONFIG_INTERVAL, NULL); g_object_set(G_OBJECT(encoder_elem), "tune", H264_ENCODER_ZEROLATENCY, NULL); @@ -1388,14 +1388,14 @@ static GstElement *__ms_video_decoder_element_create(node_plug_s *plug_info) } /* Creating Video Decoder */ - decoder_info.info = __ms_node_get_klass_by_its_type(MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER); + decoder_info.info = ms_node_get_klass_by_its_type(MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER); decoder_info.src_caps = plug_info->src_caps; decoder_info.sink_caps = dec_caps; decoder_info.exclude_names = NULL; - decoder_elem = __ms_element_create_from_ini(&decoder_info, MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER); + decoder_elem = ms_element_create_from_ini(&decoder_info, MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER); if (!decoder_elem) - decoder_elem = __ms_element_create_by_registry(&decoder_info, MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER); + decoder_elem = ms_element_create_by_registry(&decoder_info, MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER); /* Creating Video Parser */ parser_info.info = &nodes_info; @@ -1403,18 +1403,18 @@ static GstElement *__ms_video_decoder_element_create(node_plug_s *plug_info) parser_info.sink_caps = dec_caps; parser_info.exclude_names = NULL; - decoder_parser = __ms_element_create_from_ini(&parser_info, MEDIA_STREAMER_NODE_TYPE_PARSER); + decoder_parser = ms_element_create_from_ini(&parser_info, MEDIA_STREAMER_NODE_TYPE_PARSER); if (!decoder_parser) - decoder_parser = __ms_element_create_by_registry(&parser_info, MEDIA_STREAMER_NODE_TYPE_PARSER); + decoder_parser = ms_element_create_by_registry(&parser_info, MEDIA_STREAMER_NODE_TYPE_PARSER); /* Settings if H264 format is set*/ MS_GET_CAPS_TYPE(dec_caps, sink_type); - decoder_type = __ms_convert_string_format_to_media_format(sink_type); + decoder_type = ms_convert_string_format_to_media_format(sink_type); if (decoder_type == MEDIA_FORMAT_H264_SP) g_object_set(G_OBJECT(decoder_parser), "config-interval", H264_PARSER_CONFIG_INTERVAL, NULL); /* Creating bin - Video Decoder */ - decoder_queue = __ms_element_create("queue", NULL); + decoder_queue = ms_element_create("queue", NULL); decoder_bin = gst_bin_new("video_decoder"); if (!decoder_elem || !decoder_queue || !decoder_parser || !decoder_bin) { @@ -1438,8 +1438,8 @@ static GstElement *__ms_video_decoder_element_create(node_plug_s *plug_info) last_elem = decoder_elem; if (!is_hw_codec) { - video_conv = __ms_element_create("videoconvert", NULL); - video_scale = __ms_element_create("videoscale", NULL); + video_conv = ms_element_create("videoconvert", NULL); + video_scale = ms_element_create("videoscale", NULL); if (!video_conv || !video_scale) { ms_error("Error: creating elements for video decoder bin"); goto ERROR; @@ -1501,20 +1501,20 @@ static GstElement *__ms_audio_encoder_element_create(node_plug_s *plug_info) } /* Creating Converter, Resampler, Filter */ - audio_convert = __ms_element_create(DEFAULT_AUDIO_CONVERT, NULL); - audio_resample = __ms_element_create(DEFAULT_AUDIO_RESAMPLE, NULL); - audio_filter = __ms_element_create(DEFAULT_FILTER, NULL); - audio_postenc_convert = __ms_element_create(DEFAULT_AUDIO_CONVERT, NULL); + audio_convert = ms_element_create(DEFAULT_AUDIO_CONVERT, NULL); + audio_resample = ms_element_create(DEFAULT_AUDIO_RESAMPLE, NULL); + audio_filter = ms_element_create(DEFAULT_FILTER, NULL); + audio_postenc_convert = ms_element_create(DEFAULT_AUDIO_CONVERT, NULL); /* Creating Audio Encoder */ - plug_info_encoder.info = __ms_node_get_klass_by_its_type(MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER); + plug_info_encoder.info = ms_node_get_klass_by_its_type(MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER); plug_info_encoder.src_caps = enc_caps; plug_info_encoder.sink_caps = plug_info->sink_caps; plug_info_encoder.exclude_names = NULL; - audio_encoder = __ms_element_create_from_ini(&plug_info_encoder, MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER); + audio_encoder = ms_element_create_from_ini(&plug_info_encoder, MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER); if (!audio_encoder) - audio_encoder = __ms_element_create_by_registry(&plug_info_encoder, MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER); + audio_encoder = ms_element_create_by_registry(&plug_info_encoder, MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER); encoder_name = gst_element_get_name(audio_encoder); if (encoder_name && g_strrstr(encoder_name, "aac")) @@ -1585,14 +1585,14 @@ static GstElement *__ms_audio_decoder_element_create(node_plug_s *plug_info) } /* Creating Audio Decoder */ - decoder_info.info = __ms_node_get_klass_by_its_type(MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER); + decoder_info.info = ms_node_get_klass_by_its_type(MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER); decoder_info.src_caps = plug_info->src_caps; decoder_info.sink_caps = dec_caps; decoder_info.exclude_names = NULL; - decoder_elem = __ms_element_create_from_ini(&decoder_info, MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER); + decoder_elem = ms_element_create_from_ini(&decoder_info, MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER); if (!decoder_elem) - decoder_elem = __ms_element_create_by_registry(&decoder_info, MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER); + decoder_elem = ms_element_create_by_registry(&decoder_info, MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER); /* Creating Audio Parser */ parser_info.info = &nodes_info; @@ -1600,13 +1600,13 @@ static GstElement *__ms_audio_decoder_element_create(node_plug_s *plug_info) parser_info.sink_caps = dec_caps; parser_info.exclude_names = NULL; - decoder_parser = __ms_element_create_from_ini(&parser_info, MEDIA_STREAMER_NODE_TYPE_PARSER); + decoder_parser = ms_element_create_from_ini(&parser_info, MEDIA_STREAMER_NODE_TYPE_PARSER); if (!decoder_parser) - decoder_parser = __ms_element_create_by_registry(&parser_info, MEDIA_STREAMER_NODE_TYPE_PARSER); + decoder_parser = ms_element_create_by_registry(&parser_info, MEDIA_STREAMER_NODE_TYPE_PARSER); /* Creating bin - Audio Decoder */ decoder_bin = gst_bin_new("audio_decoder"); - decoder_queue = __ms_element_create("queue", NULL); + decoder_queue = ms_element_create("queue", NULL); if (!decoder_elem || !decoder_queue || !decoder_parser || !decoder_bin) { ms_error("Error: creating elements for audio decoder bin"); goto ERROR; @@ -1621,8 +1621,8 @@ static GstElement *__ms_audio_decoder_element_create(node_plug_s *plug_info) return NULL; } - audio_conv = __ms_element_create("audioconvert", NULL); - audio_resample = __ms_element_create("audioresample", NULL); + audio_conv = ms_element_create("audioconvert", NULL); + audio_resample = ms_element_create("audioresample", NULL); if (!audio_conv || !audio_resample) { ms_error("Error: creating elements for audio decoder bin"); goto ERROR; @@ -1657,7 +1657,7 @@ ERROR: return NULL; } -GstElement *__ms_node_element_create(node_plug_s *plug_info, media_streamer_node_type_e type) +GstElement *ms_node_element_create(node_plug_s *plug_info, media_streamer_node_type_e type) { GstElement *gst_element = NULL; const gchar *src_type = NULL; @@ -1682,18 +1682,18 @@ GstElement *__ms_node_element_create(node_plug_s *plug_info, media_streamer_node else if (type == MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER) gst_element = __ms_video_decoder_element_create(plug_info); else if (type == MEDIA_STREAMER_NODE_TYPE_AUDIO_CONVERTER || type == MEDIA_STREAMER_NODE_TYPE_VIDEO_CONVERTER) - gst_element = __ms_element_create(plug_info->info->default_name, NULL); + gst_element = ms_element_create(plug_info->info->default_name, NULL); else if (g_strrstr(MEDIA_STREAMER_STRICT, plug_info->info->klass_name) || (!src_type && !sink_type)) { if (type == MEDIA_STREAMER_NODE_TYPE_RTP) - gst_element = __ms_rtp_element_create(); + gst_element = ms_rtp_element_create(); else - gst_element = __ms_element_create(plug_info->info->default_name, NULL); + gst_element = ms_element_create(plug_info->info->default_name, NULL); } else { /* 2. Second priority: * Try to get plugin name that defined in ini file * according with node type and specified format. */ - gst_element = __ms_element_create_from_ini(plug_info, type); + gst_element = ms_element_create_from_ini(plug_info, type); } /* 3. Third priority: @@ -1702,7 +1702,7 @@ GstElement *__ms_node_element_create(node_plug_s *plug_info, media_streamer_node * Elements that are compatible but defined as excluded will be skipped*/ if (!gst_element) { /* Read exclude elements list */ - gst_element = __ms_element_create_by_registry(plug_info, type); + gst_element = ms_element_create_by_registry(plug_info, type); } if (type == MEDIA_STREAMER_NODE_TYPE_FILTER) { @@ -1715,7 +1715,7 @@ GstElement *__ms_node_element_create(node_plug_s *plug_info, media_streamer_node return gst_element; } -GstElement *__ms_rtp_element_create(void) +GstElement *ms_rtp_element_create(void) { GstElement *rtp_container = NULL; @@ -1807,7 +1807,7 @@ static GstPadProbeReturn __ms_element_event_probe(GstPad * pad, GstPadProbeInfo return GST_PAD_PROBE_PASS; } -gboolean __ms_element_lock_state(const GValue *item, GValue *ret, gpointer user_data) +gboolean ms_element_lock_state(const GValue *item, GValue *ret, gpointer user_data) { GstElement *sink_element = NULL; GstPad *sink_pad = NULL; @@ -1841,7 +1841,7 @@ gboolean __ms_element_lock_state(const GValue *item, GValue *ret, gpointer user_ return TRUE; } -gboolean __ms_element_unlock_state(const GValue *item, GValue *ret, gpointer user_data) +gboolean ms_element_unlock_state(const GValue *item, GValue *ret, gpointer user_data) { GstElement *sink_element = NULL; GValue *val = NULL; @@ -1912,7 +1912,7 @@ static gboolean __ms_bus_cb(GstBus *bus, GstMessage *message, gpointer userdata) state_transition_name = g_strdup_printf("Old_[%s]_New_[%s]_Pending_[%s]", gst_element_state_get_name(state_old), gst_element_state_get_name(state_new), gst_element_state_get_name(state_pending)); ms_info("GST_MESSAGE_STATE_CHANGED: [%s] %s. ", GST_OBJECT_NAME(GST_MESSAGE_SRC(message)), state_transition_name); - __ms_generate_dots(ms_streamer->pipeline, state_transition_name); + ms_generate_dots(ms_streamer->pipeline, state_transition_name); MS_SAFE_GFREE(state_transition_name); media_streamer_state_e old_state = ms_streamer->state; @@ -1962,7 +1962,7 @@ static gboolean __ms_bus_cb(GstBus *bus, GstMessage *message, gpointer userdata) } case GST_MESSAGE_EOS:{ ms_info("GST_MESSAGE_EOS end-of-stream"); - ret = __ms_element_set_state(ms_streamer->pipeline, GST_STATE_PAUSED); + ret = ms_element_set_state(ms_streamer->pipeline, GST_STATE_PAUSED); if (ret != MEDIA_STREAMER_ERROR_NONE) { ms_error("ERROR - Pause Pipeline"); return FALSE; @@ -2045,7 +2045,7 @@ static int __ms_gstreamer_init(media_streamer_s *ms_streamer) return ret; } -int __ms_pipeline_create(media_streamer_s *ms_streamer) +int ms_pipeline_create(media_streamer_s *ms_streamer) { int ret = MEDIA_STREAMER_ERROR_NONE; @@ -2083,7 +2083,7 @@ int __ms_pipeline_create(media_streamer_s *ms_streamer) return ret; } -static gboolean demux_find(gpointer key, gpointer value, gpointer user_data) +static gboolean __demux_find(gpointer key, gpointer value, gpointer user_data) { return g_strrstr((char *)key, "demux") != NULL; } @@ -2127,12 +2127,12 @@ static gboolean __ms_bin_unprepare(media_streamer_s *ms_streamer, GstElement *bi found_node = (media_streamer_node_s *) g_hash_table_lookup(ms_streamer->nodes_table, GST_ELEMENT_NAME(found_element)); if (found_node) { if (!found_node->linked_by_user) - ret = ret && __ms_element_unlink(found_element); + ret = ret && ms_element_unlink(found_element); else ms_info("Unprepare skipped user-linked node [%s]", found_node->name); - __ms_generate_dots(ms_streamer->pipeline, GST_ELEMENT_NAME(found_element)); + ms_generate_dots(ms_streamer->pipeline, GST_ELEMENT_NAME(found_element)); } else { - ret = ret && __ms_bin_remove_element(found_element); + ret = ret && ms_bin_remove_element(found_element); } g_value_reset(&element); @@ -2152,7 +2152,7 @@ static gboolean __ms_bin_unprepare(media_streamer_s *ms_streamer, GstElement *bi return ret; } -int __ms_pipeline_prepare(media_streamer_s *ms_streamer) +int ms_pipeline_prepare(media_streamer_s *ms_streamer) { int ret = MEDIA_STREAMER_ERROR_NONE; media_streamer_node_s *rtp = NULL; @@ -2168,14 +2168,14 @@ int __ms_pipeline_prepare(media_streamer_s *ms_streamer) ms_retvm_if(ms_streamer->transform_bin == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "ms_streamer->transform_bin is NULL"); rtp = (media_streamer_node_s *)g_hash_table_lookup(ms_streamer->nodes_table, "rtp_container"); - demux = (media_streamer_node_s *)g_hash_table_find(ms_streamer->nodes_table, (GHRFunc)demux_find, NULL); + demux = (media_streamer_node_s *)g_hash_table_find(ms_streamer->nodes_table, (GHRFunc)__demux_find, NULL); adaptive_src = (media_streamer_node_s *)g_hash_table_lookup(ms_streamer->nodes_table, "adaptive_src"); adaptive_sink = (media_streamer_node_s *)g_hash_table_lookup(ms_streamer->nodes_table, "adaptive_sink"); if (rtp) { - ret = __ms_rtp_node_prepare(rtp) ? MEDIA_STREAMER_ERROR_NONE : MEDIA_STREAMER_ERROR_INVALID_PARAMETER; + ret = ms_rtp_node_prepare(rtp) ? MEDIA_STREAMER_ERROR_NONE : MEDIA_STREAMER_ERROR_INVALID_PARAMETER; } else if (demux) { - ret = __ms_demux_node_prepare(ms_streamer, demux); + ret = ms_demux_node_prepare(ms_streamer, demux); if (MEDIA_STREAMER_ERROR_NONE != ret) ms_error("Failed to prepare demux element"); } else { @@ -2193,30 +2193,30 @@ int __ms_pipeline_prepare(media_streamer_s *ms_streamer) if (adaptive_src) { if (GST_BIN(ms_streamer->transform_bin)->numchildren == 0) - ret = __ms_adaptive_src_node_prepare(adaptive_src, true); + ret = ms_adaptive_src_node_prepare(adaptive_src, true); else - ret = __ms_adaptive_src_node_prepare(adaptive_src, false); + ret = ms_adaptive_src_node_prepare(adaptive_src, false); } if (adaptive_sink) - ret = __ms_adaptive_sink_node_prepare(ms_streamer, adaptive_sink); + ret = ms_adaptive_sink_node_prepare(ms_streamer, adaptive_sink); if (ret != MEDIA_STREAMER_ERROR_NONE) goto prepare_fail; - ret = __ms_bin_foreach_elements(GST_BIN(ms_streamer->sink_bin), _ms_sink_node_prepare_iter, ms_streamer); + ret = ms_bin_foreach_elements(GST_BIN(ms_streamer->sink_bin), ms_sink_node_prepare_iter, ms_streamer); if (MEDIA_STREAMER_ERROR_NONE != ret) { ms_error("Failed to prepare nodes within sink bin"); goto prepare_fail; } - ret = __ms_bin_foreach_elements(GST_BIN(ms_streamer->src_bin), _ms_src_node_prepare_iter, ms_streamer); + ret = ms_bin_foreach_elements(GST_BIN(ms_streamer->src_bin), ms_src_node_prepare_iter, ms_streamer); if (MEDIA_STREAMER_ERROR_NONE != ret) { ms_error("Failed to prepare nodes within src bin"); goto prepare_fail; } - ret = __ms_state_change(ms_streamer, MEDIA_STREAMER_STATE_READY); + ret = ms_state_change(ms_streamer, MEDIA_STREAMER_STATE_READY); if (ret != MEDIA_STREAMER_ERROR_NONE) goto prepare_fail; @@ -2225,11 +2225,11 @@ int __ms_pipeline_prepare(media_streamer_s *ms_streamer) return ret; prepare_fail: - __ms_pipeline_unprepare(ms_streamer); + ms_pipeline_unprepare(ms_streamer); return ret; } -int __ms_pipeline_unprepare(media_streamer_s *ms_streamer) +int ms_pipeline_unprepare(media_streamer_s *ms_streamer) { int ret = MEDIA_STREAMER_ERROR_NONE; @@ -2238,13 +2238,13 @@ int __ms_pipeline_unprepare(media_streamer_s *ms_streamer) ms_retvm_if(ms_streamer == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "Handle is NULL"); ms_retvm_if(ms_streamer->nodes_table == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "ms_streamer->nodes_table is NULL"); - ret = __ms_state_change(ms_streamer, MEDIA_STREAMER_STATE_IDLE); + ret = ms_state_change(ms_streamer, MEDIA_STREAMER_STATE_IDLE); if (ret != MEDIA_STREAMER_ERROR_NONE) ms_error("Failed to unprepare pipeline"); if (!ms_streamer->is_interrupted) { /* Unprepare resources in case of failure */ - __ms_release_resources(ms_streamer); + ms_release_resources(ms_streamer); if (ms_streamer->video_decoder_resource != NULL) { ret = mm_resource_manager_mark_for_release(ms_streamer->resource_manager, @@ -2261,7 +2261,7 @@ int __ms_pipeline_unprepare(media_streamer_s *ms_streamer) } /* Disconnects and clean all autoplug signals */ - g_list_free_full(ms_streamer->autoplug_sig_list, __ms_signal_destroy); + g_list_free_full(ms_streamer->autoplug_sig_list, ms_signal_destroy); ms_streamer->autoplug_sig_list = NULL; /* Removes all pending pads according to list */ @@ -2270,7 +2270,7 @@ int __ms_pipeline_unprepare(media_streamer_s *ms_streamer) media_streamer_node_s *rtp_node = (media_streamer_node_s *)g_hash_table_lookup(ms_streamer->nodes_table, "rtp_container"); if (rtp_node) { - g_list_free_full(rtp_node->sig_list, __ms_signal_destroy); + g_list_free_full(rtp_node->sig_list, ms_signal_destroy); rtp_node->sig_list = NULL; __ms_bin_unprepare(ms_streamer, rtp_node->gst_element); } @@ -2284,7 +2284,26 @@ int __ms_pipeline_unprepare(media_streamer_s *ms_streamer) return ret; } -GstCaps *__ms_create_caps_from_fmt(media_format_h fmt) +void ms_pipeline_get_state(media_streamer_s *ms_streamer) +{ + GstState state_old = GST_STATE_NULL, state_new = GST_STATE_NULL; + GstStateChangeReturn ret_state = -1; + + ms_debug_fenter(); + + ms_retm_if(ms_streamer == NULL, "ms_streamer is NULL"); + ms_retm_if(ms_streamer->pipeline == NULL, "ms_streamer->pipeline is NULL"); + + ret_state = gst_element_get_state(ms_streamer->pipeline, &state_old, &state_new, GST_CLOCK_TIME_NONE); + if (ret_state == GST_STATE_CHANGE_SUCCESS) + ms_info("Got state for [%s]: old [%s], new [%s]", GST_ELEMENT_NAME(ms_streamer->pipeline), gst_element_state_get_name(state_old), gst_element_state_get_name(state_new)); + else + ms_error("Couldn`t get state for [%s]", GST_ELEMENT_NAME(ms_streamer->pipeline)); + + ms_debug_fleave(); +} + +GstCaps *ms_create_caps_from_fmt(media_format_h fmt) { GstCaps *caps = NULL; gchar *caps_name = NULL; @@ -2295,14 +2314,14 @@ GstCaps *__ms_create_caps_from_fmt(media_format_h fmt) if (!media_format_get_audio_info(fmt, &mime, &channel, &samplerate, &bit, &avg_bps)) { if (MEDIA_FORMAT_RAW == (mime & MEDIA_FORMAT_RAW)) { - caps = gst_caps_new_simple("audio/x-raw", "format", G_TYPE_STRING, __ms_convert_mime_to_string_format(mime), NULL); + caps = gst_caps_new_simple("audio/x-raw", "format", G_TYPE_STRING, ms_convert_mime_to_string_format(mime), NULL); } else if (MEDIA_FORMAT_ENCODED == (mime & MEDIA_FORMAT_ENCODED)) { if (mime == MEDIA_FORMAT_AAC) - caps = gst_caps_new_simple(__ms_convert_mime_to_string_format(mime), "mpegversion", G_TYPE_INT, 4, NULL); + caps = gst_caps_new_simple(ms_convert_mime_to_string_format(mime), "mpegversion", G_TYPE_INT, 4, NULL); else if (mime == MEDIA_FORMAT_MP3) - caps = gst_caps_new_simple(__ms_convert_mime_to_string_format(mime), "mpegversion", G_TYPE_INT, 1, NULL); + caps = gst_caps_new_simple(ms_convert_mime_to_string_format(mime), "mpegversion", G_TYPE_INT, 1, NULL); else - caps = gst_caps_new_simple(__ms_convert_mime_to_string_format(mime), "channels", G_TYPE_INT, channel, "rate", G_TYPE_INT, samplerate, NULL); + caps = gst_caps_new_simple(ms_convert_mime_to_string_format(mime), "channels", G_TYPE_INT, channel, "rate", G_TYPE_INT, samplerate, NULL); } caps_name = gst_caps_to_string(caps); ms_info("Creating Audio Caps from media format [%s]", caps_name); @@ -2310,15 +2329,15 @@ GstCaps *__ms_create_caps_from_fmt(media_format_h fmt) } else if (!media_format_get_video_info(fmt, &mime, &width, &height, &avg_bps, &max_bps)) { if (MEDIA_FORMAT_RAW == (mime & MEDIA_FORMAT_RAW)) caps = gst_caps_new_simple("video/x-raw", "framerate", GST_TYPE_FRACTION, max_bps, - avg_bps, "format", G_TYPE_STRING, __ms_convert_mime_to_string_format(mime), "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL); + avg_bps, "format", G_TYPE_STRING, ms_convert_mime_to_string_format(mime), "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL); else if (MEDIA_FORMAT_ENCODED == (mime & MEDIA_FORMAT_ENCODED)) - caps = gst_caps_new_simple(__ms_convert_mime_to_string_format(mime), "framerate", GST_TYPE_FRACTION, max_bps, + caps = gst_caps_new_simple(ms_convert_mime_to_string_format(mime), "framerate", GST_TYPE_FRACTION, max_bps, avg_bps, "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL); caps_name = gst_caps_to_string(caps); ms_info("Creating Video Caps from media format [%s]", caps_name); } else if (!media_format_get_container_mime(fmt, &mime)) { - caps = gst_caps_new_empty_simple(__ms_convert_mime_to_string_format(mime)); + caps = gst_caps_new_empty_simple(ms_convert_mime_to_string_format(mime)); caps_name = gst_caps_to_string(caps); ms_info("Creating Video Caps from media format [%s]", caps_name); @@ -2369,13 +2388,13 @@ static media_format_h __ms_create_fmt_from_caps(GstCaps *caps) gst_structure_get_fraction(pad_struct, "framerate", &max_bps, &avg_bps); gst_structure_get_int(pad_struct, "height", &height); - media_format_set_video_mime(fmt, __ms_convert_string_format_to_media_format(pad_format)); + media_format_set_video_mime(fmt, ms_convert_string_format_to_media_format(pad_format)); media_format_set_video_width(fmt, width); media_format_set_video_height(fmt, height); media_format_set_video_avg_bps(fmt, avg_bps); media_format_set_video_max_bps(fmt, max_bps); } else if (MS_ELEMENT_IS_AUDIO(pad_type)) { - media_format_set_audio_mime(fmt, __ms_convert_string_format_to_media_format(pad_format)); + media_format_set_audio_mime(fmt, ms_convert_string_format_to_media_format(pad_format)); gst_structure_get_int(pad_struct, "channels", &channels); media_format_set_audio_channel(fmt, channels); gst_structure_get_int(pad_struct, "rate", &bps); @@ -2387,7 +2406,7 @@ static media_format_h __ms_create_fmt_from_caps(GstCaps *caps) return fmt; } -int __ms_element_pad_names(GstElement *gst_element, GstPadDirection pad_type, char ***pad_name_array, int *pads_count) +int ms_element_pad_names(GstElement *gst_element, GstPadDirection pad_type, char ***pad_name_array, int *pads_count) { int ret = MEDIA_STREAMER_ERROR_NONE; int pad_number = 0; @@ -2445,7 +2464,7 @@ int __ms_element_pad_names(GstElement *gst_element, GstPadDirection pad_type, ch return ret; } -int __ms_element_get_pad_fmt(GstElement *gst_element, const char *pad_name, media_format_h *fmt) +int ms_element_get_pad_fmt(GstElement *gst_element, const char *pad_name, media_format_h *fmt) { int ret = MEDIA_STREAMER_ERROR_NONE; GstCaps *allowed_caps = NULL; @@ -2496,7 +2515,7 @@ int __ms_element_get_pad_fmt(GstElement *gst_element, const char *pad_name, medi return ret; } -int __ms_element_set_fmt(GstElement *gst_element, const char *pad_name, media_format_h fmt) +int ms_element_set_fmt(GstElement *element, const char *pad_name, media_format_h fmt) { gboolean can_accept = FALSE; GstCaps *fmt_caps = NULL; @@ -2505,29 +2524,29 @@ int __ms_element_set_fmt(GstElement *gst_element, const char *pad_name, media_fo ms_debug_fenter(); - ms_retvm_if(!gst_element || !pad_name || !fmt, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "Handle is NULL"); + ms_retvm_if(!element || !pad_name || !fmt, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "Handle is NULL"); - fmt_caps = __ms_create_caps_from_fmt(fmt); + fmt_caps = ms_create_caps_from_fmt(fmt); ms_retvm_if(!fmt_caps, MEDIA_STREAMER_ERROR_INVALID_OPERATION, "Can't convert fmt into Caps"); - factory = gst_element_get_factory(gst_element); - node_pad = gst_element_get_static_pad(gst_element, pad_name); + factory = gst_element_get_factory(element); + node_pad = gst_element_get_static_pad(element, pad_name); if (node_pad && GST_PAD_IS_SRC(node_pad)) can_accept = gst_element_factory_can_src_any_caps(factory, fmt_caps); else if (node_pad && GST_PAD_IS_SINK(node_pad)) can_accept = gst_element_factory_can_sink_any_caps(factory, fmt_caps); else - ms_error("[%s] doesn`t have valid pad [%s]", GST_ELEMENT_NAME(gst_element), pad_name); + ms_error("[%s] doesn`t have valid pad [%s]", GST_ELEMENT_NAME(element), pad_name); if (!can_accept) { if (fmt_caps) gst_caps_unref(fmt_caps); - ms_error("[%s]'s pad [%s] can`t be set with the given format", GST_ELEMENT_NAME(gst_element), pad_name); + ms_error("[%s]'s pad [%s] can`t be set with the given format", GST_ELEMENT_NAME(element), pad_name); return MEDIA_STREAMER_ERROR_INVALID_OPERATION; } else { - MS_SET_INT_CAPS_PARAM(gst_element, pad_name, fmt_caps); - ms_info("[%s]'s pad [%s] was set with given format", GST_ELEMENT_NAME(gst_element), pad_name); + MS_SET_INT_CAPS_PARAM(element, pad_name, fmt_caps); + ms_info("[%s]'s pad [%s] was set with given format", GST_ELEMENT_NAME(element), pad_name); } MS_SAFE_UNREF(node_pad); @@ -2537,7 +2556,7 @@ int __ms_element_set_fmt(GstElement *gst_element, const char *pad_name, media_fo return MEDIA_STREAMER_ERROR_NONE; } -gboolean __ms_gst_seek(GstElement *element, gint64 g_time, GstSeekFlags seek_flag) +gboolean ms_gst_seek(GstElement *element, gint64 g_time, GstSeekFlags seek_flag) { gboolean result = FALSE; GstEvent *event = NULL; @@ -2557,7 +2576,7 @@ gboolean __ms_gst_seek(GstElement *element, gint64 g_time, GstSeekFlags seek_fla return result; } -int __ms_element_push_packet(GstElement *src_element, media_packet_h packet) +int ms_element_push_packet(GstElement *src_element, media_packet_h packet) { GstBuffer *buffer = NULL; GstFlowReturn gst_ret = GST_FLOW_OK; @@ -2615,7 +2634,7 @@ int __ms_element_push_packet(GstElement *src_element, media_packet_h packet) return MEDIA_STREAMER_ERROR_NONE; } -int __ms_element_pull_packet(GstElement *sink_element, media_packet_h *packet) +int ms_element_pull_packet(GstElement *sink_element, media_packet_h *packet) { int ret = MEDIA_STREAMER_ERROR_NONE; GstSample *sample = NULL; @@ -2633,7 +2652,7 @@ int __ms_element_pull_packet(GstElement *sink_element, media_packet_h *packet) g_signal_emit_by_name(sink_element, "pull-sample", &sample, NULL); ms_retvm_if(sample == NULL, MEDIA_STREAMER_ERROR_INVALID_OPERATION, "Pull sample failed!"); - ret = __ms_element_get_pad_fmt(sink_element, "sink", &fmt); + ret = ms_element_get_pad_fmt(sink_element, "sink", &fmt); if (ret == MEDIA_STREAMER_ERROR_NONE) { buffer = gst_sample_get_buffer(sample); if (!buffer) { @@ -2697,7 +2716,7 @@ static void __ms_typefound_cb(GstElement *typefind, guint probability, GstCaps * ms_debug_fleave(); } -int __ms_find_type(media_streamer_s *ms_streamer, GstElement *src_element) +int ms_find_type(media_streamer_s *ms_streamer, GstElement *src_element) { GstElement *typefind = NULL; GstPad *src_pad = NULL; @@ -2715,7 +2734,7 @@ int __ms_find_type(media_streamer_s *ms_streamer, GstElement *src_element) ms_retvm_if(typefind == NULL, MEDIA_STREAMER_ERROR_INVALID_OPERATION, "Error creating element [typefind]"); - __ms_bin_add_element(ms_streamer->transform_bin, typefind, TRUE); + ms_bin_add_element(ms_streamer->transform_bin, typefind, TRUE); gst_element_sync_state_with_parent(typefind); diff --git a/src/media_streamer_http_server.c b/src/media_streamer_http_server.c index d42dee1..571445b 100644 --- a/src/media_streamer_http_server.c +++ b/src/media_streamer_http_server.c @@ -32,11 +32,127 @@ typedef struct { GHashTable *uri_table; } _ms_http_server_s; -static int __ms_http_server_file_read_contents(const char *file_path, char **content, gsize *size); +//LCOV_EXCL_START +static const char *get_filename_ext(const char *file_path) +{ + const char *dot = strrchr(file_path, '.'); + + if (!dot || dot == file_path) return ""; + return dot + 1; +} + +static int __ms_http_server_file_read_contents(const char *file_path, char **content, gsize *size) +{ + int ret = MEDIA_STREAMER_ERROR_NONE; + struct stat stat_results = {0, }; + int file_open = 0; + + ms_debug_fenter(); + + ms_retvm_if(content == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "content is NULL"); + ms_retvm_if(size == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "size is NULL"); + + if (!file_path || !strlen(file_path)) + return MEDIA_STREAMER_ERROR_INVALID_PARAMETER; + + ret = ms_util_uri_path_check(file_path); + if (MEDIA_STREAMER_ERROR_NONE != ret) + return ret; + + file_open = open(file_path, O_RDONLY); + if (file_open < 0) { + char mes_error[256]; + strerror_r(errno, mes_error, sizeof(mes_error)); + ms_error("Couldn`t open file [%s] according to [%s]. Error N [%d]", file_path, mes_error, errno); + + return MEDIA_STREAMER_ERROR_INVALID_PARAMETER; + } + + if (fstat(file_open, &stat_results) < 0) { + ms_error("Couldn`t get status of the file [%s]", file_path); + } else if (stat_results.st_size == 0) { + ms_error("The size of file is 0"); + close(file_open); + return MEDIA_STREAMER_ERROR_INVALID_PARAMETER; + } else { + ms_debug("Size of file [%lld] bytes", (long long)stat_results.st_size); + } + + *content = malloc((size_t)stat_results.st_size); + if (read(file_open, *content, (size_t)stat_results.st_size) < (size_t)stat_results.st_size) { + close(file_open); + return MEDIA_STREAMER_ERROR_INVALID_OPERATION; + } + *size = (gsize)stat_results.st_size; + + close(file_open); + + ms_debug_fleave(); + + return MEDIA_STREAMER_ERROR_NONE; +} + static void __ms_http_server_connection_handle_cb(SoupServer *server, SoupMessage *msg, - const char *path, GHashTable *query, SoupClientContext *client, gpointer user_data); + const char *path, GHashTable *query, SoupClientContext *client, gpointer user_data) +{ + _ms_http_server_s *hserver = (_ms_http_server_s *) user_data; + SoupMessageHeadersIter iter; + const char *name, *value; + char *content = NULL; + gsize size = 0; + char *mime_type = NULL; + char *fs_dir = NULL; + char *file_path = NULL; + const char *extension = NULL; + + /* Close connection if handle is NULL */ + ms_retm_if(hserver == NULL, "server is NULL"); + ms_retm_if(msg == NULL || msg->method == NULL || msg->request_headers == NULL, "msg is NULL"); + ms_retm_if(path == NULL, "path is NULL"); -int __ms_http_server_create(media_streamer_http_server_h *server) + ms_debug("%s %s HTTP/1.%d", msg->method, path, + soup_message_get_http_version(msg)); + soup_message_headers_iter_init(&iter, msg->request_headers); + while (soup_message_headers_iter_next(&iter, &name, &value)) + ms_debug("%s: %s", name, value); + if (msg->request_body->length && msg->request_body->data) + ms_debug("%s", msg->request_body->data); + + if (msg->method == SOUP_METHOD_GET || msg->method == SOUP_METHOD_HEAD) { + ms_info("Received read event"); + + /* Extract file path with URI. First symbol is '/' */ + fs_dir = (char *)g_hash_table_lookup(hserver->uri_table, "adaptive_path"); + file_path = g_strjoin(NULL, fs_dir, path+1, NULL); + extension = get_filename_ext(path+1); + + mime_type_get_mime_type(extension, &mime_type); + + ms_info("Received URI %s", path + 1); + ms_info("mime-type: %s", mime_type); + + if (MEDIA_STREAMER_ERROR_NONE != + __ms_http_server_file_read_contents(file_path, &content, &size)) { + + soup_message_set_status(msg, SOUP_STATUS_BAD_REQUEST); + } else { + ms_info("Sending response"); + soup_message_set_response(msg, mime_type, SOUP_MEMORY_TAKE, content, size); + soup_message_set_status(msg, SOUP_STATUS_OK); + } + + g_free(file_path); + g_free(mime_type); + } else { + soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED); + soup_message_set_status(msg, SOUP_STATUS_OK); + } + + ms_debug_fleave(); +} +//LCOV_EXCL_STOP + +int ms_http_server_create(media_streamer_http_server_h *server) { _ms_http_server_s *ms_server; @@ -51,7 +167,7 @@ int __ms_http_server_create(media_streamer_http_server_h *server) if (!ms_server->server) { ms_error("Failed to create http server"); - __ms_http_server_destroy(ms_server); + ms_http_server_destroy(ms_server); return MEDIA_STREAMER_ERROR_INVALID_OPERATION; } @@ -59,7 +175,7 @@ int __ms_http_server_create(media_streamer_http_server_h *server) ms_server->uri_table = g_hash_table_new(g_str_hash, g_str_equal); if (!ms_server->uri_table) { ms_error("Failed to URIs hash table"); - __ms_http_server_destroy(ms_server); + ms_http_server_destroy(ms_server); return MEDIA_STREAMER_ERROR_INVALID_OPERATION; } @@ -72,7 +188,7 @@ int __ms_http_server_create(media_streamer_http_server_h *server) return MEDIA_STREAMER_ERROR_NONE; } -int __ms_http_server_destroy(media_streamer_http_server_h server) +int ms_http_server_destroy(media_streamer_http_server_h server) { _ms_http_server_s *hserver = (_ms_http_server_s *) server; @@ -81,7 +197,7 @@ int __ms_http_server_destroy(media_streamer_http_server_h server) ms_retvm_if(hserver == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "server is NULL"); /* Stop server first */ - __ms_http_server_stop(server); + ms_http_server_stop(server); /* Destroy URIs hash table */ if (hserver->uri_table) @@ -99,7 +215,7 @@ int __ms_http_server_destroy(media_streamer_http_server_h server) return MEDIA_STREAMER_ERROR_NONE; } -int __ms_http_server_start(media_streamer_http_server_h server, int port) +int ms_http_server_start(media_streamer_http_server_h server, int port) { _ms_http_server_s *hserver = (_ms_http_server_s *) server; GError *error = NULL; @@ -125,7 +241,7 @@ int __ms_http_server_start(media_streamer_http_server_h server, int port) return MEDIA_STREAMER_ERROR_NONE; } -int __ms_http_server_stop(media_streamer_http_server_h server) +int ms_http_server_stop(media_streamer_http_server_h server) { _ms_http_server_s *hserver = (_ms_http_server_s *) server; @@ -141,7 +257,7 @@ int __ms_http_server_stop(media_streamer_http_server_h server) return MEDIA_STREAMER_ERROR_NONE; } -int __ms_http_server_register_uri(media_streamer_http_server_h server, char *uri, char *file_path) +int ms_http_server_register_uri(media_streamer_http_server_h server, char *uri, char *file_path) { _ms_http_server_s *hserver = (_ms_http_server_s *) server; @@ -164,7 +280,7 @@ int __ms_http_server_register_uri(media_streamer_http_server_h server, char *uri } //LCOV_EXCL_START -int __ms_http_server_unregister_uri(media_streamer_http_server_h server, char *uri) +int ms_http_server_unregister_uri(media_streamer_http_server_h server, char *uri) { _ms_http_server_s *hserver = (_ms_http_server_s *) server; @@ -191,123 +307,4 @@ int __ms_http_server_unregister_uri(media_streamer_http_server_h server, char *u return MEDIA_STREAMER_ERROR_NONE; } - -static const char *get_filename_ext(const char *file_path) -{ - const char *dot = strrchr(file_path, '.'); - - if (!dot || dot == file_path) return ""; - return dot + 1; -} - -static int __ms_http_server_file_read_contents(const char *file_path, char **content, gsize *size) -{ - int ret = MEDIA_STREAMER_ERROR_NONE; - struct stat stat_results = {0, }; - int file_open = 0; - - ms_debug_fenter(); - - ms_retvm_if(content == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "content is NULL"); - ms_retvm_if(size == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "size is NULL"); - - if (!file_path || !strlen(file_path)) - return MEDIA_STREAMER_ERROR_INVALID_PARAMETER; - - ret = __ms_util_uri_path_check(file_path); - if (MEDIA_STREAMER_ERROR_NONE != ret) - return ret; - - file_open = open(file_path, O_RDONLY); - if (file_open < 0) { - char mes_error[256]; - strerror_r(errno, mes_error, sizeof(mes_error)); - ms_error("Couldn`t open file [%s] according to [%s]. Error N [%d]", file_path, mes_error, errno); - - return MEDIA_STREAMER_ERROR_INVALID_PARAMETER; - } - - if (fstat(file_open, &stat_results) < 0) { - ms_error("Couldn`t get status of the file [%s]", file_path); - } else if (stat_results.st_size == 0) { - ms_error("The size of file is 0"); - close(file_open); - return MEDIA_STREAMER_ERROR_INVALID_PARAMETER; - } else { - ms_debug("Size of file [%lld] bytes", (long long)stat_results.st_size); - } - - *content = malloc((size_t)stat_results.st_size); - if (read(file_open, *content, (size_t)stat_results.st_size) < (size_t)stat_results.st_size) { - close(file_open); - return MEDIA_STREAMER_ERROR_INVALID_OPERATION; - } - *size = (gsize)stat_results.st_size; - - close(file_open); - - ms_debug_fleave(); - - return MEDIA_STREAMER_ERROR_NONE; -} - -static void __ms_http_server_connection_handle_cb(SoupServer *server, SoupMessage *msg, - const char *path, GHashTable *query, SoupClientContext *client, gpointer user_data) -{ - _ms_http_server_s *hserver = (_ms_http_server_s *) user_data; - SoupMessageHeadersIter iter; - const char *name, *value; - char *content = NULL; - gsize size = 0; - char *mime_type = NULL; - char *fs_dir = NULL; - char *file_path = NULL; - const char *extension = NULL; - - /* Close connection if handle is NULL */ - ms_retm_if(hserver == NULL, "server is NULL"); - ms_retm_if(msg == NULL || msg->method == NULL || msg->request_headers == NULL, "msg is NULL"); - ms_retm_if(path == NULL, "path is NULL"); - - ms_debug("%s %s HTTP/1.%d", msg->method, path, - soup_message_get_http_version(msg)); - soup_message_headers_iter_init(&iter, msg->request_headers); - while (soup_message_headers_iter_next(&iter, &name, &value)) - ms_debug("%s: %s", name, value); - if (msg->request_body->length && msg->request_body->data) - ms_debug("%s", msg->request_body->data); - - if (msg->method == SOUP_METHOD_GET || msg->method == SOUP_METHOD_HEAD) { - ms_info("Received read event"); - - /* Extract file path with URI. First symbol is '/' */ - fs_dir = (char *)g_hash_table_lookup(hserver->uri_table, "adaptive_path"); - file_path = g_strjoin(NULL, fs_dir, path+1, NULL); - extension = get_filename_ext(path+1); - - mime_type_get_mime_type(extension, &mime_type); - - ms_info("Received URI %s", path + 1); - ms_info("mime-type: %s", mime_type); - - if (MEDIA_STREAMER_ERROR_NONE != - __ms_http_server_file_read_contents(file_path, &content, &size)) { - - soup_message_set_status(msg, SOUP_STATUS_BAD_REQUEST); - } else { - ms_info("Sending response"); - soup_message_set_response(msg, mime_type, SOUP_MEMORY_TAKE, content, size); - soup_message_set_status(msg, SOUP_STATUS_OK); - } - - g_free(file_path); - g_free(mime_type); - } else { - soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED); - soup_message_set_status(msg, SOUP_STATUS_OK); - } - - ms_debug_fleave(); - -} //LCOV_EXCL_STOP diff --git a/src/media_streamer_node.c b/src/media_streamer_node.c index 6901b84..674e2cd 100644 --- a/src/media_streamer_node.c +++ b/src/media_streamer_node.c @@ -17,9 +17,6 @@ #include #include #include -#include -#include -#include #include #include "media_streamer_node.h" #include "media_streamer_node_resources.h" @@ -99,25 +96,6 @@ static node_info_s nodes_info[] = { {NULL, NULL} }; -void __ms_get_state(media_streamer_s *ms_streamer) -{ - GstState state_old = GST_STATE_NULL, state_new = GST_STATE_NULL; - GstStateChangeReturn ret_state = -1; - - ms_debug_fenter(); - - ms_retm_if(ms_streamer == NULL, "ms_streamer is NULL"); - ms_retm_if(ms_streamer->pipeline == NULL, "ms_streamer->pipeline is NULL"); - - ret_state = gst_element_get_state(ms_streamer->pipeline, &state_old, &state_new, GST_CLOCK_TIME_NONE); - if (ret_state == GST_STATE_CHANGE_SUCCESS) - ms_info("Got state for [%s]: old [%s], new [%s]", GST_ELEMENT_NAME(ms_streamer->pipeline), gst_element_state_get_name(state_old), gst_element_state_get_name(state_new)); - else - ms_error("Couldn`t get state for [%s]", GST_ELEMENT_NAME(ms_streamer->pipeline)); - - ms_debug_fleave(); -} - static gboolean __ms_rtp_node_has_property(media_streamer_node_s *node, const char *param_name) { GValue *val = NULL; @@ -297,7 +275,7 @@ static int __ms_adaptive_src_node_set_property(media_streamer_node_s *node, para return ret; } -int __ms_node_create(media_streamer_node_s *node, media_format_h in_fmt, media_format_h out_fmt) +int ms_node_create(media_streamer_node_s *node, media_format_h in_fmt, media_format_h out_fmt) { int ret = MEDIA_STREAMER_ERROR_NONE; GstCaps *sink_caps = NULL; @@ -307,15 +285,15 @@ int __ms_node_create(media_streamer_node_s *node, media_format_h in_fmt, media_f ms_retvm_if(node == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "node is NULL"); - sink_caps = in_fmt ? __ms_create_caps_from_fmt(in_fmt) : NULL; - src_caps = out_fmt ? __ms_create_caps_from_fmt(out_fmt) : NULL; + sink_caps = in_fmt ? ms_create_caps_from_fmt(in_fmt) : NULL; + src_caps = out_fmt ? ms_create_caps_from_fmt(out_fmt) : NULL; node_plug_s plug_info = {&(nodes_info[node->type]), src_caps, sink_caps, NULL}; ms_info("Creating node with info: klass_name[%s]; default[%s]", plug_info.info->klass_name, plug_info.info->default_name); - node->gst_element = __ms_node_element_create(&plug_info, node->type); + node->gst_element = ms_node_element_create(&plug_info, node->type); if (node->gst_element) node->name = gst_element_get_name(node->gst_element); else @@ -597,7 +575,7 @@ static int __ms_sink_node_check_feature(media_streamer_node_s *node) return ret; } -int __ms_src_node_create(media_streamer_node_s *node) +int ms_src_node_create(media_streamer_node_s *node) { int ret = MEDIA_STREAMER_ERROR_NONE; char *plugin_name = NULL; @@ -620,46 +598,46 @@ int __ms_src_node_create(media_streamer_node_s *node) switch (node->subtype) { case MEDIA_STREAMER_NODE_SRC_TYPE_FILE: - plugin_name = __ms_ini_get_string("node type 1:file", DEFAULT_FILE_SOURCE); - node->gst_element = __ms_element_create(plugin_name, NULL); + plugin_name = ms_ini_get_string("node type 1:file", DEFAULT_FILE_SOURCE); + node->gst_element = ms_element_create(plugin_name, NULL); break; case MEDIA_STREAMER_NODE_SRC_TYPE_RTSP: - plugin_name = __ms_ini_get_string("node type 1:rtsp", DEFAULT_UDP_SOURCE); - node->gst_element = __ms_element_create(plugin_name, NULL); + plugin_name = ms_ini_get_string("node type 1:rtsp", DEFAULT_UDP_SOURCE); + node->gst_element = ms_element_create(plugin_name, NULL); break; case MEDIA_STREAMER_NODE_SRC_TYPE_HTTP: - plugin_name = __ms_ini_get_string("node type 1:http", DEFAULT_HTTP_SOURCE); - node->gst_element = __ms_element_create(plugin_name, NULL); + plugin_name = ms_ini_get_string("node type 1:http", DEFAULT_HTTP_SOURCE); + node->gst_element = ms_element_create(plugin_name, NULL); break; case MEDIA_STREAMER_NODE_SRC_TYPE_CAMERA: - plugin_name = __ms_ini_get_string("node type 1:camera", DEFAULT_CAMERA_SOURCE); - node->gst_element = __ms_element_create(plugin_name, NULL); + plugin_name = ms_ini_get_string("node type 1:camera", DEFAULT_CAMERA_SOURCE); + node->gst_element = ms_element_create(plugin_name, NULL); break; case MEDIA_STREAMER_NODE_SRC_TYPE_AUDIO_CAPTURE: - plugin_name = __ms_ini_get_string("node type 1:audio capture", DEFAULT_AUDIO_SOURCE); - node->gst_element = __ms_element_create(plugin_name, NULL); + plugin_name = ms_ini_get_string("node type 1:audio capture", DEFAULT_AUDIO_SOURCE); + node->gst_element = ms_element_create(plugin_name, NULL); break; case MEDIA_STREAMER_NODE_SRC_TYPE_VIDEO_CAPTURE: - plugin_name = __ms_ini_get_string("node type 1:video capture", DEFAULT_VIDEO_SOURCE); - node->gst_element = __ms_element_create(plugin_name, NULL); + plugin_name = ms_ini_get_string("node type 1:video capture", DEFAULT_VIDEO_SOURCE); + node->gst_element = ms_element_create(plugin_name, NULL); break; case MEDIA_STREAMER_NODE_SRC_TYPE_VIDEO_TEST: - plugin_name = __ms_ini_get_string("node type 1:video test", DEFAULT_VIDEO_TEST_SOURCE); - node->gst_element = __ms_element_create(plugin_name, NULL); + plugin_name = ms_ini_get_string("node type 1:video test", DEFAULT_VIDEO_TEST_SOURCE); + node->gst_element = ms_element_create(plugin_name, NULL); break; case MEDIA_STREAMER_NODE_SRC_TYPE_AUDIO_TEST: - plugin_name = __ms_ini_get_string("node type 1:audio test", DEFAULT_AUDIO_TEST_SOURCE); - node->gst_element = __ms_element_create(plugin_name, NULL); + plugin_name = ms_ini_get_string("node type 1:audio test", DEFAULT_AUDIO_TEST_SOURCE); + node->gst_element = ms_element_create(plugin_name, NULL); break; case MEDIA_STREAMER_NODE_SRC_TYPE_CUSTOM: - plugin_name = __ms_ini_get_string("node type 1:custom", DEFAULT_APP_SOURCE); - node->gst_element = __ms_element_create(DEFAULT_APP_SOURCE, NULL); + plugin_name = ms_ini_get_string("node type 1:custom", DEFAULT_APP_SOURCE); + node->gst_element = ms_element_create(DEFAULT_APP_SOURCE, NULL); g_object_set(G_OBJECT(node->gst_element), "emit-signals", TRUE, NULL); - __ms_signal_create(&node->sig_list, node->gst_element, "need-data", G_CALLBACK(__ms_src_start_feed_cb), node); - __ms_signal_create(&node->sig_list, node->gst_element, "enough-data", G_CALLBACK(__ms_src_stop_feed_cb), node); + ms_signal_create(&node->sig_list, node->gst_element, "need-data", G_CALLBACK(__ms_src_start_feed_cb), node); + ms_signal_create(&node->sig_list, node->gst_element, "enough-data", G_CALLBACK(__ms_src_stop_feed_cb), node); break; case MEDIA_STREAMER_NODE_SRC_TYPE_ADAPTIVE: - node->gst_element = __ms_adaptive_element_create(); + node->gst_element = ms_adaptive_element_create(); break; default: ms_error("Error: invalid Src node Type [%d]", node->subtype); @@ -673,7 +651,7 @@ int __ms_src_node_create(media_streamer_node_s *node) else node->name = gst_element_get_name(node->gst_element); - ret = __ms_node_policy_init(node); + ret = ms_node_policy_init(node); if (MEDIA_STREAMER_ERROR_NONE != ret) { ms_error("Failed to init policy for node [%s]", node->name); return ret; @@ -730,7 +708,7 @@ static void sink_eos(GstElement *sink, gpointer *data) } //LCOV_EXCL_STOP -int __ms_sink_node_create(media_streamer_node_s *node) +int ms_sink_node_create(media_streamer_node_s *node) { int ret = MEDIA_STREAMER_ERROR_NONE; char *plugin_name = NULL; @@ -753,40 +731,40 @@ int __ms_sink_node_create(media_streamer_node_s *node) switch (node->subtype) { case MEDIA_STREAMER_NODE_SINK_TYPE_FILE: - plugin_name = __ms_ini_get_string("node type 2:file", DEFAULT_FILE_SINK); - node->gst_element = __ms_element_create(plugin_name, NULL); + plugin_name = ms_ini_get_string("node type 2:file", DEFAULT_FILE_SINK); + node->gst_element = ms_element_create(plugin_name, NULL); break; case MEDIA_STREAMER_NODE_SINK_TYPE_RTSP: - plugin_name = __ms_ini_get_string("node type 2:rtsp", DEFAULT_UDP_SINK); - node->gst_element = __ms_element_create(plugin_name, NULL); + plugin_name = ms_ini_get_string("node type 2:rtsp", DEFAULT_UDP_SINK); + node->gst_element = ms_element_create(plugin_name, NULL); break; case MEDIA_STREAMER_NODE_SINK_TYPE_HTTP: ms_error("Error: not implemented yet"); break; case MEDIA_STREAMER_NODE_SINK_TYPE_AUDIO: - plugin_name = __ms_ini_get_string("node type 2:audio", DEFAULT_AUDIO_SINK); - node->gst_element = __ms_element_create(plugin_name, NULL); + plugin_name = ms_ini_get_string("node type 2:audio", DEFAULT_AUDIO_SINK); + node->gst_element = ms_element_create(plugin_name, NULL); break; case MEDIA_STREAMER_NODE_SINK_TYPE_OVERLAY: - plugin_name = __ms_ini_get_string("node type 2:overlay", DEFAULT_VIDEO_SINK); - node->gst_element = __ms_element_create(plugin_name, NULL); + plugin_name = ms_ini_get_string("node type 2:overlay", DEFAULT_VIDEO_SINK); + node->gst_element = ms_element_create(plugin_name, NULL); break; case MEDIA_STREAMER_NODE_SINK_TYPE_FAKE: - plugin_name = __ms_ini_get_string("node type 2:fake", DEFAULT_FAKE_SINK); - node->gst_element = __ms_element_create(plugin_name, NULL); + plugin_name = ms_ini_get_string("node type 2:fake", DEFAULT_FAKE_SINK); + node->gst_element = ms_element_create(plugin_name, NULL); break; case MEDIA_STREAMER_NODE_SINK_TYPE_CUSTOM: - plugin_name = __ms_ini_get_string("node type 2:custom", DEFAULT_APP_SINK); - node->gst_element = __ms_element_create(plugin_name, NULL); + plugin_name = ms_ini_get_string("node type 2:custom", DEFAULT_APP_SINK); + node->gst_element = ms_element_create(plugin_name, NULL); if (node->gst_element) { g_object_set(G_OBJECT(node->gst_element), "emit-signals", TRUE, NULL); - __ms_signal_create(&node->sig_list, node->gst_element, "new-sample", G_CALLBACK(__ms_sink_new_buffer_cb), node); - __ms_signal_create(&node->sig_list, node->gst_element, "eos", G_CALLBACK(sink_eos), node); + ms_signal_create(&node->sig_list, node->gst_element, "new-sample", G_CALLBACK(__ms_sink_new_buffer_cb), node); + ms_signal_create(&node->sig_list, node->gst_element, "eos", G_CALLBACK(sink_eos), node); } break; case MEDIA_STREAMER_NODE_SINK_TYPE_ADAPTIVE: - plugin_name = __ms_ini_get_string("node type 2:adaptive", DEFAULT_ADAPTIVE_SINK); - node->gst_element = __ms_element_create(plugin_name, "adaptive_sink"); + plugin_name = ms_ini_get_string("node type 2:adaptive", DEFAULT_ADAPTIVE_SINK); + node->gst_element = ms_element_create(plugin_name, "adaptive_sink"); if (g_strrstr(plugin_name, "hlssink")) { g_object_set(G_OBJECT(node->gst_element), @@ -811,7 +789,7 @@ int __ms_sink_node_create(media_streamer_node_s *node) return ret; } -void __ms_node_destroy(media_streamer_node_s *node) +void ms_node_destroy(media_streamer_node_s *node) { gchar *node_name = NULL; @@ -821,10 +799,10 @@ void __ms_node_destroy(media_streamer_node_s *node) node_name = g_strdup(node->name); /* Disconnects and clean all node signals */ - g_list_free_full(node->sig_list, __ms_signal_destroy); + g_list_free_full(node->sig_list, ms_signal_destroy); /* Deinitialize policy manager */ - if (MEDIA_STREAMER_ERROR_NONE != __ms_node_policy_deinit(node)) + if (MEDIA_STREAMER_ERROR_NONE != ms_node_policy_deinit(node)) ms_error("Failed to deinitialize policy manager"); MS_SAFE_UNREF(node->gst_element); @@ -838,7 +816,7 @@ void __ms_node_destroy(media_streamer_node_s *node) ms_debug_fleave(); } -int __ms_add_node_into_bin(media_streamer_s *ms_streamer, media_streamer_node_s *node) +int ms_add_node_into_bin(media_streamer_s *ms_streamer, media_streamer_node_s *node) { int ret = MEDIA_STREAMER_ERROR_NONE; GstElement *bin = NULL; @@ -863,7 +841,7 @@ int __ms_add_node_into_bin(media_streamer_s *ms_streamer, media_streamer_node_s break; } - if (!__ms_bin_add_element(bin, node->gst_element, TRUE)) { + if (!ms_bin_add_element(bin, node->gst_element, TRUE)) { ms_error("Failed to add Element [%s] into [%s] bin.", node->name, GST_ELEMENT_NAME(bin)); ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; } @@ -873,7 +851,7 @@ int __ms_add_node_into_bin(media_streamer_s *ms_streamer, media_streamer_node_s return ret; } -int __ms_node_insert_into_table(GHashTable *nodes_table, media_streamer_node_s *node) +int ms_node_insert_into_table(GHashTable *nodes_table, media_streamer_node_s *node) { ms_debug_fenter(); @@ -897,7 +875,7 @@ int __ms_node_insert_into_table(GHashTable *nodes_table, media_streamer_node_s * return MEDIA_STREAMER_ERROR_NONE; } -void __ms_node_remove_from_table(void *data) +void ms_node_remove_from_table(void *data) { media_streamer_node_s *node = (media_streamer_node_s *) data; @@ -905,10 +883,10 @@ void __ms_node_remove_from_table(void *data) ms_retm_if(node == NULL, "data is NULL"); - if (__ms_element_unlink(node->gst_element)) { + if (ms_element_unlink(node->gst_element)) { node->linked_by_user = FALSE; node->parent_streamer = NULL; - __ms_bin_remove_element(node->gst_element); + ms_bin_remove_element(node->gst_element); ms_info("Node [%s] removed from Media Streamer", node->name); } else { ms_error("Error: Node [%s] remove failed", node->name); @@ -938,7 +916,7 @@ static gboolean __ms_src_need_typefind(GstPad *src_pad) return ret; } -node_info_s * __ms_node_get_klass_by_its_type(media_streamer_node_type_e element_type) +node_info_s * ms_node_get_klass_by_its_type(media_streamer_node_type_e element_type) { int it_klass; @@ -956,7 +934,7 @@ node_info_s * __ms_node_get_klass_by_its_type(media_streamer_node_type_e element return &nodes_info[it_klass]; } -gboolean _ms_sink_node_prepare_iter(const GValue *item, GValue *g_ret, gpointer user_data) +gboolean ms_sink_node_prepare_iter(const GValue *item, GValue *g_ret, gpointer user_data) { gboolean ret = FALSE; @@ -965,14 +943,14 @@ gboolean _ms_sink_node_prepare_iter(const GValue *item, GValue *g_ret, gpointer ms_debug_fenter(); - ret = __ms_element_lock_state(item, g_ret, user_data); + ret = ms_element_lock_state(item, g_ret, user_data); ms_debug_fleave(); return ret; } -gboolean _ms_src_node_prepare_iter(const GValue *item, GValue *ret, gpointer user_data) +gboolean ms_src_node_prepare_iter(const GValue *item, GValue *ret, gpointer user_data) { media_streamer_s *ms_streamer = (media_streamer_s *) user_data; GstElement *src_element = NULL; @@ -1004,11 +982,11 @@ gboolean _ms_src_node_prepare_iter(const GValue *item, GValue *ret, gpointer use src_pad = gst_element_get_static_pad(src_element, "src"); if (__ms_src_need_typefind(src_pad)) { - __ms_find_type(ms_streamer, src_element); + ms_find_type(ms_streamer, src_element); MS_SAFE_UNREF(src_element); } else { /* Check the source element`s pad type */ - const gchar *new_pad_type = __ms_get_pad_type(src_pad); + const gchar *new_pad_type = ms_get_pad_type(src_pad); /* If SRC Element linked by user, don`t consider the following nodes` managing */ if (gst_pad_is_linked(src_pad)) { MS_SAFE_UNREF(src_pad); @@ -1018,21 +996,21 @@ gboolean _ms_src_node_prepare_iter(const GValue *item, GValue *ret, gpointer use } /* It is media streamer Server part */ if (MS_ELEMENT_IS_VIDEO(new_pad_type) || MS_ELEMENT_IS_IMAGE(new_pad_type)) { - found_element = __ms_combine_next_element(src_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_FILTER); + found_element = ms_combine_next_element(src_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_FILTER); GstCaps *videoCaps = gst_caps_from_string(MEDIA_STREAMER_DEFAULT_CAMERA_FORMAT); g_object_set(G_OBJECT(found_element), "caps", videoCaps, NULL); gst_caps_unref(videoCaps); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_PAY); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_RTP); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_VIDEO_PAY); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_RTP); } if (MS_ELEMENT_IS_AUDIO(new_pad_type)) { - found_element = __ms_combine_next_element(src_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_PAY); - found_element = __ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_RTP); + found_element = ms_combine_next_element(src_element, src_pad, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_AUDIO_PAY); + found_element = ms_combine_next_element(found_element, NULL, ms_streamer->transform_bin, MEDIA_STREAMER_NODE_TYPE_RTP); } - __ms_generate_dots(ms_streamer->pipeline, "after_connecting_rtp"); + ms_generate_dots(ms_streamer->pipeline, "after_connecting_rtp"); MS_SAFE_UNREF(found_element); } MS_SAFE_UNREF(src_pad); @@ -1062,15 +1040,15 @@ static GstElement *__ms_manifest_src_create(media_streamer_node_s *node) protocol = gst_uri_is_valid(uri) ? gst_uri_get_protocol(uri) : NULL; if (protocol && g_strrstr(protocol, "http")) { - manifest_src_name = __ms_ini_get_string("node type 1:http", DEFAULT_HTTP_SOURCE); + manifest_src_name = ms_ini_get_string("node type 1:http", DEFAULT_HTTP_SOURCE); location = g_strdup(uri); } else if (protocol && g_strrstr(protocol, "file")) { - manifest_src_name = __ms_ini_get_string("node type 1:file", DEFAULT_FILE_SOURCE); + manifest_src_name = ms_ini_get_string("node type 1:file", DEFAULT_FILE_SOURCE); location = gst_uri_get_location(uri); } else { ms_error("Unsupported URI protocol... Check URI is file path"); - if (__ms_util_uri_path_check(uri) == MEDIA_STREAMER_ERROR_NONE) { - manifest_src_name = __ms_ini_get_string("node type 1:file", DEFAULT_FILE_SOURCE); + if (ms_util_uri_path_check(uri) == MEDIA_STREAMER_ERROR_NONE) { + manifest_src_name = ms_ini_get_string("node type 1:file", DEFAULT_FILE_SOURCE); location = g_strdup(uri); } else { g_free(protocol); @@ -1103,7 +1081,7 @@ static GstElement *__ms_manifest_src_create(media_streamer_node_s *node) return manifest_src; } -int __ms_adaptive_src_node_prepare(media_streamer_node_s *node, bool auto_plug) +int ms_adaptive_src_node_prepare(media_streamer_node_s *node, bool auto_plug) { char *plugin_name = NULL; GstElement *manifest_src = NULL; @@ -1116,7 +1094,7 @@ int __ms_adaptive_src_node_prepare(media_streamer_node_s *node, bool auto_plug) ms_retvm_if(node == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "node is NULL"); if (!auto_plug) { - plugin_name = __ms_ini_get_string("node type 1:adaptive", DEFAULT_ADAPTIVE_SOURCE); + plugin_name = ms_ini_get_string("node type 1:adaptive", DEFAULT_ADAPTIVE_SOURCE); ms_retvm_if(plugin_name == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "Error empty plugin name for adaptive source"); ms_info("Creating [%s] element", plugin_name); plugin_elem = gst_element_factory_make(plugin_name, NULL); @@ -1149,7 +1127,7 @@ int __ms_adaptive_src_node_prepare(media_streamer_node_s *node, bool auto_plug) if (!auto_plug) { g_signal_connect_object(plugin_elem, "pad-added", - G_CALLBACK(__ms_hlsdemux_pad_added_cb), gp, 0); + G_CALLBACK(ms_hlsdemux_pad_added_cb), gp, 0); } else { GstPad *manifest_src_pad = gst_element_get_static_pad(manifest_src, "src"); gst_ghost_pad_set_target(GST_GHOST_PAD(gp), manifest_src_pad); @@ -1160,7 +1138,7 @@ int __ms_adaptive_src_node_prepare(media_streamer_node_s *node, bool auto_plug) return MEDIA_STREAMER_ERROR_NONE; } -int __ms_adaptive_sink_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node) +int ms_adaptive_sink_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node) { int err_code = MEDIA_STREAMER_ERROR_NONE; gchar *playlist_location = NULL; @@ -1174,7 +1152,7 @@ int __ms_adaptive_sink_node_prepare(media_streamer_s *ms_streamer, media_streame ms_retvm_if(node->gst_element == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "node->gst_element is NULL"); /* Create and start http server */ - err_code = __ms_http_server_create(&ms_streamer->http_server); + err_code = ms_http_server_create(&ms_streamer->http_server); if (MEDIA_STREAMER_ERROR_NONE != err_code) { ms_error("Failed to create http server during prepare"); goto _DONE; @@ -1182,10 +1160,10 @@ int __ms_adaptive_sink_node_prepare(media_streamer_s *ms_streamer, media_streame ms_info("Starting http server"); /* FIXME: find out how to set default port */ - err_code = __ms_http_server_start(ms_streamer->http_server, DEFAULT_HTTP_PORT); + err_code = ms_http_server_start(ms_streamer->http_server, DEFAULT_HTTP_PORT); if (MEDIA_STREAMER_ERROR_NONE != err_code) { ms_error("Failed to start http server during prepare. Destroying http server"); - __ms_http_server_destroy(ms_streamer->http_server); + ms_http_server_destroy(ms_streamer->http_server); goto _DONE; } @@ -1193,14 +1171,14 @@ int __ms_adaptive_sink_node_prepare(media_streamer_s *ms_streamer, media_streame if (!playlist_location) { err_code = MEDIA_STREAMER_ERROR_INVALID_OPERATION; ms_error("Failed to get playlist location"); - __ms_http_server_destroy(ms_streamer->http_server); + ms_http_server_destroy(ms_streamer->http_server); goto _DONE; } split = strrchr(playlist_location, '/'); playlist_dir = g_strndup(playlist_location, split - playlist_location + 1); - __ms_http_server_register_uri(ms_streamer->http_server, "adaptive_path", playlist_dir); + ms_http_server_register_uri(ms_streamer->http_server, "adaptive_path", playlist_dir); MS_SAFE_GFREE(playlist_location); @@ -1212,7 +1190,7 @@ _DONE: } //LCOV_EXCL_START -gboolean __ms_rtp_node_prepare(media_streamer_node_s *node) +gboolean ms_rtp_node_prepare(media_streamer_node_s *node) { GstElement *rtpbin = NULL; gboolean ret = TRUE; @@ -1230,26 +1208,26 @@ gboolean __ms_rtp_node_prepare(media_streamer_node_s *node) ms_retvm_if(!node, MEDIA_STREAMER_ERROR_INVALID_OPERATION, "node is NULL"); - rtpbin = __ms_element_create("rtpbin", "rtpbin"); + rtpbin = ms_element_create("rtpbin", "rtpbin"); ms_retvm_if(!rtpbin, FALSE, "Error: creating elements for rtp container"); - if (!__ms_bin_add_element(node->gst_element, rtpbin, FALSE)) { + if (!ms_bin_add_element(node->gst_element, rtpbin, FALSE)) { MS_SAFE_UNREF(rtpbin); return FALSE; } - __ms_signal_create(&node->sig_list, rtpbin, "pad-added", G_CALLBACK(__ms_rtpbin_pad_added_cb), node); + ms_signal_create(&node->sig_list, rtpbin, "pad-added", G_CALLBACK(ms_rtpbin_pad_added_cb), node); val = (GValue *)g_object_get_data(G_OBJECT(node->gst_element), MEDIA_STREAMER_PARAM_HOST); host = g_value_get_string(val); val = (GValue *)g_object_get_data(G_OBJECT(node->gst_element), MEDIA_STREAMER_PARAM_VIDEO_IN_PORT); if (g_value_get_int(val) > RTP_STREAM_DISABLED) { - rtp_el = __ms_element_create("udpsrc", MS_RTP_PAD_VIDEO_IN"_rtp"); - __ms_bin_add_element(node->gst_element, rtp_el, FALSE); + rtp_el = ms_element_create("udpsrc", MS_RTP_PAD_VIDEO_IN"_rtp"); + ms_bin_add_element(node->gst_element, rtp_el, FALSE); - rtcp_el = __ms_element_create("udpsrc", MS_RTP_PAD_VIDEO_IN"_rctp"); - __ms_bin_add_element(node->gst_element, rtcp_el, FALSE); + rtcp_el = ms_element_create("udpsrc", MS_RTP_PAD_VIDEO_IN"_rctp"); + ms_bin_add_element(node->gst_element, rtcp_el, FALSE); ret = ret && gst_element_link_pads(rtp_el, "src", rtpbin, "recv_rtp_sink_0"); ret = ret && gst_element_link_pads(rtcp_el, "src", rtpbin, "recv_rtcp_sink_0"); @@ -1263,11 +1241,11 @@ gboolean __ms_rtp_node_prepare(media_streamer_node_s *node) val = (GValue *)g_object_get_data(G_OBJECT(node->gst_element), MEDIA_STREAMER_PARAM_AUDIO_IN_PORT); if (g_value_get_int(val) > RTP_STREAM_DISABLED) { - rtp_el = __ms_element_create("udpsrc", MS_RTP_PAD_AUDIO_IN"_rtp"); - __ms_bin_add_element(node->gst_element, rtp_el, FALSE); + rtp_el = ms_element_create("udpsrc", MS_RTP_PAD_AUDIO_IN"_rtp"); + ms_bin_add_element(node->gst_element, rtp_el, FALSE); - rtcp_el = __ms_element_create("udpsrc", MS_RTP_PAD_AUDIO_IN"_rctp"); - __ms_bin_add_element(node->gst_element, rtcp_el, FALSE); + rtcp_el = ms_element_create("udpsrc", MS_RTP_PAD_AUDIO_IN"_rctp"); + ms_bin_add_element(node->gst_element, rtcp_el, FALSE); ret = ret && gst_element_link_pads(rtp_el, "src", rtpbin, "recv_rtp_sink_1"); ret = ret && gst_element_link_pads(rtcp_el, "src", rtpbin, "recv_rtcp_sink_1"); @@ -1281,14 +1259,14 @@ gboolean __ms_rtp_node_prepare(media_streamer_node_s *node) val = (GValue *)g_object_get_data(G_OBJECT(node->gst_element), MEDIA_STREAMER_PARAM_VIDEO_OUT_PORT); if (g_value_get_int(val) > RTP_STREAM_DISABLED) { - rtp_el = __ms_element_create("udpsink", MS_RTP_PAD_VIDEO_OUT"_rtp"); - __ms_bin_add_element(node->gst_element, rtp_el, FALSE); + rtp_el = ms_element_create("udpsink", MS_RTP_PAD_VIDEO_OUT"_rtp"); + ms_bin_add_element(node->gst_element, rtp_el, FALSE); - rtcp_el = __ms_element_create("udpsink", MS_RTP_PAD_VIDEO_OUT"_rctp"); - __ms_bin_add_element(node->gst_element, rtcp_el, FALSE); + rtcp_el = ms_element_create("udpsink", MS_RTP_PAD_VIDEO_OUT"_rctp"); + ms_bin_add_element(node->gst_element, rtcp_el, FALSE); - video_filter = __ms_element_create("capsfilter", NULL); - __ms_bin_add_element(node->gst_element, video_filter, FALSE); + video_filter = ms_element_create("capsfilter", NULL); + ms_bin_add_element(node->gst_element, video_filter, FALSE); video_caps = gst_caps_from_string(MEDIA_STREAMER_DEFAULT_VIDEO_RTP_FORMAT); g_object_set(G_OBJECT(video_filter), "caps", video_caps, NULL); @@ -1315,14 +1293,14 @@ gboolean __ms_rtp_node_prepare(media_streamer_node_s *node) val = (GValue *)g_object_get_data(G_OBJECT(node->gst_element), MEDIA_STREAMER_PARAM_AUDIO_OUT_PORT); if (g_value_get_int(val) > RTP_STREAM_DISABLED) { - rtp_el = __ms_element_create("udpsink", MS_RTP_PAD_AUDIO_OUT"_rtp"); - __ms_bin_add_element(node->gst_element, rtp_el, FALSE); + rtp_el = ms_element_create("udpsink", MS_RTP_PAD_AUDIO_OUT"_rtp"); + ms_bin_add_element(node->gst_element, rtp_el, FALSE); - rtcp_el = __ms_element_create("udpsink", MS_RTP_PAD_AUDIO_OUT"_rctp"); - __ms_bin_add_element(node->gst_element, rtcp_el, FALSE); + rtcp_el = ms_element_create("udpsink", MS_RTP_PAD_AUDIO_OUT"_rctp"); + ms_bin_add_element(node->gst_element, rtcp_el, FALSE); - audio_filter = __ms_element_create("capsfilter", NULL); - __ms_bin_add_element(node->gst_element, audio_filter, FALSE); + audio_filter = ms_element_create("capsfilter", NULL); + ms_bin_add_element(node->gst_element, audio_filter, FALSE); audio_caps = gst_caps_from_string(MEDIA_STREAMER_DEFAULT_AUDIO_RTP_FORMAT); g_object_set(G_OBJECT(audio_filter), "caps", audio_caps, NULL); @@ -1346,7 +1324,7 @@ gboolean __ms_rtp_node_prepare(media_streamer_node_s *node) g_object_set(GST_OBJECT(rtcp_el), MEDIA_STREAMER_PARAM_HOST, host, NULL); } - __ms_generate_dots(node->gst_element, "rtp_prepared"); + ms_generate_dots(node->gst_element, "rtp_prepared"); ms_debug_fleave(); @@ -1354,22 +1332,136 @@ gboolean __ms_rtp_node_prepare(media_streamer_node_s *node) } //LCOV_EXCL_STOP -int __ms_demux_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node) +int ms_demux_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node) { ms_debug_fenter(); ms_retvm_if(!ms_streamer, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "ms_streamer is NULL"); ms_retvm_if(!node, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "node is NULL"); - __ms_signal_create(&ms_streamer->autoplug_sig_list, node->gst_element, "pad-added", G_CALLBACK(__ms_demux_pad_added_cb), ms_streamer); - __ms_signal_create(&ms_streamer->autoplug_sig_list, node->gst_element, "no-more-pads", G_CALLBACK(__ms_demux_nomore_pads_cb), ms_streamer); + ms_signal_create(&ms_streamer->autoplug_sig_list, node->gst_element, "pad-added", G_CALLBACK(ms_demux_pad_added_cb), ms_streamer); + ms_signal_create(&ms_streamer->autoplug_sig_list, node->gst_element, "no-more-pads", G_CALLBACK(ms_demux_nomore_pads_cb), ms_streamer); + + ms_debug_fleave(); + + return MEDIA_STREAMER_ERROR_NONE; +} + +static int __ms_node_get_param_list(media_streamer_node_s *node, GList **param_list) +{ + GParamSpec *param_spec; + int it_param; + + ms_debug_fenter(); + + ms_retvm_if(node == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "node is NULL"); + ms_retvm_if(param_list == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "param_list is NULL"); + + for (it_param = 0; param_table[it_param].param_name != NULL; it_param++) { + param_spec = g_object_class_find_property(G_OBJECT_GET_CLASS(node->gst_element), param_table[it_param].origin_name); + if (param_spec || __ms_rtp_node_has_property(node, param_table[it_param].origin_name) || + __ms_adaptive_src_node_has_property(node, param_table[it_param].origin_name)) { + ms_info("Got parameter [%s] for node [%s]", param_table[it_param].param_name, node->name); + *param_list = g_list_append(*param_list, &(param_table[it_param])); + } + } + ms_retvm_if(!(*param_list), MEDIA_STREAMER_ERROR_INVALID_OPERATION, "Node [%s] doesn't have any params.", node->name); ms_debug_fleave(); return MEDIA_STREAMER_ERROR_NONE; } -int __ms_node_set_params_from_bundle(media_streamer_node_s *node, bundle *param_list) +static int __ms_node_set_display(media_streamer_node_s *node, const char *param_value) +{ + int ret = MEDIA_STREAMER_ERROR_NONE; + Evas_Object *obj = NULL; + media_streamer_wl_info_s wl_info; + + obj = (Evas_Object *)param_value; + + /* get wayland parent id */ + if (ms_get_wl_info(obj, &wl_info) != MEDIA_STREAMER_ERROR_NONE) { + LOGE("failed to get wayland info"); + return MEDIA_STREAMER_ERROR_INVALID_OPERATION; + } + + LOGD("wayland global surface id : %d", wl_info.parent_id); + + gst_video_overlay_set_wl_window_wl_surface_id(GST_VIDEO_OVERLAY(node->gst_element), wl_info.parent_id); + + return ret; +} +//LCOV_EXCL_STOP + +int ms_node_set_param_value(media_streamer_node_s *node, param_s *param, const char *param_value) +{ + + int ret = MEDIA_STREAMER_ERROR_NONE; + + ms_debug_fenter(); + + ms_retvm_if(node == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "node is NULL"); + ms_retvm_if(param == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "param is NULL"); + ms_retvm_if(param_value == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "param_value is NULL"); + + if (node->type == MEDIA_STREAMER_NODE_TYPE_RTP) { + ret = __ms_rtp_node_set_property(node, param, param_value); + ms_debug_fleave(); + return ret; + } + + if (node->type == MEDIA_STREAMER_NODE_TYPE_SRC && + node->subtype == MEDIA_STREAMER_NODE_SRC_TYPE_ADAPTIVE) { + ret = __ms_adaptive_src_node_set_property(node, param, param_value); + ms_debug_fleave(); + return ret; + } + + if (!g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_CAMERA_ID)) { + int camera_id = (int)strtol(param_value, NULL, 10); + ms_retvm_if(camera_id == -1, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "Invalid %s value", param->param_name); + g_object_set(node->gst_element, param->origin_name, camera_id, NULL); + } else if (!g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_CAPTURE_WIDTH) || + !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_CAPTURE_HEIGHT) || + !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_STREAM_TYPE) || + !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_PORT) || + !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_ROTATE) || + !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_FLIP) || + !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_DISPLAY_GEOMETRY_METHOD)) { + g_object_set(node->gst_element, param->origin_name, (int)strtol(param_value, NULL, 10), NULL); + } else if (!g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_IS_LIVE_STREAM) || + !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_CLOCK_SYNCHRONIZED) || + !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_USE_TBM) || + !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_VISIBLE)) { + g_object_set(node->gst_element, param->origin_name, !g_ascii_strcasecmp(param_value, "true"), NULL); + } else if (!g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_URI)) { + if (node->type == MEDIA_STREAMER_NODE_TYPE_SRC && node->subtype == MEDIA_STREAMER_NODE_SRC_TYPE_FILE) { + ret = ms_util_uri_path_check(param_value); + if (ret != MEDIA_STREAMER_ERROR_NONE) + return ret; + } + g_object_set(node->gst_element, param->origin_name, param_value, NULL); + } else if (!g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_USER_AGENT) || + !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_IP_ADDRESS) || + !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_AUDIO_DEVICE) || + !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_HOST) || + !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_SEGMENT_LOCATION) || + !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_PLAYLIST_LOCATION)) { + g_object_set(node->gst_element, param->origin_name, param_value, NULL); + } else if (!g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_DISPLAY)) { + ret = __ms_node_set_display(node, param_value); + } else { + ms_info("Can not set parameter [%s] in the node [%s]", param->param_name, node->name); + ret = MEDIA_STREAMER_ERROR_INVALID_PARAMETER; + } + + ms_debug_fleave(); + + return ret; +} + +int ms_node_set_params_from_bundle(media_streamer_node_s *node, bundle *param_list) { int ret = MEDIA_STREAMER_ERROR_NONE; GList *p_list = NULL; @@ -1388,7 +1480,7 @@ int __ms_node_set_params_from_bundle(media_streamer_node_s *node, bundle *param_ for (list_iter = p_list; list_iter != NULL; list_iter = list_iter->next) { param = (param_s *)list_iter->data; if (bundle_get_str(param_list, param->param_name, &string_val) != BUNDLE_ERROR_KEY_NOT_AVAILABLE) { - ret = __ms_node_set_param_value(node, param, string_val); + ret = ms_node_set_param_value(node, param, string_val); if (ret == MEDIA_STREAMER_ERROR_NONE) { written_count++; } else { @@ -1409,7 +1501,7 @@ int __ms_node_set_params_from_bundle(media_streamer_node_s *node, bundle *param_ return ret; } -int __ms_node_write_params_into_bundle(media_streamer_node_s *node, bundle *param_list) +int ms_node_write_params_into_bundle(media_streamer_node_s *node, bundle *param_list) { int ret = MEDIA_STREAMER_ERROR_NONE; GList *p_list = NULL; @@ -1427,7 +1519,7 @@ int __ms_node_write_params_into_bundle(media_streamer_node_s *node, bundle *para for (list_iter = p_list; list_iter != NULL; list_iter = list_iter->next) { param = (param_s *)list_iter->data; - if (__ms_node_get_param_value(node, param, &string_val) == MEDIA_STREAMER_ERROR_NONE) { + if (ms_node_get_param_value(node, param, &string_val) == MEDIA_STREAMER_ERROR_NONE) { bundle_add_str(param_list, param->param_name, string_val); MS_SAFE_FREE(string_val); } @@ -1441,7 +1533,7 @@ int __ms_node_write_params_into_bundle(media_streamer_node_s *node, bundle *para return ret; } -int __ms_node_get_param(media_streamer_node_s *node, const char *param_name, param_s **param) +int ms_node_get_param(media_streamer_node_s *node, const char *param_name, param_s **param) { GParamSpec *param_spec; gboolean found_param = FALSE; @@ -1472,32 +1564,7 @@ int __ms_node_get_param(media_streamer_node_s *node, const char *param_name, par return MEDIA_STREAMER_ERROR_NONE; } -int __ms_node_get_param_list(media_streamer_node_s *node, GList **param_list) -{ - GParamSpec *param_spec; - int it_param; - - ms_debug_fenter(); - - ms_retvm_if(node == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "node is NULL"); - ms_retvm_if(param_list == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "param_list is NULL"); - - for (it_param = 0; param_table[it_param].param_name != NULL; it_param++) { - param_spec = g_object_class_find_property(G_OBJECT_GET_CLASS(node->gst_element), param_table[it_param].origin_name); - if (param_spec || __ms_rtp_node_has_property(node, param_table[it_param].origin_name) || - __ms_adaptive_src_node_has_property(node, param_table[it_param].origin_name)) { - ms_info("Got parameter [%s] for node [%s]", param_table[it_param].param_name, node->name); - *param_list = g_list_append(*param_list, &(param_table[it_param])); - } - } - ms_retvm_if(!(*param_list), MEDIA_STREAMER_ERROR_INVALID_OPERATION, "Node [%s] doesn't have any params.", node->name); - - ms_debug_fleave(); - - return MEDIA_STREAMER_ERROR_NONE; -} - -int __ms_node_get_param_value(media_streamer_node_s *node, param_s *param, char **string_value) +int ms_node_get_param_value(media_streamer_node_s *node, param_s *param, char **string_value) { int ret = MEDIA_STREAMER_ERROR_NONE; char *string_val = NULL; @@ -1570,304 +1637,7 @@ int __ms_node_get_param_value(media_streamer_node_s *node, param_s *param, char return ret; } -//LCOV_EXCL_START -static void __global(void *data, struct wl_registry *registry, - uint32_t name, const char *interface, uint32_t version) -{ - struct tizen_surface **tz_surface = NULL; - - if (!data) { - LOGE("NULL data"); - return; - } - - tz_surface = (struct tizen_surface **)data; - - if (!interface) { - LOGW("NULL interface"); - return; - } - - if (strcmp(interface, "tizen_surface") == 0) { - LOGD("binding tizen surface for wayland"); - - *tz_surface = wl_registry_bind(registry, name, &tizen_surface_interface, 1); - if (*tz_surface == NULL) - LOGE("failed to bind"); - - LOGD("done"); - } - - return; -} - -static void __global_remove(void *data, struct wl_registry *wl_registry, uint32_t name) -{ - LOGD("enter"); - return; -} - -static const struct wl_registry_listener _media_streamer_wl_registry_listener = { - __global, - __global_remove -}; - -void __parent_id_getter(void *data, struct tizen_resource *tizen_resource, uint32_t id) -{ - if (!data) { - LOGE("NULL data"); - return; - } - - *((unsigned int *)data) = id; - - LOGD("[CLIENT] got parent_id [%u] from server", id); - - return; -} - -static const struct tizen_resource_listener _media_streamer_tz_resource_listener = { - __parent_id_getter -}; - -int _media_streamer_get_wl_info(Evas_Object *obj, media_streamer_wl_info_s *wl_info) -{ - int ret = MEDIA_STREAMER_ERROR_NONE; - Ecore_Wl2_Window *window = NULL; - Ecore_Evas *ee = NULL; - Ecore_Wl2_Display *e_wl2_display = NULL; - Evas *e = NULL; - struct wl_display *display = NULL; - struct wl_display *display_wrapper = NULL; - struct wl_surface *surface = NULL; - struct wl_registry *registry = NULL; - struct wl_event_queue *queue = NULL; - struct tizen_surface *tz_surface = NULL; - struct tizen_resource *tz_resource = NULL; - - if (!obj || !wl_info) { - LOGE("NULL parameter %p %p", obj, wl_info); - return MEDIA_STREAMER_ERROR_INVALID_OPERATION; - } - - e = evas_object_evas_get(obj); - if (!e) { - LOGE("failed to get evas object"); - ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; - goto _DONE; - } - - ee = ecore_evas_ecore_evas_get(e); - if (!ee) { - LOGE("failed to get ecore evas object"); - ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; - goto _DONE; - } - - window = ecore_evas_wayland2_window_get(ee); - if (!window) { - LOGE("failed to get wayland window"); - ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; - goto _DONE; - } - - /* set video_has flag to a video application window */ - ecore_wl2_window_video_has(window, EINA_TRUE); - - surface = (struct wl_surface *)ecore_wl2_window_surface_get(window); - if (!surface) { - LOGE("failed to get wayland surface"); - ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; - goto _DONE; - } - - e_wl2_display = ecore_wl2_connected_display_get(NULL); - if (!e_wl2_display) { - LOGE("failed to get ecore wl2 display"); - ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; - goto _DONE; - } - - display = (struct wl_display *)ecore_wl2_display_get(e_wl2_display); - if (!display) { - LOGE("failed to get wayland display"); - ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; - goto _DONE; - } - - display_wrapper = wl_proxy_create_wrapper(display); - if (!display_wrapper) { - LOGE("failed to create wl display wrapper"); - ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; - goto _DONE; - } - - queue = wl_display_create_queue(display); - if (!queue) { - LOGE("failed to create wl display queue"); - ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; - goto _DONE; - } - - wl_proxy_set_queue((struct wl_proxy *)display_wrapper, queue); - - registry = wl_display_get_registry(display_wrapper); - if (!registry) { - LOGE("failed to get wayland registry"); - ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; - goto _DONE; - } - - wl_registry_add_listener(registry, &_media_streamer_wl_registry_listener, &tz_surface); - - wl_display_dispatch_queue(display, queue); - wl_display_roundtrip_queue(display, queue); - - if (!tz_surface) { - LOGE("failed to get tizen surface"); - ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; - goto _DONE; - } - - tz_resource = tizen_surface_get_tizen_resource(tz_surface, surface); - if (!tz_resource) { - LOGE("failed to get tizen resource"); - ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; - goto _DONE; - } - - wl_info->parent_id = 0; - - tizen_resource_add_listener(tz_resource, &_media_streamer_tz_resource_listener, &wl_info->parent_id); - - wl_display_roundtrip_queue(display, queue); - - if (wl_info->parent_id > 0) { - LOGD("parent id : %u", wl_info->parent_id); - } else { - ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; - LOGE("failed to get parent id"); - } - -_DONE: - if (tz_surface) { - tizen_surface_destroy(tz_surface); - tz_surface = NULL; - } - - if (tz_resource) { - tizen_resource_destroy(tz_resource); - tz_resource = NULL; - } - - if (registry) { - wl_registry_destroy(registry); - registry = NULL; - } - - if (queue) { - wl_event_queue_destroy(queue); - queue = NULL; - } - - if (display_wrapper) { - wl_proxy_wrapper_destroy(display_wrapper); - display_wrapper = NULL; - } - - return ret; -} - -int __ms_node_set_display(media_streamer_node_s *node, const char *param_value) -{ - int ret = MEDIA_STREAMER_ERROR_NONE; - Evas_Object *obj = NULL; - media_streamer_wl_info_s wl_info; - - obj = (Evas_Object *)param_value; - - /* get wayland parent id */ - if (_media_streamer_get_wl_info(obj, &wl_info) != MEDIA_STREAMER_ERROR_NONE) { - LOGE("failed to get wayland info"); - return MEDIA_STREAMER_ERROR_INVALID_OPERATION; - } - - LOGD("wayland global surface id : %d", wl_info.parent_id); - - gst_video_overlay_set_wl_window_wl_surface_id(GST_VIDEO_OVERLAY(node->gst_element), wl_info.parent_id); - - return ret; -} -//LCOV_EXCL_STOP - -int __ms_node_set_param_value(media_streamer_node_s *node, param_s *param, const char *param_value) -{ - - int ret = MEDIA_STREAMER_ERROR_NONE; - - ms_debug_fenter(); - - ms_retvm_if(node == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "node is NULL"); - ms_retvm_if(param == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "param is NULL"); - ms_retvm_if(param_value == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "param_value is NULL"); - - if (node->type == MEDIA_STREAMER_NODE_TYPE_RTP) { - ret = __ms_rtp_node_set_property(node, param, param_value); - ms_debug_fleave(); - return ret; - } - - if (node->type == MEDIA_STREAMER_NODE_TYPE_SRC && - node->subtype == MEDIA_STREAMER_NODE_SRC_TYPE_ADAPTIVE) { - ret = __ms_adaptive_src_node_set_property(node, param, param_value); - ms_debug_fleave(); - return ret; - } - - if (!g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_CAMERA_ID)) { - int camera_id = (int)strtol(param_value, NULL, 10); - ms_retvm_if(camera_id == -1, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "Invalid %s value", param->param_name); - g_object_set(node->gst_element, param->origin_name, camera_id, NULL); - } else if (!g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_CAPTURE_WIDTH) || - !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_CAPTURE_HEIGHT) || - !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_STREAM_TYPE) || - !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_PORT) || - !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_ROTATE) || - !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_FLIP) || - !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_DISPLAY_GEOMETRY_METHOD)) { - g_object_set(node->gst_element, param->origin_name, (int)strtol(param_value, NULL, 10), NULL); - } else if (!g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_IS_LIVE_STREAM) || - !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_CLOCK_SYNCHRONIZED) || - !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_USE_TBM) || - !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_VISIBLE)) { - g_object_set(node->gst_element, param->origin_name, !g_ascii_strcasecmp(param_value, "true"), NULL); - } else if (!g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_URI)) { - if (node->type == MEDIA_STREAMER_NODE_TYPE_SRC && node->subtype == MEDIA_STREAMER_NODE_SRC_TYPE_FILE) { - ret = __ms_util_uri_path_check(param_value); - if (ret != MEDIA_STREAMER_ERROR_NONE) - return ret; - } - g_object_set(node->gst_element, param->origin_name, param_value, NULL); - } else if (!g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_USER_AGENT) || - !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_IP_ADDRESS) || - !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_AUDIO_DEVICE) || - !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_HOST) || - !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_SEGMENT_LOCATION) || - !g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_PLAYLIST_LOCATION)) { - g_object_set(node->gst_element, param->origin_name, param_value, NULL); - } else if (!g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_DISPLAY)) { - ret = __ms_node_set_display(node, param_value); - } else { - ms_info("Can not set parameter [%s] in the node [%s]", param->param_name, node->name); - ret = MEDIA_STREAMER_ERROR_INVALID_PARAMETER; - } - - ms_debug_fleave(); - - return ret; -} - -int __ms_node_set_pad_format(media_streamer_node_s *node, const char *pad_name, media_format_h fmt) +int ms_node_set_pad_format(media_streamer_node_s *node, const char *pad_name, media_format_h fmt) { int ret = MEDIA_STREAMER_ERROR_NONE; @@ -1885,9 +1655,9 @@ int __ms_node_set_pad_format(media_streamer_node_s *node, const char *pad_name, if (g_strrstr(pad_name, MS_RTP_PAD_VIDEO_IN)) { ret = media_format_get_video_info(fmt, &mime, NULL, NULL, NULL, NULL); if (MEDIA_FORMAT_ERROR_NONE == ret) { - rtp_caps_str = g_strdup_printf("application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=%s", __ms_convert_mime_to_rtp_format(mime)); + rtp_caps_str = g_strdup_printf("application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=%s", ms_convert_mime_to_rtp_format(mime)); param_s param = {MEDIA_STREAMER_PARAM_VIDEO_IN_FORMAT, MEDIA_STREAMER_PARAM_VIDEO_IN_FORMAT}; - ret = __ms_node_set_param_value(node, ¶m, rtp_caps_str); + ret = ms_node_set_param_value(node, ¶m, rtp_caps_str); } } else if (g_strrstr(pad_name, MS_RTP_PAD_AUDIO_IN)) { int audio_channels, audio_samplerate; @@ -1895,13 +1665,13 @@ int __ms_node_set_pad_format(media_streamer_node_s *node, const char *pad_name, if (MEDIA_FORMAT_ERROR_NONE == ret) { rtp_caps_str = g_strdup_printf("application/x-rtp,media=(string)audio,clock-rate=(int)8000,encoding-name=(string)AMR,encoding-params=(string)1,octet-align=(string)1"); param_s param = {MEDIA_STREAMER_PARAM_AUDIO_IN_FORMAT, MEDIA_STREAMER_PARAM_AUDIO_IN_FORMAT}; - ret = __ms_node_set_param_value(node, ¶m, rtp_caps_str); + ret = ms_node_set_param_value(node, ¶m, rtp_caps_str); } } MS_SAFE_GFREE(rtp_caps_str); } else { - ret = __ms_element_set_fmt(node->gst_element, pad_name, fmt); + ret = ms_element_set_fmt(node->gst_element, pad_name, fmt); } ms_debug_fleave(); @@ -1909,7 +1679,7 @@ int __ms_node_set_pad_format(media_streamer_node_s *node, const char *pad_name, return ret; } -gboolean _ms_node_resources_acquire_iter(const GValue *item, GValue *ret, gpointer user_data) +gboolean ms_node_resources_acquire_iter(const GValue *item, GValue *ret, gpointer user_data) { media_streamer_s *ms_streamer = (media_streamer_s *) user_data; media_streamer_node_s *node = NULL; @@ -1937,7 +1707,7 @@ gboolean _ms_node_resources_acquire_iter(const GValue *item, GValue *ret, gpoint return TRUE; } - if (MEDIA_STREAMER_ERROR_NONE != _ms_node_resource_acquire(node)) { + if (MEDIA_STREAMER_ERROR_NONE != ms_node_resource_acquire(node)) { ms_error("Failed to acquire resource for node [%s]", node->name); g_object_unref(element); return FALSE; @@ -1952,7 +1722,7 @@ gboolean _ms_node_resources_acquire_iter(const GValue *item, GValue *ret, gpoint return TRUE; } -gboolean _ms_node_resources_release_iter(const GValue *item, GValue *ret, gpointer user_data) +gboolean ms_node_resources_release_iter(const GValue *item, GValue *ret, gpointer user_data) { media_streamer_s *ms_streamer = (media_streamer_s *) user_data; media_streamer_node_s *node = NULL; @@ -1980,7 +1750,7 @@ gboolean _ms_node_resources_release_iter(const GValue *item, GValue *ret, gpoint return TRUE; } - if (MEDIA_STREAMER_ERROR_NONE != _ms_node_resource_release(node)) { + if (MEDIA_STREAMER_ERROR_NONE != ms_node_resource_release(node)) { ms_error("Failed to release resource for node [%s]", node->name); g_object_unref(element); return FALSE; @@ -1995,7 +1765,7 @@ gboolean _ms_node_resources_release_iter(const GValue *item, GValue *ret, gpoint return TRUE; } -gboolean _ms_node_policy_check_iter(const GValue *item, GValue *ret, gpointer user_data) +gboolean ms_node_policy_check_iter(const GValue *item, GValue *ret, gpointer user_data) { media_streamer_s *ms_streamer = (media_streamer_s *) user_data; media_streamer_node_s *node = NULL; @@ -2024,7 +1794,7 @@ gboolean _ms_node_policy_check_iter(const GValue *item, GValue *ret, gpointer us return TRUE; } - if (MEDIA_STREAMER_ERROR_NONE != _ms_node_policy_check(node)) { + if (MEDIA_STREAMER_ERROR_NONE != ms_node_policy_check(node)) { ms_error("Failed to check policy for node [%s]", node->name); g_object_unref(element); return FALSE; diff --git a/src/media_streamer_node_policy.c b/src/media_streamer_node_policy.c index e8bea78..721e656 100644 --- a/src/media_streamer_node_policy.c +++ b/src/media_streamer_node_policy.c @@ -81,7 +81,7 @@ static void __ms_node_policy_changed_cb(const char *name, const char *value, voi g_mutex_lock(&streamer->mutex_lock); streamer->is_interrupted = TRUE; if (MEDIA_STREAMER_ERROR_NONE != - __ms_pipeline_unprepare(streamer)) { + ms_pipeline_unprepare(streamer)) { ms_error("Failed to unprepare streamer"); streamer->is_interrupted = FALSE; g_mutex_unlock(&streamer->mutex_lock); @@ -105,7 +105,7 @@ static void __ms_node_policy_changed_cb(const char *name, const char *value, voi } //LCOV_EXCL_STOP -int __ms_node_policy_init(media_streamer_node_s *node) +int ms_node_policy_init(media_streamer_node_s *node) { media_streamer_policy_type_e policy = POLICY_TYPE_NONE; int ret = MEDIA_STREAMER_ERROR_NONE; @@ -153,7 +153,7 @@ int __ms_node_policy_init(media_streamer_node_s *node) return ret; } -int __ms_node_policy_deinit(media_streamer_node_s *node) +int ms_node_policy_deinit(media_streamer_node_s *node) { media_streamer_policy_type_e policy = POLICY_TYPE_NONE; int ret = MEDIA_STREAMER_ERROR_NONE; @@ -187,7 +187,7 @@ int __ms_node_policy_deinit(media_streamer_node_s *node) return ret; } -int _ms_node_policy_check(media_streamer_node_s *node) +int ms_node_policy_check(media_streamer_node_s *node) { media_streamer_policy_type_e policy = POLICY_TYPE_NONE; int ret = MEDIA_STREAMER_ERROR_NONE; diff --git a/src/media_streamer_node_resources.c b/src/media_streamer_node_resources.c index ac23b6a..0143680 100644 --- a/src/media_streamer_node_resources.c +++ b/src/media_streamer_node_resources.c @@ -120,7 +120,7 @@ static gboolean __ms_node_get_resources_needed(media_streamer_node_s *node, mm_r return FALSE; } -int _ms_node_resource_acquire(media_streamer_node_s *node) +int ms_node_resource_acquire(media_streamer_node_s *node) { mm_resource_manager_res_type_e resource; mm_resource_manager_h resource_manager; @@ -177,7 +177,7 @@ int _ms_node_resource_acquire(media_streamer_node_s *node) return MEDIA_STREAMER_ERROR_NONE; } -int _ms_node_resource_release(media_streamer_node_s *node) +int ms_node_resource_release(media_streamer_node_s *node) { mm_resource_manager_h resource_manager; diff --git a/src/media_streamer_priv.c b/src/media_streamer_priv.c index f876904..cd62948 100644 --- a/src/media_streamer_priv.c +++ b/src/media_streamer_priv.c @@ -28,7 +28,7 @@ static gboolean __ms_resource_node_find(gpointer key, gpointer value, gpointer u static int __ms_resource_release_cb(mm_resource_manager_h rm, mm_resource_manager_res_h resource_h, void *user_data); -int __ms_state_change(media_streamer_s *ms_streamer, media_streamer_state_e state) +int ms_state_change(media_streamer_s *ms_streamer, media_streamer_state_e state) { int ret = MEDIA_STREAMER_ERROR_NONE; @@ -56,7 +56,7 @@ int __ms_state_change(media_streamer_s *ms_streamer, media_streamer_state_e stat * Media streamer must be in IDLE state * Unlink and destroy all bins and elements. */ - ret = __ms_element_set_state(ms_streamer->pipeline, GST_STATE_NULL); + ret = ms_element_set_state(ms_streamer->pipeline, GST_STATE_NULL); ms_streamer->pend_state = 0; ms_streamer->state = state; break; @@ -64,23 +64,23 @@ int __ms_state_change(media_streamer_s *ms_streamer, media_streamer_state_e stat /* * Unlink all gst_elements, set pipeline into state NULL */ - ret = __ms_element_set_state(ms_streamer->pipeline, GST_STATE_NULL); - __ms_bin_foreach_elements(GST_BIN(ms_streamer->sink_bin), __ms_element_unlock_state, ms_streamer); + ret = ms_element_set_state(ms_streamer->pipeline, GST_STATE_NULL); + ms_bin_foreach_elements(GST_BIN(ms_streamer->sink_bin), ms_element_unlock_state, ms_streamer); ms_streamer->pend_state = MEDIA_STREAMER_STATE_IDLE; ms_streamer->state = state; break; case MEDIA_STREAMER_STATE_READY: - ret = __ms_element_set_state(ms_streamer->pipeline, GST_STATE_PAUSED); + ret = ms_element_set_state(ms_streamer->pipeline, GST_STATE_PAUSED); ms_streamer->pend_state = MEDIA_STREAMER_STATE_READY; break; case MEDIA_STREAMER_STATE_PLAYING: - ret = __ms_element_set_state(ms_streamer->pipeline, GST_STATE_PLAYING); - __ms_bin_foreach_elements(GST_BIN(ms_streamer->sink_bin), __ms_element_unlock_state, ms_streamer); + ret = ms_element_set_state(ms_streamer->pipeline, GST_STATE_PLAYING); + ms_bin_foreach_elements(GST_BIN(ms_streamer->sink_bin), ms_element_unlock_state, ms_streamer); ms_streamer->pend_state = MEDIA_STREAMER_STATE_PLAYING; break; case MEDIA_STREAMER_STATE_PAUSED: - ret = __ms_element_set_state(ms_streamer->pipeline, GST_STATE_PAUSED); + ret = ms_element_set_state(ms_streamer->pipeline, GST_STATE_PAUSED); ms_streamer->pend_state = MEDIA_STREAMER_STATE_PAUSED; break; case MEDIA_STREAMER_STATE_SEEKING: @@ -95,7 +95,7 @@ int __ms_state_change(media_streamer_s *ms_streamer, media_streamer_state_e stat return ret; } -int __ms_create(media_streamer_s *ms_streamer) +int ms_create(media_streamer_s *ms_streamer) { int ret = MEDIA_STREAMER_ERROR_NONE; @@ -103,12 +103,12 @@ int __ms_create(media_streamer_s *ms_streamer) ms_retvm_if(ms_streamer == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "ms_streamer is NULL"); - __ms_load_ini_settings(&ms_streamer->ini); + ms_load_ini_settings(&ms_streamer->ini); - ms_streamer->nodes_table = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, __ms_node_remove_from_table); + ms_streamer->nodes_table = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, ms_node_remove_from_table); ms_retvm_if(ms_streamer->nodes_table == NULL, MEDIA_STREAMER_ERROR_INVALID_OPERATION, "Error creating hash table"); - ret = __ms_pipeline_create(ms_streamer); + ret = ms_pipeline_create(ms_streamer); if (MM_RESOURCE_MANAGER_ERROR_NONE != mm_resource_manager_create( MM_RESOURCE_MANAGER_APP_CLASS_MEDIA, @@ -124,7 +124,7 @@ int __ms_create(media_streamer_s *ms_streamer) return ret; } -int __ms_get_position(media_streamer_s *ms_streamer, int *time) +int ms_get_position(media_streamer_s *ms_streamer, int *time) { gint64 current = GST_CLOCK_TIME_NONE; @@ -146,7 +146,7 @@ int __ms_get_position(media_streamer_s *ms_streamer, int *time) return MEDIA_STREAMER_ERROR_NONE; } -int __ms_get_duration(media_streamer_s *ms_streamer, int *time) +int ms_get_duration(media_streamer_s *ms_streamer, int *time) { gint64 duration = GST_CLOCK_TIME_NONE; @@ -166,7 +166,7 @@ int __ms_get_duration(media_streamer_s *ms_streamer, int *time) return MEDIA_STREAMER_ERROR_NONE; } -int __ms_seek(media_streamer_s *ms_streamer, int g_time, bool flag) +int ms_seek(media_streamer_s *ms_streamer, int g_time, bool flag) { GstSeekFlags seek_flag; @@ -179,7 +179,7 @@ int __ms_seek(media_streamer_s *ms_streamer, int g_time, bool flag) else seek_flag = GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT; - if (!__ms_gst_seek(ms_streamer->pipeline, (gint64) g_time * GST_MSECOND, seek_flag)) { + if (!ms_gst_seek(ms_streamer->pipeline, (gint64) g_time * GST_MSECOND, seek_flag)) { ms_error("Error while seeking media streamer to [%d]", g_time); return MEDIA_STREAMER_ERROR_SEEK_FAILED; } else { @@ -193,7 +193,7 @@ int __ms_seek(media_streamer_s *ms_streamer, int g_time, bool flag) return MEDIA_STREAMER_ERROR_NONE; } -int __ms_destroy(media_streamer_s *ms_streamer) +int ms_destroy(media_streamer_s *ms_streamer) { int ret = MEDIA_STREAMER_ERROR_NONE; @@ -203,7 +203,7 @@ int __ms_destroy(media_streamer_s *ms_streamer) g_mutex_lock(&ms_streamer->mutex_lock); - ret = __ms_state_change(ms_streamer, MEDIA_STREAMER_STATE_NONE); + ret = ms_state_change(ms_streamer, MEDIA_STREAMER_STATE_NONE); MS_TABLE_SAFE_UNREF(ms_streamer->nodes_table); MS_SAFE_UNREF(ms_streamer->bus); @@ -233,7 +233,7 @@ int __ms_destroy(media_streamer_s *ms_streamer) return ret; } -int __ms_acquire_resources(media_streamer_s *ms_streamer) +int ms_acquire_resources(media_streamer_s *ms_streamer) { int ret = MEDIA_STREAMER_ERROR_NONE; @@ -242,8 +242,8 @@ int __ms_acquire_resources(media_streamer_s *ms_streamer) ms_retvm_if(ms_streamer == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "ms_streamer is NULL"); /* Acquire resources for src bin */ - ret = __ms_bin_foreach_elements(GST_BIN(ms_streamer->src_bin), - _ms_node_resources_acquire_iter, ms_streamer); + ret = ms_bin_foreach_elements(GST_BIN(ms_streamer->src_bin), + ms_node_resources_acquire_iter, ms_streamer); if (MEDIA_STREAMER_ERROR_NONE != ret) { ms_error("Failed to acquire resources for src bin"); return ret; @@ -253,16 +253,16 @@ int __ms_acquire_resources(media_streamer_s *ms_streamer) add nodes explicitly they will be acquired later. For example when decodebin is used resources are quired when 'autoplug-select' signal is triggered for new GstElement. */ - ret = __ms_bin_foreach_elements(GST_BIN(ms_streamer->transform_bin), - _ms_node_resources_acquire_iter, ms_streamer); + ret = ms_bin_foreach_elements(GST_BIN(ms_streamer->transform_bin), + ms_node_resources_acquire_iter, ms_streamer); if (MEDIA_STREAMER_ERROR_NONE != ret) { ms_error("Failed to acquire resources for transform bin"); return ret; } /* Acquire resources for src bin */ - ret = __ms_bin_foreach_elements(GST_BIN(ms_streamer->sink_bin), - _ms_node_resources_acquire_iter, ms_streamer); + ret = ms_bin_foreach_elements(GST_BIN(ms_streamer->sink_bin), + ms_node_resources_acquire_iter, ms_streamer); if (MEDIA_STREAMER_ERROR_NONE != ret) { ms_error("Failed to acquire resources for sink bin"); return ret; @@ -273,7 +273,7 @@ int __ms_acquire_resources(media_streamer_s *ms_streamer) return MEDIA_STREAMER_ERROR_NONE; } -int __ms_release_resources(media_streamer_s *ms_streamer) +int ms_release_resources(media_streamer_s *ms_streamer) { int ret = MEDIA_STREAMER_ERROR_NONE; @@ -282,8 +282,8 @@ int __ms_release_resources(media_streamer_s *ms_streamer) ms_retvm_if(ms_streamer == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "ms_streamer is NULL"); /* Release resources for src bin */ - ret = __ms_bin_foreach_elements(GST_BIN(ms_streamer->src_bin), - _ms_node_resources_release_iter, ms_streamer); + ret = ms_bin_foreach_elements(GST_BIN(ms_streamer->src_bin), + ms_node_resources_release_iter, ms_streamer); if (MEDIA_STREAMER_ERROR_NONE != ret) { ms_error("Failed to release resources for src bin"); return ret; @@ -292,16 +292,16 @@ int __ms_release_resources(media_streamer_s *ms_streamer) /* Release resources for transform bin. Here we also consider nodes that were not added by user explicitly (e.g. decodebin was used). */ - ret = __ms_bin_foreach_elements(GST_BIN(ms_streamer->transform_bin), - _ms_node_resources_release_iter, ms_streamer); + ret = ms_bin_foreach_elements(GST_BIN(ms_streamer->transform_bin), + ms_node_resources_release_iter, ms_streamer); if (MEDIA_STREAMER_ERROR_NONE != ret) { ms_error("Failed to release resources for transform bin"); return ret; } /* Release resources for src bin */ - ret = __ms_bin_foreach_elements(GST_BIN(ms_streamer->sink_bin), - _ms_node_resources_release_iter, ms_streamer); + ret = ms_bin_foreach_elements(GST_BIN(ms_streamer->sink_bin), + ms_node_resources_release_iter, ms_streamer); if (MEDIA_STREAMER_ERROR_NONE != ret) { ms_error("Failed to release resources for sink bin"); return ret; @@ -328,7 +328,7 @@ static int __ms_change_resources_state(media_streamer_s *ms_streamer, media_stre case MEDIA_STREAMER_STATE_PAUSED: case MEDIA_STREAMER_STATE_PLAYING: /* After unprepare function call */ - ret = __ms_release_resources(ms_streamer); + ret = ms_release_resources(ms_streamer); break; case MEDIA_STREAMER_STATE_NONE: case MEDIA_STREAMER_STATE_IDLE: @@ -341,7 +341,7 @@ static int __ms_change_resources_state(media_streamer_s *ms_streamer, media_stre switch (ms_streamer->pend_state) { case MEDIA_STREAMER_STATE_IDLE: /* After prepare function */ - ret = __ms_acquire_resources(ms_streamer); + ret = ms_acquire_resources(ms_streamer); break; case MEDIA_STREAMER_STATE_PAUSED: case MEDIA_STREAMER_STATE_PLAYING: @@ -406,7 +406,7 @@ static int __ms_resource_release_cb(mm_resource_manager_h rm, streamer->is_interrupted = TRUE; if (MEDIA_STREAMER_ERROR_NONE != - __ms_pipeline_unprepare(streamer)) { + ms_pipeline_unprepare(streamer)) { ms_error("Failed to unprepare streamer"); streamer->is_interrupted = FALSE; g_mutex_unlock(&streamer->mutex_lock); @@ -440,8 +440,8 @@ static int __ms_check_policy(media_streamer_s *ms_streamer) ms_retvm_if(ms_streamer == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "ms_streamer is NULL"); /* Acquire resources for src bin */ - ret = __ms_bin_foreach_elements(GST_BIN(ms_streamer->src_bin), - _ms_node_policy_check_iter, ms_streamer); + ret = ms_bin_foreach_elements(GST_BIN(ms_streamer->src_bin), + ms_node_policy_check_iter, ms_streamer); if (MEDIA_STREAMER_ERROR_NONE != ret) { ms_error("Failed to check policies for src bin"); return ret; diff --git a/src/media_streamer_util.c b/src/media_streamer_util.c index 9119a2d..363bc14 100644 --- a/src/media_streamer_util.c +++ b/src/media_streamer_util.c @@ -17,6 +17,9 @@ #include #include #include +#include +#include +#include #include "media_streamer.h" #include "media_streamer_priv.h" #include "media_streamer_util.h" @@ -108,7 +111,7 @@ static dictionary *__ms_get_ini_instance(void) return instance; } -gchar *__ms_ini_get_string(const char *ini_path, const char *default_str) +gchar *ms_ini_get_string(const char *ini_path, const char *default_str) { const char *result_str = default_str; @@ -127,7 +130,7 @@ gchar *__ms_ini_get_string(const char *ini_path, const char *default_str) return g_strdup(result_str); } -void __ms_ini_read_list(const char *key, gchar ***list) +void ms_ini_read_list(const char *key, gchar ***list) { const gchar *str; @@ -149,7 +152,7 @@ void __ms_ini_read_list(const char *key, gchar ***list) } -void __ms_load_ini_settings(media_streamer_ini_t *ini) +void ms_load_ini_settings(media_streamer_ini_t *ini) { ms_debug_fenter(); @@ -169,11 +172,11 @@ void __ms_load_ini_settings(media_streamer_ini_t *ini) ini->use_decodebin = iniparser_getboolean(__ms_get_ini_instance(), "general:use decodebin", DEFAULT_USE_DECODEBIN); /* Read exclude elements list */ - __ms_ini_read_list("general:exclude elements", &ini->exclude_elem_names); + ms_ini_read_list("general:exclude elements", &ini->exclude_elem_names); /* Read resource require elements list */ - __ms_ini_read_list("general:resource elements", &ini->resource_required_elem_names); + ms_ini_read_list("general:resource elements", &ini->resource_required_elem_names); /* Read gstreamer arguments list */ - __ms_ini_read_list("general:gstreamer arguments", &ini->gst_args); + ms_ini_read_list("general:gstreamer arguments", &ini->gst_args); } else { /* if dict is not available just fill the structure with default values */ @@ -189,7 +192,7 @@ void __ms_load_ini_settings(media_streamer_ini_t *ini) } -const gchar *__ms_convert_mime_to_string_format(media_format_mimetype_e mime) +const gchar *ms_convert_mime_to_string_format(media_format_mimetype_e mime) { gchar *format_name = NULL; int it_format; @@ -209,7 +212,7 @@ const gchar *__ms_convert_mime_to_string_format(media_format_mimetype_e mime) } //LCOV_EXCL_START -const gchar *__ms_convert_mime_to_rtp_format(media_format_mimetype_e mime) +const gchar *ms_convert_mime_to_rtp_format(media_format_mimetype_e mime) { switch (mime) { case MEDIA_FORMAT_I420: @@ -231,7 +234,7 @@ const gchar *__ms_convert_mime_to_rtp_format(media_format_mimetype_e mime) } //LCOV_EXCL_STOP -media_format_mimetype_e __ms_convert_string_format_to_media_format(const char *format_type) +media_format_mimetype_e ms_convert_string_format_to_media_format(const char *format_type) { media_format_mimetype_e mime = MEDIA_FORMAT_NATIVE_VIDEO; int it_format; @@ -250,7 +253,7 @@ media_format_mimetype_e __ms_convert_string_format_to_media_format(const char *f return mime; } -void __ms_signal_create(GList **sig_list, GstElement *obj, const char *sig_name, GCallback cb, gpointer user_data) +void ms_signal_create(GList **sig_list, GstElement *obj, const char *sig_name, GCallback cb, gpointer user_data) { media_streamer_signal_s *sig_data; @@ -278,7 +281,7 @@ void __ms_signal_create(GList **sig_list, GstElement *obj, const char *sig_name, ms_debug_fleave(); } -void __ms_signal_destroy(void *data) +void ms_signal_destroy(void *data) { media_streamer_signal_s *sig_data = (media_streamer_signal_s *) data; @@ -297,7 +300,7 @@ void __ms_signal_destroy(void *data) ms_debug_fleave(); } -void __ms_param_value_destroy(gpointer data) +void ms_param_value_destroy(gpointer data) { GValue *val = (GValue *)data; @@ -316,7 +319,7 @@ void __ms_param_value_destroy(gpointer data) ms_debug_fleave(); } -int __ms_util_uri_path_check(const char *file_uri) +int ms_util_uri_path_check(const char *file_uri) { struct stat stat_results = {0, }; int file_open = 0; @@ -357,7 +360,7 @@ int __ms_util_uri_path_check(const char *file_uri) return MEDIA_STREAMER_ERROR_NONE; } -int __ms_bin_foreach_elements(GstBin *bin, GstIteratorFoldFunction func, void *user_data) +int ms_bin_foreach_elements(GstBin *bin, GstIteratorFoldFunction func, void *user_data) { media_streamer_s *streamer = (media_streamer_s *) user_data; @@ -400,3 +403,212 @@ int __ms_bin_foreach_elements(GstBin *bin, GstIteratorFoldFunction func, void *u return MEDIA_STREAMER_ERROR_NONE; } + +//LCOV_EXCL_START +static void __global(void *data, struct wl_registry *registry, + uint32_t name, const char *interface, uint32_t version) +{ + struct tizen_surface **tz_surface = NULL; + + if (!data) { + LOGE("NULL data"); + return; + } + + tz_surface = (struct tizen_surface **)data; + + if (!interface) { + LOGW("NULL interface"); + return; + } + + if (strcmp(interface, "tizen_surface") == 0) { + LOGD("binding tizen surface for wayland"); + + *tz_surface = wl_registry_bind(registry, name, &tizen_surface_interface, 1); + if (*tz_surface == NULL) + LOGE("failed to bind"); + + LOGD("done"); + } + + return; +} + +static void __global_remove(void *data, struct wl_registry *wl_registry, uint32_t name) +{ + LOGD("enter"); + return; +} + +static const struct wl_registry_listener _media_streamer_wl_registry_listener = { + __global, + __global_remove +}; + +static void __parent_id_getter(void *data, struct tizen_resource *tizen_resource, uint32_t id) +{ + if (!data) { + LOGE("NULL data"); + return; + } + + *((unsigned int *)data) = id; + + LOGD("[CLIENT] got parent_id [%u] from server", id); + + return; +} + +static const struct tizen_resource_listener _media_streamer_tz_resource_listener = { + __parent_id_getter +}; + +int ms_get_wl_info(Evas_Object *obj, media_streamer_wl_info_s *wl_info) +{ + int ret = MEDIA_STREAMER_ERROR_NONE; + Ecore_Wl2_Window *window = NULL; + Ecore_Evas *ee = NULL; + Ecore_Wl2_Display *e_wl2_display = NULL; + Evas *e = NULL; + struct wl_display *display = NULL; + struct wl_display *display_wrapper = NULL; + struct wl_surface *surface = NULL; + struct wl_registry *registry = NULL; + struct wl_event_queue *queue = NULL; + struct tizen_surface *tz_surface = NULL; + struct tizen_resource *tz_resource = NULL; + + if (!obj || !wl_info) { + LOGE("NULL parameter %p %p", obj, wl_info); + return MEDIA_STREAMER_ERROR_INVALID_OPERATION; + } + + e = evas_object_evas_get(obj); + if (!e) { + LOGE("failed to get evas object"); + ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; + goto _DONE; + } + + ee = ecore_evas_ecore_evas_get(e); + if (!ee) { + LOGE("failed to get ecore evas object"); + ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; + goto _DONE; + } + + window = ecore_evas_wayland2_window_get(ee); + if (!window) { + LOGE("failed to get wayland window"); + ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; + goto _DONE; + } + + /* set video_has flag to a video application window */ + ecore_wl2_window_video_has(window, EINA_TRUE); + + surface = (struct wl_surface *)ecore_wl2_window_surface_get(window); + if (!surface) { + LOGE("failed to get wayland surface"); + ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; + goto _DONE; + } + + e_wl2_display = ecore_wl2_connected_display_get(NULL); + if (!e_wl2_display) { + LOGE("failed to get ecore wl2 display"); + ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; + goto _DONE; + } + + display = (struct wl_display *)ecore_wl2_display_get(e_wl2_display); + if (!display) { + LOGE("failed to get wayland display"); + ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; + goto _DONE; + } + + display_wrapper = wl_proxy_create_wrapper(display); + if (!display_wrapper) { + LOGE("failed to create wl display wrapper"); + ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; + goto _DONE; + } + + queue = wl_display_create_queue(display); + if (!queue) { + LOGE("failed to create wl display queue"); + ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; + goto _DONE; + } + + wl_proxy_set_queue((struct wl_proxy *)display_wrapper, queue); + + registry = wl_display_get_registry(display_wrapper); + if (!registry) { + LOGE("failed to get wayland registry"); + ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; + goto _DONE; + } + + wl_registry_add_listener(registry, &_media_streamer_wl_registry_listener, &tz_surface); + + wl_display_dispatch_queue(display, queue); + wl_display_roundtrip_queue(display, queue); + + if (!tz_surface) { + LOGE("failed to get tizen surface"); + ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; + goto _DONE; + } + + tz_resource = tizen_surface_get_tizen_resource(tz_surface, surface); + if (!tz_resource) { + LOGE("failed to get tizen resource"); + ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; + goto _DONE; + } + + wl_info->parent_id = 0; + + tizen_resource_add_listener(tz_resource, &_media_streamer_tz_resource_listener, &wl_info->parent_id); + + wl_display_roundtrip_queue(display, queue); + + if (wl_info->parent_id > 0) { + LOGD("parent id : %u", wl_info->parent_id); + } else { + ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION; + LOGE("failed to get parent id"); + } + +_DONE: + if (tz_surface) { + tizen_surface_destroy(tz_surface); + tz_surface = NULL; + } + + if (tz_resource) { + tizen_resource_destroy(tz_resource); + tz_resource = NULL; + } + + if (registry) { + wl_registry_destroy(registry); + registry = NULL; + } + + if (queue) { + wl_event_queue_destroy(queue); + queue = NULL; + } + + if (display_wrapper) { + wl_proxy_wrapper_destroy(display_wrapper); + display_wrapper = NULL; + } + + return ret; +} +//LCOV_EXCL_STOP \ No newline at end of file