GENERATE_DOT(webrtc, "STATE_%s", __state_str[webrtc->state]);
}
+static void __invoke_error_cb(webrtc_s *webrtc, webrtc_error_e error)
+{
+ RET_IF(webrtc == NULL, "webrtc is NULL");
+
+ LOG_INFO("error[0x%x]", error);
+
+ if (webrtc->error_cb.callback) {
+ LOG_DEBUG(">>> callback[%p], user_data[%p]", webrtc->error_cb.callback, webrtc->error_cb.user_data);
+ ((webrtc_error_cb)(webrtc->error_cb.callback))((webrtc_h)webrtc, error, webrtc->state, webrtc->error_cb.user_data);
+ LOG_DEBUG("<<< end of the callback");
+ }
+}
+
static gboolean __bus_watch_cb(GstBus *bus, GstMessage *message, gpointer user_data)
{
webrtc_s *webrtc = (webrtc_s *)user_data;
}
switch (GST_MESSAGE_TYPE(message)) {
- case GST_MESSAGE_ERROR:
+ case GST_MESSAGE_ERROR: {
+ webrtc_error_e error = WEBRTC_ERROR_INVALID_OPERATION;
gst_message_parse_error(message, &err, NULL);
LOG_ERROR("Error[from %s]: message[%s], code[%d]",
GST_OBJECT_NAME(GST_OBJECT_CAST(GST_ELEMENT(GST_MESSAGE_SRC(message)))), err->message, err->code);
- if (webrtc->error_cb.callback) {
- webrtc_error_e error = WEBRTC_ERROR_INVALID_OPERATION;
- if (err->domain == GST_RESOURCE_ERROR)
- error = WEBRTC_ERROR_RESOURCE_FAILED;
- else if (err->domain == GST_STREAM_ERROR)
- error = WEBRTC_ERROR_STREAM_FAILED;
-
- LOG_DEBUG(">>> invoke error_cb[%p], user_data[%p]",
- webrtc->error_cb.callback, webrtc->error_cb.user_data);
- ((webrtc_error_cb)(webrtc->error_cb.callback))((webrtc_h)webrtc, error, webrtc->state, webrtc->error_cb.user_data);
- LOG_DEBUG("<<< end of the callback");
- }
+
+ if (err->domain == GST_RESOURCE_ERROR)
+ error = WEBRTC_ERROR_RESOURCE_FAILED;
+ else if (err->domain == GST_STREAM_ERROR)
+ error = WEBRTC_ERROR_STREAM_FAILED;
+
+ __invoke_error_cb(webrtc, error);
g_error_free(err);
break;
+ }
case GST_MESSAGE_STATE_CHANGED:
if (GST_MESSAGE_SRC(message) != GST_OBJECT(webrtc->gst.pipeline))
case GST_WEBRTC_PEER_CONNECTION_STATE_FAILED:
new_state = "FAILED";
+
+ __invoke_error_cb(webrtc, WEBRTC_ERROR_CONNECTION_FAILED);
break;
case GST_WEBRTC_PEER_CONNECTION_STATE_CLOSED:
case GST_WEBRTC_ICE_CONNECTION_STATE_FAILED:
new_state = "FAILED";
+
+ __invoke_error_cb(webrtc, WEBRTC_ERROR_CONNECTION_FAILED);
break;
case GST_WEBRTC_ICE_CONNECTION_STATE_DISCONNECTED: