*/
int ms_set_state(media_streamer_s *ms_streamer, media_streamer_state_e state);
+void ms_update_state_from_pend_state(media_streamer_s *ms_streamer);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
Name: capi-media-streamer
Summary: A Media Streamer API
-Version: 0.1.89
+Version: 0.1.90
Release: 0
Group: Multimedia/API
License: Apache-2.0
GstState gst_state_old = GST_STATE_VOID_PENDING;
GstState gst_state_new = GST_STATE_VOID_PENDING;
GstState gst_state_pending = GST_STATE_VOID_PENDING;
- media_streamer_state_e old_state = MEDIA_STREAMER_STATE_NONE;
ms_streamer = (media_streamer_s *) userdata;
ms_retvm_if(ms_streamer == NULL, FALSE, "Handle is NULL");
break;
}
- old_state = ms_streamer->state;
-
- g_mutex_lock(&ms_streamer->mutex_lock);
- ms_streamer->state = ms_streamer->pend_state;
- g_mutex_unlock(&ms_streamer->mutex_lock);
-
- ms_info("Media streamer state changed [%d] -> [%d]", old_state, ms_streamer->state);
- if (ms_streamer->state_changed_cb.callback) {
- media_streamer_state_changed_cb cb = (media_streamer_state_changed_cb) ms_streamer->state_changed_cb.callback;
- cb((media_streamer_h) ms_streamer, old_state, ms_streamer->state, ms_streamer->state_changed_cb.user_data);
- }
+ ms_update_state_from_pend_state(ms_streamer);
break;
case GST_MESSAGE_ASYNC_DONE:
#include "media_streamer_gst_webrtc.h"
#include "media_streamer_node.h"
-static void __ms_webrtcbin_update_ms_state(media_streamer_s *ms_streamer)
-{
- GstState old_state;
-
- ms_retm_if(ms_streamer == NULL, "ms_streamer is NULL");
-
- old_state = ms_streamer->state;
- ms_streamer->state = ms_streamer->pend_state;
-
- ms_info("Media streamer state changed to [%d] [%d]", old_state, ms_streamer->state);
- if (ms_streamer->state_changed_cb.callback) {
- media_streamer_state_changed_cb cb = (media_streamer_state_changed_cb) ms_streamer->state_changed_cb.callback;
- cb((media_streamer_h) ms_streamer, old_state, ms_streamer->state, ms_streamer->state_changed_cb.user_data);
- }
-}
-
static gchar *__make_ice_candidate_message(guint mlineindex, gchar *candidate)
{
JsonObject *ice, *msg;
if (ice_connection_state == GST_WEBRTC_ICE_CONNECTION_STATE_CONNECTED &&
ms_streamer->pend_state == MEDIA_STREAMER_STATE_READY)
- __ms_webrtcbin_update_ms_state(ms_streamer);
+ ms_update_state_from_pend_state(ms_streamer);
}
static int __ms_acquire_resources(media_streamer_s *ms_streamer);
static int __ms_release_resources(media_streamer_s *ms_streamer);
+void ms_update_state_from_pend_state(media_streamer_s *ms_streamer)
+{
+ GstState old_state;
+
+ ms_retm_if(ms_streamer == NULL, "ms_streamer is NULL");
+
+ g_mutex_lock(&ms_streamer->mutex_lock);
+
+ old_state = ms_streamer->state;
+ ms_streamer->state = ms_streamer->pend_state;
+ ms_info("Media streamer state changed [%d] -> [%d]", old_state, ms_streamer->state);
+
+ g_mutex_unlock(&ms_streamer->mutex_lock);
+
+ if (ms_streamer->state_changed_cb.callback) {
+ ms_debug(">>> state changed callback(%p) START", ms_streamer->state_changed_cb.callback);
+
+ media_streamer_state_changed_cb cb = (media_streamer_state_changed_cb) ms_streamer->state_changed_cb.callback;
+ cb((media_streamer_h) ms_streamer, old_state, ms_streamer->state, ms_streamer->state_changed_cb.user_data);
+
+ ms_debug("<<< state changed callback(%p) END", ms_streamer->state_changed_cb.callback);
+ }
+}
+
int ms_set_state(media_streamer_s *ms_streamer, media_streamer_state_e state)
{
int ret = MEDIA_STREAMER_ERROR_NONE;