g_mutex_lock(&_webrtc->mutex);
+ LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->error_cb);
+
_webrtc->error_cb.callback = callback;
_webrtc->error_cb.user_data = user_data;
g_mutex_lock(&_webrtc->mutex);
+ LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->state_changed_cb);
+
_webrtc->state_changed_cb.callback = callback;
_webrtc->state_changed_cb.user_data = user_data;
RET_VAL_WITH_UNLOCK_IF(source->type != WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET, WEBRTC_ERROR_INVALID_PARAMETER, &_webrtc->mutex,
"source is not media packet type");
+ LOG_WARNING_IF_CALLBACK_EXISTS(source->buffer_state_changed_cb);
+
source->buffer_state_changed_cb.callback = callback;
source->buffer_state_changed_cb.user_data = user_data;
RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->negotiation_needed_cb);
+
_webrtc->negotiation_needed_cb.callback = callback;
_webrtc->negotiation_needed_cb.user_data = user_data;
RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->ice_candidate_cb);
+
_webrtc->ice_candidate_cb.callback = callback;
_webrtc->ice_candidate_cb.user_data = user_data;
RET_VAL_WITH_UNLOCK_IF(_webrtc->state == WEBRTC_STATE_PLAYING, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should NOT be PLAYING");
+ LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->track_added_cb);
+
_webrtc->track_added_cb.callback = callback;
_webrtc->track_added_cb.user_data = user_data;
RET_VAL_WITH_UNLOCK_IF(_webrtc->state == WEBRTC_STATE_PLAYING, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should NOT be PLAYING");
- if (_webrtc->encoded_audio_frame_cb.callback)
- LOG_WARNING("previous callback[%p] user_data[%p]",
- _webrtc->encoded_audio_frame_cb.callback, _webrtc->encoded_audio_frame_cb.user_data);
+ LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->encoded_audio_frame_cb);
_webrtc->encoded_audio_frame_cb.callback = callback;
_webrtc->encoded_audio_frame_cb.user_data = user_data;
RET_VAL_WITH_UNLOCK_IF(_webrtc->state == WEBRTC_STATE_PLAYING, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should NOT be PLAYING");
- if (_webrtc->encoded_video_frame_cb.callback)
- LOG_WARNING("previous callback[%p] user_data[%p]",
- _webrtc->encoded_video_frame_cb.callback, _webrtc->encoded_video_frame_cb.user_data);
+ LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->encoded_video_frame_cb);
_webrtc->encoded_video_frame_cb.callback = callback;
_webrtc->encoded_video_frame_cb.user_data = user_data;
RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->data_channel_cb);
+
_webrtc->data_channel_cb.callback = callback;
_webrtc->data_channel_cb.user_data = user_data;
g_mutex_lock(&_channel->mutex);
+ LOG_WARNING_IF_CALLBACK_EXISTS(_channel->open_cb);
+
_channel->open_cb.callback = callback;
_channel->open_cb.user_data = user_data;
g_mutex_lock(&_channel->mutex);
+ LOG_WARNING_IF_CALLBACK_EXISTS(_channel->message_cb);
+
_channel->message_cb.callback = callback;
_channel->message_cb.user_data = user_data;
g_mutex_lock(&_channel->mutex);
+ LOG_WARNING_IF_CALLBACK_EXISTS(_channel->error_cb);
+
_channel->error_cb.callback = callback;
_channel->error_cb.user_data = user_data;
g_mutex_lock(&_channel->mutex);
+ LOG_WARNING_IF_CALLBACK_EXISTS(_channel->close_cb);
+
_channel->close_cb.callback = callback;
_channel->close_cb.user_data = user_data;