int webrtc_unset_error_cb(webrtc_h webrtc)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->error_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "callback was not set");
+ RET_VAL_IF(_webrtc->error_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
LOG_INFO("callback[%p] user_data[%p] is reset to NULL",
_webrtc->error_cb.callback, _webrtc->error_cb.user_data);
_webrtc->error_cb.callback = NULL;
_webrtc->error_cb.user_data = NULL;
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_destroy(webrtc_h webrtc)
{
int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
ret = _gst_pipeline_set_state(_webrtc, GST_STATE_NULL);
- RET_VAL_WITH_UNLOCK_IF(ret != WEBRTC_ERROR_NONE, ret, &_webrtc->mutex, "failed to _gst_pipeline_set_state()");
+ RET_VAL_IF(ret != WEBRTC_ERROR_NONE, ret, "failed to _gst_pipeline_set_state()");
#ifndef TIZEN_TV
ret = _destroy_resource_manager(_webrtc);
- RET_VAL_WITH_UNLOCK_IF(ret != WEBRTC_ERROR_NONE, ret, &_webrtc->mutex, "failed to _destroy_resource_manager()");
+ RET_VAL_IF(ret != WEBRTC_ERROR_NONE, ret, "failed to _destroy_resource_manager()");
#endif
_webrtc->pend_state = WEBRTC_STATE_IDLE;
_webrtc->state = _webrtc->pend_state;
LOG_INFO("webrtc[%p] is destroyed", webrtc);
- g_mutex_unlock(&_webrtc->mutex);
+ g_clear_pointer(&locker, g_mutex_locker_free);
g_mutex_clear(&_webrtc->mutex);
g_free(_webrtc);
int webrtc_start(webrtc_h webrtc)
{
int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->ice_candidate_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "the ice candidate callback should be set");
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
- RET_VAL_WITH_UNLOCK_IF(_webrtc->gst.webrtcbin == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "webrtcbin is NULL");
- RET_VAL_WITH_UNLOCK_IF(!_check_if_format_is_set_to_packet_sources(_webrtc), WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "the media format should be set");
- RET_VAL_WITH_UNLOCK_IF(!_check_if_path_is_set_to_file_sources(_webrtc), WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "the media path should be set");
+ RET_VAL_IF(_webrtc->ice_candidate_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "the ice candidate callback should be set");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->gst.webrtcbin == NULL, WEBRTC_ERROR_INVALID_OPERATION, "webrtcbin is NULL");
+ RET_VAL_IF(!_check_if_format_is_set_to_packet_sources(_webrtc), WEBRTC_ERROR_INVALID_OPERATION, "the media format should be set");
+ RET_VAL_IF(!_check_if_path_is_set_to_file_sources(_webrtc), WEBRTC_ERROR_INVALID_OPERATION, "the media path should be set");
#ifndef TIZEN_TV
ret = _acquire_resource_if_needed(_webrtc);
if (ret != WEBRTC_ERROR_NONE) {
LOG_ERROR("failed to acquire resource, webrtc[%p]", _webrtc);
- g_mutex_unlock(&_webrtc->mutex);
return ret;
}
#endif
ret = _gst_pipeline_set_state(_webrtc, GST_STATE_PLAYING);
- RET_VAL_WITH_UNLOCK_IF(ret != WEBRTC_ERROR_NONE, ret, &_webrtc->mutex, "failed to change GST state to PLAYING");
+ RET_VAL_IF(ret != WEBRTC_ERROR_NONE, ret, "failed to change GST state to PLAYING");
_webrtc->pend_state = WEBRTC_STATE_NEGOTIATING;
LOG_INFO("webrtc[%p] is started", webrtc);
- g_mutex_unlock(&_webrtc->mutex);
return WEBRTC_ERROR_NONE;
}
int webrtc_unset_state_changed_cb(webrtc_h webrtc)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state_changed_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "callback was not set");
+ RET_VAL_IF(_webrtc->state_changed_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
LOG_INFO("callback[%p] user_data[%p] is reset to NULL",
_webrtc->state_changed_cb.callback, _webrtc->state_changed_cb.user_data);
_webrtc->state_changed_cb.callback = NULL;
_webrtc->state_changed_cb.user_data = NULL;
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_add_media_source(webrtc_h webrtc, webrtc_media_source_type_e type, unsigned int *source_id)
{
int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
if (type == WEBRTC_MEDIA_SOURCE_TYPE_CAMERA) {
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(source_id == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "source_id is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
ret = _add_media_source(webrtc, type, source_id);
if (ret == WEBRTC_ERROR_NONE)
LOG_INFO("source_id[%u]", *source_id);
- g_mutex_unlock(&_webrtc->mutex);
-
return ret;
}
int webrtc_remove_media_source(webrtc_h webrtc, unsigned int source_id)
{
int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
ret = _remove_media_source(webrtc, source_id);
if (ret == WEBRTC_ERROR_NONE)
LOG_INFO("source_id[%u]", source_id);
- g_mutex_unlock(&_webrtc->mutex);
-
return ret;
}
int webrtc_media_source_set_transceiver_direction(webrtc_h webrtc, unsigned int source_id, webrtc_media_type_e media_type, webrtc_transceiver_direction_e direction)
{
int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
ret = _set_transceiver_direction(webrtc, source_id, media_type, direction);
if (ret == WEBRTC_ERROR_NONE)
LOG_INFO("source_id[%u] media_type[%d] direction[%d]", source_id, media_type, direction);
- g_mutex_unlock(&_webrtc->mutex);
-
return ret;
}
int webrtc_mic_source_set_sound_stream_info(webrtc_h webrtc, unsigned int source_id, sound_stream_info_h stream_info)
{
int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(stream_info == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "stream_info is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
ret = _set_sound_stream_info(webrtc, source_id, stream_info);
- g_mutex_unlock(&_webrtc->mutex);
-
return ret;
}
int webrtc_media_packet_source_set_buffer_state_changed_cb(webrtc_h webrtc, unsigned int source_id, webrtc_media_packet_source_buffer_state_changed_cb callback, void *user_data)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
webrtc_gst_slot_s *source;
RET_VAL_IF(source_id == 0, WEBRTC_ERROR_INVALID_PARAMETER, "source_id is 0");
RET_VAL_IF(callback == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "callback is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF((source = _get_slot_by_id(_webrtc->gst.source_slots, source_id)) == NULL, WEBRTC_ERROR_INVALID_PARAMETER,
- &_webrtc->mutex, "source is NULL");
- RET_VAL_WITH_UNLOCK_IF(source->type != WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET, WEBRTC_ERROR_INVALID_PARAMETER, &_webrtc->mutex,
+ RET_VAL_IF((source = _get_slot_by_id(_webrtc->gst.source_slots, source_id)) == NULL,
+ WEBRTC_ERROR_INVALID_PARAMETER, "source is NULL");
+ RET_VAL_IF(source->type != WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET, WEBRTC_ERROR_INVALID_PARAMETER,
"source is not media packet type");
LOG_WARNING_IF_CALLBACK_EXISTS(source->buffer_state_changed_cb);
LOG_INFO("callback[%p] user_data[%p]", callback, user_data);
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_media_packet_source_unset_buffer_state_changed_cb(webrtc_h webrtc, unsigned int source_id)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
webrtc_gst_slot_s *source;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(source_id == 0, WEBRTC_ERROR_INVALID_PARAMETER, "source_id is 0");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF((source = _get_slot_by_id(_webrtc->gst.source_slots, source_id)) == NULL, WEBRTC_ERROR_INVALID_PARAMETER,
- &_webrtc->mutex, "source is NULL");
- RET_VAL_WITH_UNLOCK_IF(source->type != WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET, WEBRTC_ERROR_INVALID_PARAMETER, &_webrtc->mutex,
+ RET_VAL_IF((source = _get_slot_by_id(_webrtc->gst.source_slots, source_id)) == NULL,
+ WEBRTC_ERROR_INVALID_PARAMETER, "source is NULL");
+ RET_VAL_IF(source->type != WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET, WEBRTC_ERROR_INVALID_PARAMETER,
"source is not media packet type");
- RET_VAL_WITH_UNLOCK_IF(source->buffer_state_changed_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex,\
+ RET_VAL_IF(source->buffer_state_changed_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION,
"callback was not set");
LOG_INFO("callback[%p] user_data[%p] is reset to NULL",
source->buffer_state_changed_cb.callback = NULL;
source->buffer_state_changed_cb.user_data = NULL;
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_media_packet_source_set_format(webrtc_h webrtc, unsigned int source_id, media_format_h format)
{
int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(format == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "format is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
ret = _set_media_format(_webrtc, source_id, format);
if (ret == WEBRTC_ERROR_NONE)
LOG_INFO("source_id[%u] format[%p]", source_id, format);
- g_mutex_unlock(&_webrtc->mutex);
-
return ret;
}
int webrtc_media_packet_source_push_packet(webrtc_h webrtc, unsigned int source_id, media_packet_h packet)
{
int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
webrtc_gst_slot_s *source;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(packet == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "packet is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF((source = _get_slot_by_id(_webrtc->gst.source_slots, source_id)) == NULL, WEBRTC_ERROR_INVALID_PARAMETER,
- &_webrtc->mutex, "source is NULL");
- RET_VAL_WITH_UNLOCK_IF(source->type != WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET, WEBRTC_ERROR_INVALID_PARAMETER, &_webrtc->mutex,
+ RET_VAL_IF((source = _get_slot_by_id(_webrtc->gst.source_slots, source_id)) == NULL,
+ WEBRTC_ERROR_INVALID_PARAMETER, "source is NULL");
+ RET_VAL_IF(source->type != WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET, WEBRTC_ERROR_INVALID_PARAMETER,
"source is not media packet type");
- RET_VAL_WITH_UNLOCK_IF(source->media_format == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex,
+ RET_VAL_IF(source->media_format == NULL, WEBRTC_ERROR_INVALID_OPERATION,
"the media format should be set");
- RET_VAL_WITH_UNLOCK_IF(source->buffer_state_changed_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex,
+ RET_VAL_IF(source->buffer_state_changed_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION,
"the buffer state changed callback should be set");
ret = _push_media_packet(webrtc, source_id, packet);
- g_mutex_unlock(&_webrtc->mutex);
-
return ret;
}
int webrtc_file_source_set_path(webrtc_h webrtc, unsigned int source_id, const char *path)
{
int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(source_id == 0, WEBRTC_ERROR_INVALID_PARAMETER, "source_id is 0");
RET_VAL_IF(path == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "path is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
ret = _set_media_path(_webrtc, source_id, path);
- g_mutex_unlock(&_webrtc->mutex);
-
return ret;
}
int webrtc_set_sound_stream_info(webrtc_h webrtc, unsigned int track_id, sound_stream_info_h stream_info)
{
int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(track_id == 0, WEBRTC_ERROR_INVALID_PARAMETER, "track id is 0");
RET_VAL_IF(stream_info == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "stream_info is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->track_added_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "track added callback was not set");
- RET_VAL_WITH_UNLOCK_IF(_webrtc->encoded_audio_frame_cb.callback, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "encoded audio frame callback was set");
- RET_VAL_WITH_UNLOCK_IF(!_is_owner_of_track_build_context(_webrtc, track_id), WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex,
- "this function should be called within the track added callback");
+ RET_VAL_IF(_webrtc->track_added_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "track added callback was not set");
+ RET_VAL_IF(_webrtc->encoded_audio_frame_cb.callback, WEBRTC_ERROR_INVALID_OPERATION, "encoded audio frame callback was set");
+ RET_VAL_IF(!_is_owner_of_track_build_context(_webrtc, track_id), WEBRTC_ERROR_INVALID_OPERATION,
+ "this function should be called within the track added callback");
ret = _set_stream_info_to_sink(webrtc, track_id, stream_info);
- g_mutex_unlock(&_webrtc->mutex);
-
return ret;
}
int webrtc_set_display(webrtc_h webrtc, unsigned int track_id, webrtc_display_type_e type, webrtc_display_h display)
{
int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(type > WEBRTC_DISPLAY_TYPE_EVAS, WEBRTC_ERROR_INVALID_PARAMETER, "invalid display type(%d)", type);
RET_VAL_IF(display == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "display is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->track_added_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "track added callback was not set");
- RET_VAL_WITH_UNLOCK_IF(_webrtc->encoded_video_frame_cb.callback, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "encoded video frame callback was set");
- RET_VAL_WITH_UNLOCK_IF(!_is_owner_of_track_build_context(_webrtc, track_id), WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex,
- "this function should be called within the track added callback");
+ RET_VAL_IF(_webrtc->track_added_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "track added callback was not set");
+ RET_VAL_IF(_webrtc->encoded_video_frame_cb.callback, WEBRTC_ERROR_INVALID_OPERATION, "encoded video frame callback was set");
+ RET_VAL_IF(!_is_owner_of_track_build_context(_webrtc, track_id), WEBRTC_ERROR_INVALID_OPERATION,
+ "this function should be called within the track added callback");
ret = _set_display_to_sink(webrtc, track_id, (unsigned int)type, (void *)display);
- g_mutex_unlock(&_webrtc->mutex);
-
return ret;
}
int webrtc_set_encoded_audio_frame_cb(webrtc_h webrtc, webrtc_encoded_frame_cb callback, void *user_data)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(callback == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "callback is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state == WEBRTC_STATE_PLAYING, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should NOT be PLAYING");
+ RET_VAL_IF(_webrtc->state == WEBRTC_STATE_PLAYING, WEBRTC_ERROR_INVALID_STATE, "the state should NOT be PLAYING");
LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->encoded_audio_frame_cb);
LOG_INFO("callback[%p] user_data[%p]", callback, user_data);
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_unset_encoded_audio_frame_cb(webrtc_h webrtc)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->encoded_audio_frame_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "callback was not set");
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state == WEBRTC_STATE_PLAYING, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should NOT be PLAYING");
+ RET_VAL_IF(_webrtc->encoded_audio_frame_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
+ RET_VAL_IF(_webrtc->state == WEBRTC_STATE_PLAYING, WEBRTC_ERROR_INVALID_STATE, "the state should NOT be PLAYING");
LOG_INFO("callback[%p] user_data[%p] is reset to NULL",
_webrtc->encoded_audio_frame_cb.callback, _webrtc->encoded_audio_frame_cb.user_data);
_webrtc->encoded_audio_frame_cb.callback = NULL;
_webrtc->encoded_audio_frame_cb.user_data = NULL;
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_set_encoded_video_frame_cb(webrtc_h webrtc, webrtc_encoded_frame_cb callback, void *user_data)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(callback == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "callback is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state == WEBRTC_STATE_PLAYING, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should NOT be PLAYING");
+ RET_VAL_IF(_webrtc->state == WEBRTC_STATE_PLAYING, WEBRTC_ERROR_INVALID_STATE, "the state should NOT be PLAYING");
LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->encoded_video_frame_cb);
LOG_INFO("callback[%p] user_data[%p]", callback, user_data);
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_unset_encoded_video_frame_cb(webrtc_h webrtc)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->encoded_video_frame_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "callback was not set");
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state == WEBRTC_STATE_PLAYING, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should NOT be PLAYING");
+ RET_VAL_IF(_webrtc->encoded_video_frame_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
+ RET_VAL_IF(_webrtc->state == WEBRTC_STATE_PLAYING, WEBRTC_ERROR_INVALID_STATE, "the state should NOT be PLAYING");
LOG_INFO("callback[%p] user_data[%p] is reset to NULL",
_webrtc->encoded_video_frame_cb.callback, _webrtc->encoded_video_frame_cb.user_data);
_webrtc->encoded_video_frame_cb.callback = NULL;
_webrtc->encoded_video_frame_cb.user_data = NULL;
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_set_stun_server(webrtc_h webrtc, const char *stun_server)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(stun_server == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "stun_server is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
g_free(_webrtc->stun_server_url);
LOG_INFO("stun_server[%s]", stun_server);
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_add_turn_server(webrtc_h webrtc, const char *turn_server)
{
gboolean ret = FALSE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(turn_server == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "turn_server is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
g_signal_emit_by_name(G_OBJECT(_webrtc->gst.webrtcbin), "add-turn-server", turn_server, &ret);
- RET_VAL_WITH_UNLOCK_IF(!ret, WEBRTC_ERROR_INVALID_PARAMETER, &_webrtc->mutex, "invalid turn server url (%s)", turn_server);
+ RET_VAL_IF(!ret, WEBRTC_ERROR_INVALID_PARAMETER, "invalid turn server url (%s)", turn_server);
_webrtc->turn_server_urls = g_list_append(_webrtc->turn_server_urls, g_strdup(turn_server));
LOG_INFO("turn_server[%s]", turn_server);
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_set_ice_transport_policy(webrtc_h webrtc, webrtc_ice_transport_policy_e policy)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(policy > WEBRTC_ICE_TRANSPORT_POLICY_RELAY, WEBRTC_ERROR_INVALID_PARAMETER, "invalid policy(%d)", policy);
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
g_object_set(G_OBJECT(_webrtc->gst.webrtcbin), "ice-transport-policy", (GstWebRTCICETransportPolicy)policy, NULL);
LOG_INFO("policy[%s]", (policy == WEBRTC_ICE_TRANSPORT_POLICY_ALL) ? "all" : "relay");
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_set_peer_connection_state_change_cb(webrtc_h webrtc, webrtc_peer_connection_state_change_cb callback, void *user_data)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(callback == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "callback is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->peer_connection_state_change_cb);
LOG_INFO("callback[%p] user_data[%p]", callback, user_data);
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_unset_peer_connection_state_change_cb(webrtc_h webrtc)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
- RET_VAL_WITH_UNLOCK_IF(_webrtc->peer_connection_state_change_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "callback was not set");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->peer_connection_state_change_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
LOG_INFO("callback[%p] user_data[%p] is reset to NULL",
_webrtc->peer_connection_state_change_cb.callback, _webrtc->peer_connection_state_change_cb.user_data);
_webrtc->peer_connection_state_change_cb.callback = NULL;
_webrtc->peer_connection_state_change_cb.user_data = NULL;
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_set_signaling_state_change_cb(webrtc_h webrtc, webrtc_signaling_state_change_cb callback, void *user_data)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(callback == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "callback is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->signaling_state_change_cb);
LOG_INFO("callback[%p] user_data[%p]", callback, user_data);
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_unset_signaling_state_change_cb(webrtc_h webrtc)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
- RET_VAL_WITH_UNLOCK_IF(_webrtc->signaling_state_change_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "callback was not set");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->signaling_state_change_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
LOG_INFO("callback[%p] user_data[%p] is reset to NULL",
_webrtc->signaling_state_change_cb.callback, _webrtc->signaling_state_change_cb.user_data);
_webrtc->signaling_state_change_cb.callback = NULL;
_webrtc->signaling_state_change_cb.user_data = NULL;
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_set_ice_gathering_state_change_cb(webrtc_h webrtc, webrtc_ice_gathering_state_change_cb callback, void *user_data)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(callback == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "callback is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->ice_gathering_state_change_cb);
LOG_INFO("callback[%p] user_data[%p]", callback, user_data);
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_unset_ice_gathering_state_change_cb(webrtc_h webrtc)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
- RET_VAL_WITH_UNLOCK_IF(_webrtc->ice_gathering_state_change_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "callback was not set");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->ice_gathering_state_change_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
LOG_INFO("callback[%p] user_data[%p] is reset to NULL",
_webrtc->ice_gathering_state_change_cb.callback, _webrtc->ice_gathering_state_change_cb.user_data);
_webrtc->ice_gathering_state_change_cb.callback = NULL;
_webrtc->ice_gathering_state_change_cb.user_data = NULL;
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_set_ice_connection_state_change_cb(webrtc_h webrtc, webrtc_ice_connection_state_change_cb callback, void *user_data)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(callback == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "callback is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->ice_connection_state_change_cb);
LOG_INFO("callback[%p] user_data[%p]", callback, user_data);
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_unset_ice_connection_state_change_cb(webrtc_h webrtc)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
- RET_VAL_WITH_UNLOCK_IF(_webrtc->ice_connection_state_change_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "callback was not set");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->ice_connection_state_change_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
LOG_INFO("callback[%p] user_data[%p] is reset to NULL",
_webrtc->ice_connection_state_change_cb.callback, _webrtc->ice_connection_state_change_cb.user_data);
_webrtc->ice_connection_state_change_cb.callback = NULL;
_webrtc->ice_connection_state_change_cb.user_data = NULL;
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_set_negotiation_needed_cb(webrtc_h webrtc, webrtc_negotiation_needed_cb callback, void *user_data)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(callback == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "callback is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->negotiation_needed_cb);
LOG_INFO("callback[%p] user_data[%p]", callback, user_data);
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_unset_negotiation_needed_cb(webrtc_h webrtc)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
- RET_VAL_WITH_UNLOCK_IF(_webrtc->negotiation_needed_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "callback was not set");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->negotiation_needed_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
LOG_INFO("callback[%p] user_data[%p] is reset to NULL",
_webrtc->negotiation_needed_cb.callback, _webrtc->negotiation_needed_cb.user_data);
_webrtc->negotiation_needed_cb.callback = NULL;
_webrtc->negotiation_needed_cb.user_data = NULL;
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_set_ice_candidate_cb(webrtc_h webrtc, webrtc_ice_candidate_cb callback, void *user_data)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(callback == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "callback is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->ice_candidate_cb);
LOG_INFO("callback[%p] user_data[%p]", callback, user_data);
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_unset_ice_candidate_cb(webrtc_h webrtc)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
- RET_VAL_WITH_UNLOCK_IF(_webrtc->ice_candidate_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "callback was not set");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->ice_candidate_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
LOG_INFO("callback[%p] user_data[%p] is reset to NULL",
_webrtc->ice_candidate_cb.callback, _webrtc->ice_candidate_cb.user_data);
_webrtc->ice_candidate_cb.callback = NULL;
_webrtc->ice_candidate_cb.user_data = NULL;
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_set_track_added_cb(webrtc_h webrtc, webrtc_track_added_cb callback, void *user_data)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(callback == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "callback is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state == WEBRTC_STATE_PLAYING, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should NOT be PLAYING");
+ RET_VAL_IF(_webrtc->state == WEBRTC_STATE_PLAYING, WEBRTC_ERROR_INVALID_STATE, "the state should NOT be PLAYING");
LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->track_added_cb);
LOG_INFO("callback[%p] user_data[%p]", callback, user_data);
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_unset_track_added_cb(webrtc_h webrtc)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->track_added_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "callback was not set");
+ RET_VAL_IF(_webrtc->track_added_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
LOG_INFO("callback[%p] user_data[%p] is reset to NULL",
_webrtc->track_added_cb.callback, _webrtc->track_added_cb.user_data);
_webrtc->track_added_cb.callback = NULL;
_webrtc->track_added_cb.user_data = NULL;
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_create_offer(webrtc_h webrtc, bundle *options, char **offer)
{
- int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(offer == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "offer is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_NEGOTIATING, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be NEGOTIATING");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_NEGOTIATING, WEBRTC_ERROR_INVALID_STATE, "the state should be NEGOTIATING");
LOG_INFO("offer[%p]", offer);
- ret = _webrtcbin_create_session_description(webrtc, true, offer);
-
- g_mutex_unlock(&_webrtc->mutex);
-
- return ret;
+ return _webrtcbin_create_session_description(webrtc, true, offer);
}
int webrtc_create_answer(webrtc_h webrtc, bundle *options, char **answer)
{
- int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(answer == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "answer is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_NEGOTIATING, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be NEGOTIATING");
- RET_VAL_WITH_UNLOCK_IF(!_webrtcbin_have_remote_offer(_webrtc), WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "remote offer should be set");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_NEGOTIATING, WEBRTC_ERROR_INVALID_STATE, "the state should be NEGOTIATING");
+ RET_VAL_IF(!_webrtcbin_have_remote_offer(_webrtc), WEBRTC_ERROR_INVALID_STATE, "remote offer should be set");
LOG_INFO("answer[%p]", answer);
- ret = _webrtcbin_create_session_description(webrtc, false, answer);
-
- g_mutex_unlock(&_webrtc->mutex);
-
- return ret;
+ return _webrtcbin_create_session_description(webrtc, false, answer);
}
int webrtc_set_local_description(webrtc_h webrtc, const char *description)
{
- int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(description == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "description is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_NEGOTIATING, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be NEGOTIATING");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_NEGOTIATING, WEBRTC_ERROR_INVALID_STATE, "the state should be NEGOTIATING");
LOG_INFO("description: %s", description);
- ret = _webrtcbin_set_session_description(webrtc, description, false);
-
- g_mutex_unlock(&_webrtc->mutex);
-
- return ret;
+ return _webrtcbin_set_session_description(webrtc, description, false);
}
int webrtc_set_remote_description(webrtc_h webrtc, const char *description)
{
- int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(description == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "description is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_NEGOTIATING, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be NEGOTIATING");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_NEGOTIATING, WEBRTC_ERROR_INVALID_STATE, "the state should be NEGOTIATING");
LOG_INFO("description: %s", description);
- ret = _webrtcbin_set_session_description(webrtc, description, true);
-
- g_mutex_unlock(&_webrtc->mutex);
-
- return ret;
+ return _webrtcbin_set_session_description(webrtc, description, true);
}
int webrtc_add_ice_candidate(webrtc_h webrtc, const char *candidate)
{
- int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(candidate == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "candidate is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_NEGOTIATING, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be NEGOTIATING");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_NEGOTIATING, WEBRTC_ERROR_INVALID_STATE, "the state should be NEGOTIATING");
LOG_INFO("candidate: %s", candidate);
- ret = _webrtcbin_add_ice_candidate(webrtc, candidate);
-
- g_mutex_unlock(&_webrtc->mutex);
-
- return ret;
+ return _webrtcbin_add_ice_candidate(webrtc, candidate);
}
int webrtc_create_data_channel(webrtc_h webrtc, const char *label, bundle *options, webrtc_data_channel_h *channel)
{
- int ret = WEBRTC_ERROR_NONE;
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(label == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "label is NULL");
RET_VAL_IF(channel == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "channel is NULL");
- g_mutex_lock(&_webrtc->mutex);
-
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
-
- ret = _create_data_channel(webrtc, label, options, (webrtc_data_channel_s **)channel);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- g_mutex_unlock(&_webrtc->mutex);
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
- return ret;
+ return _create_data_channel(webrtc, label, options, (webrtc_data_channel_s **)channel);
}
int webrtc_destroy_data_channel(webrtc_data_channel_h channel)
int webrtc_set_data_channel_cb(webrtc_h webrtc, webrtc_data_channel_cb callback, void *user_data)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(callback == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "callback is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
LOG_WARNING_IF_CALLBACK_EXISTS(_webrtc->data_channel_cb);
LOG_INFO("callback[%p] user_data[%p]", callback, user_data);
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_unset_data_channel_cb(webrtc_h webrtc)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_s *_webrtc = (webrtc_s*)webrtc;
RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
- g_mutex_lock(&_webrtc->mutex);
+ locker = g_mutex_locker_new(&_webrtc->mutex);
- RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE");
- RET_VAL_WITH_UNLOCK_IF(_webrtc->data_channel_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "callback was not set");
+ RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE");
+ RET_VAL_IF(_webrtc->data_channel_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
LOG_INFO("callback[%p] user_data[%p] is reset to NULL",
_webrtc->data_channel_cb.callback, _webrtc->data_channel_cb.user_data);
_webrtc->data_channel_cb.callback = NULL;
_webrtc->data_channel_cb.user_data = NULL;
- g_mutex_unlock(&_webrtc->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_data_channel_unset_open_cb(webrtc_data_channel_h channel)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_data_channel_s *_channel = (webrtc_data_channel_s*)channel;
RET_VAL_IF(_channel == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "channel is NULL");
- g_mutex_lock(&_channel->mutex);
+ locker = g_mutex_locker_new(&_channel->mutex);
- RET_VAL_WITH_UNLOCK_IF(_channel->open_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_channel->mutex, "callback was not set");
+ RET_VAL_IF(_channel->open_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
LOG_INFO("channel[%p] callback[%p] user_data[%p] is reset to NULL",
_channel, _channel->open_cb.callback, _channel->open_cb.user_data);
_channel->open_cb.callback = NULL;
_channel->open_cb.user_data = NULL;
- g_mutex_unlock(&_channel->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_data_channel_unset_message_cb(webrtc_data_channel_h channel)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_data_channel_s *_channel = (webrtc_data_channel_s*)channel;
RET_VAL_IF(_channel == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "channel is NULL");
- g_mutex_lock(&_channel->mutex);
+ locker = g_mutex_locker_new(&_channel->mutex);
- RET_VAL_WITH_UNLOCK_IF(_channel->message_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_channel->mutex, "callback was not set");
+ RET_VAL_IF(_channel->message_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
LOG_INFO("channel[%p] callback[%p] user_data[%p] is reset to NULL",
_channel, _channel->message_cb.callback, _channel->message_cb.user_data);
_channel->message_cb.callback = NULL;
_channel->message_cb.user_data = NULL;
- g_mutex_unlock(&_channel->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_data_channel_unset_error_cb(webrtc_data_channel_h channel)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_data_channel_s *_channel = (webrtc_data_channel_s*)channel;
RET_VAL_IF(_channel == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "channel is NULL");
- g_mutex_lock(&_channel->mutex);
+ locker = g_mutex_locker_new(&_channel->mutex);
- RET_VAL_WITH_UNLOCK_IF(_channel->error_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_channel->mutex, "callback was not set");
+ RET_VAL_IF(_channel->error_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
LOG_INFO("channel[%p] callback[%p] user_data[%p] is reset to NULL",
_channel, _channel->error_cb.callback, _channel->error_cb.user_data);
_channel->error_cb.callback = NULL;
_channel->error_cb.user_data = NULL;
- g_mutex_unlock(&_channel->mutex);
-
return WEBRTC_ERROR_NONE;
}
int webrtc_data_channel_unset_close_cb(webrtc_data_channel_h channel)
{
+ g_autoptr(GMutexLocker) locker = NULL;
webrtc_data_channel_s *_channel = (webrtc_data_channel_s*)channel;
RET_VAL_IF(_channel == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "channel is NULL");
- g_mutex_lock(&_channel->mutex);
+ locker = g_mutex_locker_new(&_channel->mutex);
- RET_VAL_WITH_UNLOCK_IF(_channel->close_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_channel->mutex, "callback was not set");
+ RET_VAL_IF(_channel->close_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set");
LOG_INFO("channel[%p] callback[%p] user_data[%p] is reset to NULL",
_channel, _channel->close_cb.callback, _channel->close_cb.user_data);
_channel->close_cb.callback = NULL;
_channel->close_cb.user_data = NULL;
- g_mutex_unlock(&_channel->mutex);
-
return WEBRTC_ERROR_NONE;
}