From: Sangchul Lee Date: Fri, 25 Jun 2021 10:48:05 +0000 (+0900) Subject: Change precondition of webrtc_media_packet_source_push_packet() X-Git-Tag: submit/tizen/20210729.023123~33 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=403599675a43cb3b9f1b6cea9ce2abf558a2451b;p=platform%2Fcore%2Fapi%2Fwebrtc.git Change precondition of webrtc_media_packet_source_push_packet() New preconditions are added before calling this function. 1. webrtc_media_packet_source_set_format() must be called. 2. webrtc_media_packet_source_buffer_state_changed_cb() must be set. The previous state limitation is removed. [Version] 0.2.27 [Issue Type] API Change-Id: I63f69dad4341c3d3aeb19b68c0650c0be2672796 Signed-off-by: Sangchul Lee --- diff --git a/include/webrtc.h b/include/webrtc.h index 43909be0..7bb769e3 100644 --- a/include/webrtc.h +++ b/include/webrtc.h @@ -913,9 +913,9 @@ int webrtc_media_packet_source_set_format(webrtc_h webrtc, unsigned int source_i * @retval #WEBRTC_ERROR_NONE Successful * @retval #WEBRTC_ERROR_INVALID_PARAMETER Invalid parameter * @retval #WEBRTC_ERROR_INVALID_OPERATION Invalid operation - * @retval #WEBRTC_ERROR_INVALID_STATE Invalid state * @pre Add media packet source to @a webrtc to get @a source_id by calling webrtc_add_media_source(). - * @pre @a webrtc state must be set to #WEBRTC_STATE_NEGOTIATING or #WEBRTC_STATE_PLAYING. + * @pre webrtc_media_packet_source_set_format() must be called before calling this function. + * @pre webrtc_media_packet_source_buffer_state_changed_cb() must be set by calling webrtc_media_packet_source_set_buffer_state_changed_cb(). * @see webrtc_media_packet_source_set_format() * @see webrtc_media_packet_source_set_buffer_state_changed_cb() */ diff --git a/packaging/capi-media-webrtc.spec b/packaging/capi-media-webrtc.spec index 55d82ca3..553858e6 100644 --- a/packaging/capi-media-webrtc.spec +++ b/packaging/capi-media-webrtc.spec @@ -1,6 +1,6 @@ Name: capi-media-webrtc Summary: A WebRTC library in Tizen Native API -Version: 0.2.26 +Version: 0.2.27 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/webrtc.c b/src/webrtc.c index 4d62247c..62d7110b 100644 --- a/src/webrtc.c +++ b/src/webrtc.c @@ -554,13 +554,21 @@ int webrtc_media_packet_source_push_packet(webrtc_h webrtc, unsigned int source_ { int ret = WEBRTC_ERROR_NONE; 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); - RET_VAL_WITH_UNLOCK_IF(_webrtc->state == WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should NOT be IDLE"); + 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, + "source is not media packet type"); + RET_VAL_WITH_UNLOCK_IF(source->media_format == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, + "the media format should be set"); + RET_VAL_WITH_UNLOCK_IF(source->buffer_state_changed_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, + "the buffer state changed callback should be set"); ret = _push_media_packet(webrtc, source_id, packet);