[UTC][capi-media-webrtc][ACR-1637] Add new API set for native WebRTC #2 55/262955/7
authorSangchul Lee <sc11.lee@samsung.com>
Mon, 23 Aug 2021 12:19:24 +0000 (21:19 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Fri, 17 Sep 2021 04:00:14 +0000 (04:00 +0000)
Change-Id: I29655030ed4ba494bd5e81387a2f6f55f65a128e
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
src/utc/webrtc/public.list
src/utc/webrtc/tct-webrtc-core_mobile.h
src/utc/webrtc/tct-webrtc-core_tizeniot.h
src/utc/webrtc/tct-webrtc-core_tv.h
src/utc/webrtc/tct-webrtc-core_wearable.h
src/utc/webrtc/utc-media-webrtc-callback.c
src/utc/webrtc/utc-media-webrtc.c

index 90736ddd6709867a456d7c1a25e2536f39ec733d..28ef678bb8af276da21b396c6bdbcf184ff8556e 100644 (file)
@@ -5,6 +5,15 @@ webrtc_stop
 webrtc_get_state
 webrtc_add_media_source
 webrtc_remove_media_source
+webrtc_set_stun_server
+webrtc_get_stun_server
+webrtc_add_turn_server
+webrtc_foreach_turn_server
+webrtc_create_offer
+webrtc_create_answer
+webrtc_set_local_description
+webrtc_set_remote_description
+webrtc_add_ice_candidate
 webrtc_get_peer_connection_state
 webrtc_get_signaling_state
 webrtc_get_ice_gathering_state
@@ -24,4 +33,8 @@ webrtc_unset_signaling_state_change_cb
 webrtc_set_ice_gathering_state_change_cb
 webrtc_unset_ice_gathering_state_change_cb
 webrtc_set_ice_connection_state_change_cb
-webrtc_unset_ice_connection_state_change_cb
\ No newline at end of file
+webrtc_unset_ice_connection_state_change_cb
+webrtc_set_encoded_audio_frame_cb
+webrtc_unset_encoded_audio_frame_cb
+webrtc_set_encoded_video_frame_cb
+webrtc_unset_encoded_video_frame_cb
\ No newline at end of file
index 7353e7a9ca3311a61b0a5d2f21e7627a42e2bfc0..ffb964e027a666c9c26ea6f159c88be73da8ec1e 100644 (file)
@@ -40,6 +40,30 @@ extern int utc_media_webrtc_add_media_source_n2(void);
 extern int utc_media_webrtc_remove_media_source_p(void);
 extern int utc_media_webrtc_remove_media_source_n1(void);
 extern int utc_media_webrtc_remove_media_source_n2(void);
+extern int utc_media_webrtc_set_stun_server_p(void);
+extern int utc_media_webrtc_set_stun_server_n1(void);
+extern int utc_media_webrtc_set_stun_server_n2(void);
+extern int utc_media_webrtc_get_stun_server_p(void);
+extern int utc_media_webrtc_get_stun_server_n(void);
+extern int utc_media_webrtc_add_turn_server_p(void);
+extern int utc_media_webrtc_add_turn_server_n1(void);
+extern int utc_media_webrtc_add_turn_server_n2(void);
+extern int utc_media_webrtc_create_offer_p(void);
+extern int utc_media_webrtc_create_offer_n1(void);
+extern int utc_media_webrtc_create_offer_n2(void);
+extern int utc_media_webrtc_create_answer_p(void);
+extern int utc_media_webrtc_create_answer_n1(void);
+extern int utc_media_webrtc_create_answer_n2(void);
+extern int utc_media_webrtc_create_answer_n3(void);
+extern int utc_media_webrtc_set_local_description_p(void);
+extern int utc_media_webrtc_set_local_description_n(void);
+extern int utc_media_webrtc_set_remote_description_p(void);
+extern int utc_media_webrtc_set_remote_description_n(void);
+extern int utc_media_webrtc_add_ice_candidate_p(void);
+extern int utc_media_webrtc_add_ice_candidate_n1(void);
+extern int utc_media_webrtc_add_ice_candidate_n2(void);
+extern int utc_media_webrtc_foreach_turn_server_p(void);
+extern int utc_media_webrtc_foreach_turn_server_n(void);
 extern int utc_media_webrtc_get_peer_connection_state_p(void);
 extern int utc_media_webrtc_get_peer_connection_state_n(void);
 extern int utc_media_webrtc_get_signaling_state_p(void);
@@ -80,6 +104,14 @@ extern int utc_media_webrtc_set_ice_connection_state_change_cb_p(void);
 extern int utc_media_webrtc_set_ice_connection_state_change_cb_n(void);
 extern int utc_media_webrtc_unset_ice_connection_state_change_cb_p(void);
 extern int utc_media_webrtc_unset_ice_connection_state_change_cb_n(void);
+extern int utc_media_webrtc_set_encoded_audio_frame_cb_p(void);
+extern int utc_media_webrtc_set_encoded_audio_frame_cb_n(void);
+extern int utc_media_webrtc_unset_encoded_audio_frame_cb_p(void);
+extern int utc_media_webrtc_unset_encoded_audio_frame_cb_n(void);
+extern int utc_media_webrtc_set_encoded_video_frame_cb_p(void);
+extern int utc_media_webrtc_set_encoded_video_frame_cb_n(void);
+extern int utc_media_webrtc_unset_encoded_video_frame_cb_p(void);
+extern int utc_media_webrtc_unset_encoded_video_frame_cb_n(void);
 
 testcase tc_array[] = {
        {"utc_media_webrtc_create_p",utc_media_webrtc_create_p,NULL,NULL},
@@ -101,6 +133,30 @@ testcase tc_array[] = {
        {"utc_media_webrtc_remove_media_source_p",utc_media_webrtc_remove_media_source_p,NULL,NULL},
        {"utc_media_webrtc_remove_media_source_n1",utc_media_webrtc_remove_media_source_n1,NULL,NULL},
        {"utc_media_webrtc_remove_media_source_n2",utc_media_webrtc_remove_media_source_n2,NULL,NULL},
+       {"utc_media_webrtc_set_stun_server_p",utc_media_webrtc_set_stun_server_p,NULL,NULL},
+       {"utc_media_webrtc_set_stun_server_n1",utc_media_webrtc_set_stun_server_n1,NULL,NULL},
+       {"utc_media_webrtc_set_stun_server_n2",utc_media_webrtc_set_stun_server_n2,NULL,NULL},
+       {"utc_media_webrtc_get_stun_server_p",utc_media_webrtc_get_stun_server_p,NULL,NULL},
+       {"utc_media_webrtc_get_stun_server_n",utc_media_webrtc_get_stun_server_n,NULL,NULL},
+       {"utc_media_webrtc_add_turn_server_p",utc_media_webrtc_add_turn_server_p,NULL,NULL},
+       {"utc_media_webrtc_add_turn_server_n1",utc_media_webrtc_add_turn_server_n1,NULL,NULL},
+       {"utc_media_webrtc_add_turn_server_n2",utc_media_webrtc_add_turn_server_n2,NULL,NULL},
+       {"utc_media_webrtc_foreach_turn_server_p",utc_media_webrtc_foreach_turn_server_p,NULL,NULL},
+       {"utc_media_webrtc_foreach_turn_server_n",utc_media_webrtc_foreach_turn_server_n,NULL,NULL},
+       {"utc_media_webrtc_create_offer_p",utc_media_webrtc_create_offer_p,NULL,NULL},
+       {"utc_media_webrtc_create_offer_n1",utc_media_webrtc_create_offer_n1,NULL,NULL},
+       {"utc_media_webrtc_create_offer_n2",utc_media_webrtc_create_offer_n2,NULL,NULL},
+       {"utc_media_webrtc_create_answer_p",utc_media_webrtc_create_answer_p,NULL,NULL},
+       {"utc_media_webrtc_create_answer_n1",utc_media_webrtc_create_answer_n1,NULL,NULL},
+       {"utc_media_webrtc_create_answer_n2",utc_media_webrtc_create_answer_n2,NULL,NULL},
+       {"utc_media_webrtc_create_answer_n3",utc_media_webrtc_create_answer_n3,NULL,NULL},
+       {"utc_media_webrtc_set_local_description_p",utc_media_webrtc_set_local_description_p,NULL,NULL},
+       {"utc_media_webrtc_set_local_description_n",utc_media_webrtc_set_local_description_n,NULL,NULL},
+       {"utc_media_webrtc_set_remote_description_p",utc_media_webrtc_set_remote_description_p,NULL,NULL},
+       {"utc_media_webrtc_set_remote_description_n",utc_media_webrtc_set_remote_description_n,NULL,NULL},
+       {"utc_media_webrtc_add_ice_candidate_p",utc_media_webrtc_add_ice_candidate_p,NULL,NULL},
+       {"utc_media_webrtc_add_ice_candidate_n1",utc_media_webrtc_add_ice_candidate_n1,NULL,NULL},
+       {"utc_media_webrtc_add_ice_candidate_n2",utc_media_webrtc_add_ice_candidate_n2,NULL,NULL},
        {"utc_media_webrtc_get_peer_connection_state_p",utc_media_webrtc_get_peer_connection_state_p,NULL,NULL},
        {"utc_media_webrtc_get_peer_connection_state_n",utc_media_webrtc_get_peer_connection_state_n,NULL,NULL},
        {"utc_media_webrtc_get_signaling_state_p",utc_media_webrtc_get_signaling_state_p,NULL,NULL},
@@ -141,6 +197,14 @@ testcase tc_array[] = {
        {"utc_media_webrtc_set_ice_connection_state_change_cb_n",utc_media_webrtc_set_ice_connection_state_change_cb_n,NULL,NULL},
        {"utc_media_webrtc_unset_ice_connection_state_change_cb_p",utc_media_webrtc_unset_ice_connection_state_change_cb_p,NULL,NULL},
        {"utc_media_webrtc_unset_ice_connection_state_change_cb_n",utc_media_webrtc_unset_ice_connection_state_change_cb_n,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_audio_frame_cb_p",utc_media_webrtc_set_encoded_audio_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_audio_frame_cb_n",utc_media_webrtc_set_encoded_audio_frame_cb_n,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_audio_frame_cb_p",utc_media_webrtc_unset_encoded_audio_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_audio_frame_cb_n",utc_media_webrtc_unset_encoded_audio_frame_cb_n,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_video_frame_cb_p",utc_media_webrtc_set_encoded_video_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_video_frame_cb_n",utc_media_webrtc_set_encoded_video_frame_cb_n,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_video_frame_cb_p",utc_media_webrtc_unset_encoded_video_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_video_frame_cb_n",utc_media_webrtc_unset_encoded_video_frame_cb_n,NULL,NULL},
        {NULL, NULL}
 };
 
index 7353e7a9ca3311a61b0a5d2f21e7627a42e2bfc0..ffb964e027a666c9c26ea6f159c88be73da8ec1e 100644 (file)
@@ -40,6 +40,30 @@ extern int utc_media_webrtc_add_media_source_n2(void);
 extern int utc_media_webrtc_remove_media_source_p(void);
 extern int utc_media_webrtc_remove_media_source_n1(void);
 extern int utc_media_webrtc_remove_media_source_n2(void);
+extern int utc_media_webrtc_set_stun_server_p(void);
+extern int utc_media_webrtc_set_stun_server_n1(void);
+extern int utc_media_webrtc_set_stun_server_n2(void);
+extern int utc_media_webrtc_get_stun_server_p(void);
+extern int utc_media_webrtc_get_stun_server_n(void);
+extern int utc_media_webrtc_add_turn_server_p(void);
+extern int utc_media_webrtc_add_turn_server_n1(void);
+extern int utc_media_webrtc_add_turn_server_n2(void);
+extern int utc_media_webrtc_create_offer_p(void);
+extern int utc_media_webrtc_create_offer_n1(void);
+extern int utc_media_webrtc_create_offer_n2(void);
+extern int utc_media_webrtc_create_answer_p(void);
+extern int utc_media_webrtc_create_answer_n1(void);
+extern int utc_media_webrtc_create_answer_n2(void);
+extern int utc_media_webrtc_create_answer_n3(void);
+extern int utc_media_webrtc_set_local_description_p(void);
+extern int utc_media_webrtc_set_local_description_n(void);
+extern int utc_media_webrtc_set_remote_description_p(void);
+extern int utc_media_webrtc_set_remote_description_n(void);
+extern int utc_media_webrtc_add_ice_candidate_p(void);
+extern int utc_media_webrtc_add_ice_candidate_n1(void);
+extern int utc_media_webrtc_add_ice_candidate_n2(void);
+extern int utc_media_webrtc_foreach_turn_server_p(void);
+extern int utc_media_webrtc_foreach_turn_server_n(void);
 extern int utc_media_webrtc_get_peer_connection_state_p(void);
 extern int utc_media_webrtc_get_peer_connection_state_n(void);
 extern int utc_media_webrtc_get_signaling_state_p(void);
@@ -80,6 +104,14 @@ extern int utc_media_webrtc_set_ice_connection_state_change_cb_p(void);
 extern int utc_media_webrtc_set_ice_connection_state_change_cb_n(void);
 extern int utc_media_webrtc_unset_ice_connection_state_change_cb_p(void);
 extern int utc_media_webrtc_unset_ice_connection_state_change_cb_n(void);
+extern int utc_media_webrtc_set_encoded_audio_frame_cb_p(void);
+extern int utc_media_webrtc_set_encoded_audio_frame_cb_n(void);
+extern int utc_media_webrtc_unset_encoded_audio_frame_cb_p(void);
+extern int utc_media_webrtc_unset_encoded_audio_frame_cb_n(void);
+extern int utc_media_webrtc_set_encoded_video_frame_cb_p(void);
+extern int utc_media_webrtc_set_encoded_video_frame_cb_n(void);
+extern int utc_media_webrtc_unset_encoded_video_frame_cb_p(void);
+extern int utc_media_webrtc_unset_encoded_video_frame_cb_n(void);
 
 testcase tc_array[] = {
        {"utc_media_webrtc_create_p",utc_media_webrtc_create_p,NULL,NULL},
@@ -101,6 +133,30 @@ testcase tc_array[] = {
        {"utc_media_webrtc_remove_media_source_p",utc_media_webrtc_remove_media_source_p,NULL,NULL},
        {"utc_media_webrtc_remove_media_source_n1",utc_media_webrtc_remove_media_source_n1,NULL,NULL},
        {"utc_media_webrtc_remove_media_source_n2",utc_media_webrtc_remove_media_source_n2,NULL,NULL},
+       {"utc_media_webrtc_set_stun_server_p",utc_media_webrtc_set_stun_server_p,NULL,NULL},
+       {"utc_media_webrtc_set_stun_server_n1",utc_media_webrtc_set_stun_server_n1,NULL,NULL},
+       {"utc_media_webrtc_set_stun_server_n2",utc_media_webrtc_set_stun_server_n2,NULL,NULL},
+       {"utc_media_webrtc_get_stun_server_p",utc_media_webrtc_get_stun_server_p,NULL,NULL},
+       {"utc_media_webrtc_get_stun_server_n",utc_media_webrtc_get_stun_server_n,NULL,NULL},
+       {"utc_media_webrtc_add_turn_server_p",utc_media_webrtc_add_turn_server_p,NULL,NULL},
+       {"utc_media_webrtc_add_turn_server_n1",utc_media_webrtc_add_turn_server_n1,NULL,NULL},
+       {"utc_media_webrtc_add_turn_server_n2",utc_media_webrtc_add_turn_server_n2,NULL,NULL},
+       {"utc_media_webrtc_foreach_turn_server_p",utc_media_webrtc_foreach_turn_server_p,NULL,NULL},
+       {"utc_media_webrtc_foreach_turn_server_n",utc_media_webrtc_foreach_turn_server_n,NULL,NULL},
+       {"utc_media_webrtc_create_offer_p",utc_media_webrtc_create_offer_p,NULL,NULL},
+       {"utc_media_webrtc_create_offer_n1",utc_media_webrtc_create_offer_n1,NULL,NULL},
+       {"utc_media_webrtc_create_offer_n2",utc_media_webrtc_create_offer_n2,NULL,NULL},
+       {"utc_media_webrtc_create_answer_p",utc_media_webrtc_create_answer_p,NULL,NULL},
+       {"utc_media_webrtc_create_answer_n1",utc_media_webrtc_create_answer_n1,NULL,NULL},
+       {"utc_media_webrtc_create_answer_n2",utc_media_webrtc_create_answer_n2,NULL,NULL},
+       {"utc_media_webrtc_create_answer_n3",utc_media_webrtc_create_answer_n3,NULL,NULL},
+       {"utc_media_webrtc_set_local_description_p",utc_media_webrtc_set_local_description_p,NULL,NULL},
+       {"utc_media_webrtc_set_local_description_n",utc_media_webrtc_set_local_description_n,NULL,NULL},
+       {"utc_media_webrtc_set_remote_description_p",utc_media_webrtc_set_remote_description_p,NULL,NULL},
+       {"utc_media_webrtc_set_remote_description_n",utc_media_webrtc_set_remote_description_n,NULL,NULL},
+       {"utc_media_webrtc_add_ice_candidate_p",utc_media_webrtc_add_ice_candidate_p,NULL,NULL},
+       {"utc_media_webrtc_add_ice_candidate_n1",utc_media_webrtc_add_ice_candidate_n1,NULL,NULL},
+       {"utc_media_webrtc_add_ice_candidate_n2",utc_media_webrtc_add_ice_candidate_n2,NULL,NULL},
        {"utc_media_webrtc_get_peer_connection_state_p",utc_media_webrtc_get_peer_connection_state_p,NULL,NULL},
        {"utc_media_webrtc_get_peer_connection_state_n",utc_media_webrtc_get_peer_connection_state_n,NULL,NULL},
        {"utc_media_webrtc_get_signaling_state_p",utc_media_webrtc_get_signaling_state_p,NULL,NULL},
@@ -141,6 +197,14 @@ testcase tc_array[] = {
        {"utc_media_webrtc_set_ice_connection_state_change_cb_n",utc_media_webrtc_set_ice_connection_state_change_cb_n,NULL,NULL},
        {"utc_media_webrtc_unset_ice_connection_state_change_cb_p",utc_media_webrtc_unset_ice_connection_state_change_cb_p,NULL,NULL},
        {"utc_media_webrtc_unset_ice_connection_state_change_cb_n",utc_media_webrtc_unset_ice_connection_state_change_cb_n,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_audio_frame_cb_p",utc_media_webrtc_set_encoded_audio_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_audio_frame_cb_n",utc_media_webrtc_set_encoded_audio_frame_cb_n,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_audio_frame_cb_p",utc_media_webrtc_unset_encoded_audio_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_audio_frame_cb_n",utc_media_webrtc_unset_encoded_audio_frame_cb_n,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_video_frame_cb_p",utc_media_webrtc_set_encoded_video_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_video_frame_cb_n",utc_media_webrtc_set_encoded_video_frame_cb_n,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_video_frame_cb_p",utc_media_webrtc_unset_encoded_video_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_video_frame_cb_n",utc_media_webrtc_unset_encoded_video_frame_cb_n,NULL,NULL},
        {NULL, NULL}
 };
 
index 7353e7a9ca3311a61b0a5d2f21e7627a42e2bfc0..ffb964e027a666c9c26ea6f159c88be73da8ec1e 100644 (file)
@@ -40,6 +40,30 @@ extern int utc_media_webrtc_add_media_source_n2(void);
 extern int utc_media_webrtc_remove_media_source_p(void);
 extern int utc_media_webrtc_remove_media_source_n1(void);
 extern int utc_media_webrtc_remove_media_source_n2(void);
+extern int utc_media_webrtc_set_stun_server_p(void);
+extern int utc_media_webrtc_set_stun_server_n1(void);
+extern int utc_media_webrtc_set_stun_server_n2(void);
+extern int utc_media_webrtc_get_stun_server_p(void);
+extern int utc_media_webrtc_get_stun_server_n(void);
+extern int utc_media_webrtc_add_turn_server_p(void);
+extern int utc_media_webrtc_add_turn_server_n1(void);
+extern int utc_media_webrtc_add_turn_server_n2(void);
+extern int utc_media_webrtc_create_offer_p(void);
+extern int utc_media_webrtc_create_offer_n1(void);
+extern int utc_media_webrtc_create_offer_n2(void);
+extern int utc_media_webrtc_create_answer_p(void);
+extern int utc_media_webrtc_create_answer_n1(void);
+extern int utc_media_webrtc_create_answer_n2(void);
+extern int utc_media_webrtc_create_answer_n3(void);
+extern int utc_media_webrtc_set_local_description_p(void);
+extern int utc_media_webrtc_set_local_description_n(void);
+extern int utc_media_webrtc_set_remote_description_p(void);
+extern int utc_media_webrtc_set_remote_description_n(void);
+extern int utc_media_webrtc_add_ice_candidate_p(void);
+extern int utc_media_webrtc_add_ice_candidate_n1(void);
+extern int utc_media_webrtc_add_ice_candidate_n2(void);
+extern int utc_media_webrtc_foreach_turn_server_p(void);
+extern int utc_media_webrtc_foreach_turn_server_n(void);
 extern int utc_media_webrtc_get_peer_connection_state_p(void);
 extern int utc_media_webrtc_get_peer_connection_state_n(void);
 extern int utc_media_webrtc_get_signaling_state_p(void);
@@ -80,6 +104,14 @@ extern int utc_media_webrtc_set_ice_connection_state_change_cb_p(void);
 extern int utc_media_webrtc_set_ice_connection_state_change_cb_n(void);
 extern int utc_media_webrtc_unset_ice_connection_state_change_cb_p(void);
 extern int utc_media_webrtc_unset_ice_connection_state_change_cb_n(void);
+extern int utc_media_webrtc_set_encoded_audio_frame_cb_p(void);
+extern int utc_media_webrtc_set_encoded_audio_frame_cb_n(void);
+extern int utc_media_webrtc_unset_encoded_audio_frame_cb_p(void);
+extern int utc_media_webrtc_unset_encoded_audio_frame_cb_n(void);
+extern int utc_media_webrtc_set_encoded_video_frame_cb_p(void);
+extern int utc_media_webrtc_set_encoded_video_frame_cb_n(void);
+extern int utc_media_webrtc_unset_encoded_video_frame_cb_p(void);
+extern int utc_media_webrtc_unset_encoded_video_frame_cb_n(void);
 
 testcase tc_array[] = {
        {"utc_media_webrtc_create_p",utc_media_webrtc_create_p,NULL,NULL},
@@ -101,6 +133,30 @@ testcase tc_array[] = {
        {"utc_media_webrtc_remove_media_source_p",utc_media_webrtc_remove_media_source_p,NULL,NULL},
        {"utc_media_webrtc_remove_media_source_n1",utc_media_webrtc_remove_media_source_n1,NULL,NULL},
        {"utc_media_webrtc_remove_media_source_n2",utc_media_webrtc_remove_media_source_n2,NULL,NULL},
+       {"utc_media_webrtc_set_stun_server_p",utc_media_webrtc_set_stun_server_p,NULL,NULL},
+       {"utc_media_webrtc_set_stun_server_n1",utc_media_webrtc_set_stun_server_n1,NULL,NULL},
+       {"utc_media_webrtc_set_stun_server_n2",utc_media_webrtc_set_stun_server_n2,NULL,NULL},
+       {"utc_media_webrtc_get_stun_server_p",utc_media_webrtc_get_stun_server_p,NULL,NULL},
+       {"utc_media_webrtc_get_stun_server_n",utc_media_webrtc_get_stun_server_n,NULL,NULL},
+       {"utc_media_webrtc_add_turn_server_p",utc_media_webrtc_add_turn_server_p,NULL,NULL},
+       {"utc_media_webrtc_add_turn_server_n1",utc_media_webrtc_add_turn_server_n1,NULL,NULL},
+       {"utc_media_webrtc_add_turn_server_n2",utc_media_webrtc_add_turn_server_n2,NULL,NULL},
+       {"utc_media_webrtc_foreach_turn_server_p",utc_media_webrtc_foreach_turn_server_p,NULL,NULL},
+       {"utc_media_webrtc_foreach_turn_server_n",utc_media_webrtc_foreach_turn_server_n,NULL,NULL},
+       {"utc_media_webrtc_create_offer_p",utc_media_webrtc_create_offer_p,NULL,NULL},
+       {"utc_media_webrtc_create_offer_n1",utc_media_webrtc_create_offer_n1,NULL,NULL},
+       {"utc_media_webrtc_create_offer_n2",utc_media_webrtc_create_offer_n2,NULL,NULL},
+       {"utc_media_webrtc_create_answer_p",utc_media_webrtc_create_answer_p,NULL,NULL},
+       {"utc_media_webrtc_create_answer_n1",utc_media_webrtc_create_answer_n1,NULL,NULL},
+       {"utc_media_webrtc_create_answer_n2",utc_media_webrtc_create_answer_n2,NULL,NULL},
+       {"utc_media_webrtc_create_answer_n3",utc_media_webrtc_create_answer_n3,NULL,NULL},
+       {"utc_media_webrtc_set_local_description_p",utc_media_webrtc_set_local_description_p,NULL,NULL},
+       {"utc_media_webrtc_set_local_description_n",utc_media_webrtc_set_local_description_n,NULL,NULL},
+       {"utc_media_webrtc_set_remote_description_p",utc_media_webrtc_set_remote_description_p,NULL,NULL},
+       {"utc_media_webrtc_set_remote_description_n",utc_media_webrtc_set_remote_description_n,NULL,NULL},
+       {"utc_media_webrtc_add_ice_candidate_p",utc_media_webrtc_add_ice_candidate_p,NULL,NULL},
+       {"utc_media_webrtc_add_ice_candidate_n1",utc_media_webrtc_add_ice_candidate_n1,NULL,NULL},
+       {"utc_media_webrtc_add_ice_candidate_n2",utc_media_webrtc_add_ice_candidate_n2,NULL,NULL},
        {"utc_media_webrtc_get_peer_connection_state_p",utc_media_webrtc_get_peer_connection_state_p,NULL,NULL},
        {"utc_media_webrtc_get_peer_connection_state_n",utc_media_webrtc_get_peer_connection_state_n,NULL,NULL},
        {"utc_media_webrtc_get_signaling_state_p",utc_media_webrtc_get_signaling_state_p,NULL,NULL},
@@ -141,6 +197,14 @@ testcase tc_array[] = {
        {"utc_media_webrtc_set_ice_connection_state_change_cb_n",utc_media_webrtc_set_ice_connection_state_change_cb_n,NULL,NULL},
        {"utc_media_webrtc_unset_ice_connection_state_change_cb_p",utc_media_webrtc_unset_ice_connection_state_change_cb_p,NULL,NULL},
        {"utc_media_webrtc_unset_ice_connection_state_change_cb_n",utc_media_webrtc_unset_ice_connection_state_change_cb_n,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_audio_frame_cb_p",utc_media_webrtc_set_encoded_audio_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_audio_frame_cb_n",utc_media_webrtc_set_encoded_audio_frame_cb_n,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_audio_frame_cb_p",utc_media_webrtc_unset_encoded_audio_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_audio_frame_cb_n",utc_media_webrtc_unset_encoded_audio_frame_cb_n,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_video_frame_cb_p",utc_media_webrtc_set_encoded_video_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_video_frame_cb_n",utc_media_webrtc_set_encoded_video_frame_cb_n,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_video_frame_cb_p",utc_media_webrtc_unset_encoded_video_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_video_frame_cb_n",utc_media_webrtc_unset_encoded_video_frame_cb_n,NULL,NULL},
        {NULL, NULL}
 };
 
index 7353e7a9ca3311a61b0a5d2f21e7627a42e2bfc0..ffb964e027a666c9c26ea6f159c88be73da8ec1e 100644 (file)
@@ -40,6 +40,30 @@ extern int utc_media_webrtc_add_media_source_n2(void);
 extern int utc_media_webrtc_remove_media_source_p(void);
 extern int utc_media_webrtc_remove_media_source_n1(void);
 extern int utc_media_webrtc_remove_media_source_n2(void);
+extern int utc_media_webrtc_set_stun_server_p(void);
+extern int utc_media_webrtc_set_stun_server_n1(void);
+extern int utc_media_webrtc_set_stun_server_n2(void);
+extern int utc_media_webrtc_get_stun_server_p(void);
+extern int utc_media_webrtc_get_stun_server_n(void);
+extern int utc_media_webrtc_add_turn_server_p(void);
+extern int utc_media_webrtc_add_turn_server_n1(void);
+extern int utc_media_webrtc_add_turn_server_n2(void);
+extern int utc_media_webrtc_create_offer_p(void);
+extern int utc_media_webrtc_create_offer_n1(void);
+extern int utc_media_webrtc_create_offer_n2(void);
+extern int utc_media_webrtc_create_answer_p(void);
+extern int utc_media_webrtc_create_answer_n1(void);
+extern int utc_media_webrtc_create_answer_n2(void);
+extern int utc_media_webrtc_create_answer_n3(void);
+extern int utc_media_webrtc_set_local_description_p(void);
+extern int utc_media_webrtc_set_local_description_n(void);
+extern int utc_media_webrtc_set_remote_description_p(void);
+extern int utc_media_webrtc_set_remote_description_n(void);
+extern int utc_media_webrtc_add_ice_candidate_p(void);
+extern int utc_media_webrtc_add_ice_candidate_n1(void);
+extern int utc_media_webrtc_add_ice_candidate_n2(void);
+extern int utc_media_webrtc_foreach_turn_server_p(void);
+extern int utc_media_webrtc_foreach_turn_server_n(void);
 extern int utc_media_webrtc_get_peer_connection_state_p(void);
 extern int utc_media_webrtc_get_peer_connection_state_n(void);
 extern int utc_media_webrtc_get_signaling_state_p(void);
@@ -80,6 +104,14 @@ extern int utc_media_webrtc_set_ice_connection_state_change_cb_p(void);
 extern int utc_media_webrtc_set_ice_connection_state_change_cb_n(void);
 extern int utc_media_webrtc_unset_ice_connection_state_change_cb_p(void);
 extern int utc_media_webrtc_unset_ice_connection_state_change_cb_n(void);
+extern int utc_media_webrtc_set_encoded_audio_frame_cb_p(void);
+extern int utc_media_webrtc_set_encoded_audio_frame_cb_n(void);
+extern int utc_media_webrtc_unset_encoded_audio_frame_cb_p(void);
+extern int utc_media_webrtc_unset_encoded_audio_frame_cb_n(void);
+extern int utc_media_webrtc_set_encoded_video_frame_cb_p(void);
+extern int utc_media_webrtc_set_encoded_video_frame_cb_n(void);
+extern int utc_media_webrtc_unset_encoded_video_frame_cb_p(void);
+extern int utc_media_webrtc_unset_encoded_video_frame_cb_n(void);
 
 testcase tc_array[] = {
        {"utc_media_webrtc_create_p",utc_media_webrtc_create_p,NULL,NULL},
@@ -101,6 +133,30 @@ testcase tc_array[] = {
        {"utc_media_webrtc_remove_media_source_p",utc_media_webrtc_remove_media_source_p,NULL,NULL},
        {"utc_media_webrtc_remove_media_source_n1",utc_media_webrtc_remove_media_source_n1,NULL,NULL},
        {"utc_media_webrtc_remove_media_source_n2",utc_media_webrtc_remove_media_source_n2,NULL,NULL},
+       {"utc_media_webrtc_set_stun_server_p",utc_media_webrtc_set_stun_server_p,NULL,NULL},
+       {"utc_media_webrtc_set_stun_server_n1",utc_media_webrtc_set_stun_server_n1,NULL,NULL},
+       {"utc_media_webrtc_set_stun_server_n2",utc_media_webrtc_set_stun_server_n2,NULL,NULL},
+       {"utc_media_webrtc_get_stun_server_p",utc_media_webrtc_get_stun_server_p,NULL,NULL},
+       {"utc_media_webrtc_get_stun_server_n",utc_media_webrtc_get_stun_server_n,NULL,NULL},
+       {"utc_media_webrtc_add_turn_server_p",utc_media_webrtc_add_turn_server_p,NULL,NULL},
+       {"utc_media_webrtc_add_turn_server_n1",utc_media_webrtc_add_turn_server_n1,NULL,NULL},
+       {"utc_media_webrtc_add_turn_server_n2",utc_media_webrtc_add_turn_server_n2,NULL,NULL},
+       {"utc_media_webrtc_foreach_turn_server_p",utc_media_webrtc_foreach_turn_server_p,NULL,NULL},
+       {"utc_media_webrtc_foreach_turn_server_n",utc_media_webrtc_foreach_turn_server_n,NULL,NULL},
+       {"utc_media_webrtc_create_offer_p",utc_media_webrtc_create_offer_p,NULL,NULL},
+       {"utc_media_webrtc_create_offer_n1",utc_media_webrtc_create_offer_n1,NULL,NULL},
+       {"utc_media_webrtc_create_offer_n2",utc_media_webrtc_create_offer_n2,NULL,NULL},
+       {"utc_media_webrtc_create_answer_p",utc_media_webrtc_create_answer_p,NULL,NULL},
+       {"utc_media_webrtc_create_answer_n1",utc_media_webrtc_create_answer_n1,NULL,NULL},
+       {"utc_media_webrtc_create_answer_n2",utc_media_webrtc_create_answer_n2,NULL,NULL},
+       {"utc_media_webrtc_create_answer_n3",utc_media_webrtc_create_answer_n3,NULL,NULL},
+       {"utc_media_webrtc_set_local_description_p",utc_media_webrtc_set_local_description_p,NULL,NULL},
+       {"utc_media_webrtc_set_local_description_n",utc_media_webrtc_set_local_description_n,NULL,NULL},
+       {"utc_media_webrtc_set_remote_description_p",utc_media_webrtc_set_remote_description_p,NULL,NULL},
+       {"utc_media_webrtc_set_remote_description_n",utc_media_webrtc_set_remote_description_n,NULL,NULL},
+       {"utc_media_webrtc_add_ice_candidate_p",utc_media_webrtc_add_ice_candidate_p,NULL,NULL},
+       {"utc_media_webrtc_add_ice_candidate_n1",utc_media_webrtc_add_ice_candidate_n1,NULL,NULL},
+       {"utc_media_webrtc_add_ice_candidate_n2",utc_media_webrtc_add_ice_candidate_n2,NULL,NULL},
        {"utc_media_webrtc_get_peer_connection_state_p",utc_media_webrtc_get_peer_connection_state_p,NULL,NULL},
        {"utc_media_webrtc_get_peer_connection_state_n",utc_media_webrtc_get_peer_connection_state_n,NULL,NULL},
        {"utc_media_webrtc_get_signaling_state_p",utc_media_webrtc_get_signaling_state_p,NULL,NULL},
@@ -141,6 +197,14 @@ testcase tc_array[] = {
        {"utc_media_webrtc_set_ice_connection_state_change_cb_n",utc_media_webrtc_set_ice_connection_state_change_cb_n,NULL,NULL},
        {"utc_media_webrtc_unset_ice_connection_state_change_cb_p",utc_media_webrtc_unset_ice_connection_state_change_cb_p,NULL,NULL},
        {"utc_media_webrtc_unset_ice_connection_state_change_cb_n",utc_media_webrtc_unset_ice_connection_state_change_cb_n,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_audio_frame_cb_p",utc_media_webrtc_set_encoded_audio_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_audio_frame_cb_n",utc_media_webrtc_set_encoded_audio_frame_cb_n,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_audio_frame_cb_p",utc_media_webrtc_unset_encoded_audio_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_audio_frame_cb_n",utc_media_webrtc_unset_encoded_audio_frame_cb_n,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_video_frame_cb_p",utc_media_webrtc_set_encoded_video_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_set_encoded_video_frame_cb_n",utc_media_webrtc_set_encoded_video_frame_cb_n,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_video_frame_cb_p",utc_media_webrtc_unset_encoded_video_frame_cb_p,NULL,NULL},
+       {"utc_media_webrtc_unset_encoded_video_frame_cb_n",utc_media_webrtc_unset_encoded_video_frame_cb_n,NULL,NULL},
        {NULL, NULL}
 };
 
index 26e2d0cab30643975fe32e4a3f72a0d798fec760..1de12a5bf9d9cb1ed409ee4ec3ee8f68948a3757 100644 (file)
@@ -49,6 +49,10 @@ static void __webrtc_ice_connection_state_change_cb(webrtc_h webrtc, webrtc_ice_
 {
 }
 
+static void __webrtc_encoded_frame_cb(webrtc_h webrtc, webrtc_media_type_e type, unsigned int track_id, media_packet_h packet, void *user_data)
+{
+}
+
 /**
  * @testcase           utc_media_webrtc_set_state_changed_cb_p
  * @since_tizen                6.5
@@ -708,3 +712,181 @@ int utc_media_webrtc_unset_ice_connection_state_change_cb_n(void)
 
        return 0;
 }
+
+/**
+ * @testcase           utc_media_webrtc_set_encoded_audio_frame_cb_p
+ * @since_tizen                6.5
+ * @description                Sets an encoded audio frame callback
+ */
+int utc_media_webrtc_set_encoded_audio_frame_cb_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_encoded_audio_frame_cb(webrtc, __webrtc_encoded_frame_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_set_encoded_audio_frame_cb_n
+ * @since_tizen                6.5
+ * @description                Sets an encoded audio frame callback
+ *                             - Sets the callback without callback function pointer to get negative result
+ */
+int utc_media_webrtc_set_encoded_audio_frame_cb_n(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_encoded_audio_frame_cb(webrtc, NULL, NULL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_unset_encoded_audio_frame_cb_p
+ * @since_tizen                6.5
+ * @description                Unsets the encoded audio frame callback
+ */
+int utc_media_webrtc_unset_encoded_audio_frame_cb_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_encoded_audio_frame_cb(webrtc, __webrtc_encoded_frame_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_unset_encoded_audio_frame_cb(webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_unset_encoded_audio_frame_cb_n
+ * @since_tizen                6.5
+ * @description                Unsets the encoded audio frame callback
+ *                             - Unsets the callback without setting it to get negative result
+ */
+int utc_media_webrtc_unset_encoded_audio_frame_cb_n(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_unset_encoded_audio_frame_cb(webrtc);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_OPERATION);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_set_encoded_video_frame_cb_p
+ * @since_tizen                6.5
+ * @description                Sets an encoded video frame callback
+ */
+int utc_media_webrtc_set_encoded_video_frame_cb_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_encoded_video_frame_cb(webrtc, __webrtc_encoded_frame_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_set_encoded_video_frame_cb_n
+ * @since_tizen                6.5
+ * @description                Sets an encoded video frame callback
+ *                             - Sets the callback without callback function pointer to get negative result
+ */
+int utc_media_webrtc_set_encoded_video_frame_cb_n(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_encoded_video_frame_cb(webrtc, NULL, NULL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_unset_encoded_video_frame_cb_p
+ * @since_tizen                6.5
+ * @description                Unsets the encoded video frame callback
+ */
+int utc_media_webrtc_unset_encoded_video_frame_cb_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_encoded_video_frame_cb(webrtc, __webrtc_encoded_frame_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_unset_encoded_video_frame_cb(webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_unset_encoded_video_frame_cb_n
+ * @since_tizen                6.5
+ * @description                Unsets the encoded video frame callback
+ *                             - Unsets the callback without setting it to get negative result
+ */
+int utc_media_webrtc_unset_encoded_video_frame_cb_n(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_unset_encoded_video_frame_cb(webrtc);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_OPERATION);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
index 3f24d3e2b3511b79dd8690624171007d783d66d5..ea623fd94c9ed6fa5294dc0e90899df28a6491a4 100644 (file)
 #include <dlog.h>
 
 #define TIMEOUT_MS 1000
+#define TEST_STUN_SERVER_URL   "stun://stun.testurl.com:19302"
+#define TEST_TURN_SERVER_URL   "turn://turn.testurl.com:19303"
+#define TEST_TURN_SERVER_URL2  "turn://turn2.testurl.com:19303"
+#define TEST_ICE_CANDIDATE     "{'ice':{'candidate':'candidate:3600539631 1 tcp 1518149375 192.168.0.127 9 typ host tcptype active generation 0 ufrag l4kk network-id 3 network-cost 10','sdpMid':'video0','sdpMLineIndex':0}}"
 
 static GMainLoop *g_mainloop = NULL;
 static int g_timeout_id = 0;
@@ -70,6 +74,24 @@ static void __webrtc_state_changed_cb(webrtc_h webrtc, webrtc_state_e previous,
        __quit_mainloop();
 }
 
+static void __webrtc_signaling_state_change_cb(webrtc_h webrtc, webrtc_signaling_state_e state, void *user_data)
+{
+       dlog_print(DLOG_DEBUG, "NativeTCT", "[%s:%d] current state[%d]", __FUNCTION__, __LINE__, state);
+
+       __quit_mainloop();
+}
+
+static bool __webrtc_turn_server_cb(const char *turn_server, void *user_data)
+{
+       int *count = (int*)user_data;
+
+       dlog_print(DLOG_DEBUG, "NativeTCT", "[%s:%d] turn_server[%s]", __FUNCTION__, __LINE__, turn_server);
+
+       (*count)--;
+
+       return true;
+}
+
 /**
  * @testcase           utc_media_webrtc_create_p
  * @since_tizen                6.5
@@ -485,6 +507,744 @@ int utc_media_webrtc_remove_media_source_n2(void)
        return 0;
 }
 
+/**
+ * @testcase           utc_media_webrtc_set_stun_server_p
+ * @since_tizen                6.5
+ * @description                Sets STUN server\n
+ *                             - Create a webrtc handle\n
+ *                             - Set STUN server
+ */
+int utc_media_webrtc_set_stun_server_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_stun_server(webrtc, TEST_STUN_SERVER_URL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_set_stun_server_n1
+ * @since_tizen                6.5
+ * @description                Sets STUN server\n
+ *                             - Create a webrtc handle\n
+ *                             - Pass invalid parameter to get negative result
+ */
+int utc_media_webrtc_set_stun_server_n1(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_stun_server(webrtc, NULL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_set_stun_server_n2
+ * @since_tizen                6.5
+ * @description                Sets STUN server\n
+ *                             - Create a webrtc handle\n
+ *                             - Start the webrtc handle and set it to get negative result
+ */
+int utc_media_webrtc_set_stun_server_n2(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_ice_candidate_cb(webrtc, __webrtc_ice_candidate_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_state_changed_cb(webrtc, __webrtc_state_changed_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_start(webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       __run_mainloop();
+
+       ret = webrtc_set_stun_server(webrtc, TEST_STUN_SERVER_URL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_STATE);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_get_stun_server_p
+ * @since_tizen                6.5
+ * @description                Gets STUN server\n
+ *                             - Create a webrtc handle\n
+ *                             - Set STUN server
+ *                             - Get the server
+ */
+int utc_media_webrtc_get_stun_server_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       char *result = NULL;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_stun_server(webrtc, TEST_STUN_SERVER_URL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_get_stun_server(webrtc, &result);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       dlog_print(DLOG_DEBUG, "NativeTCT", "[%s(%d)] %s %s", __FUNCTION__, __LINE__, result, TEST_STUN_SERVER_URL);
+       if (strcmp(result, TEST_STUN_SERVER_URL))
+               return -1;
+
+       webrtc_destroy(webrtc);
+
+       free(result);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_get_stun_server_n
+ * @since_tizen                6.5
+ * @description                Gets STUN server\n
+ *                             - Create a webrtc handle\n
+ *                             - Pass invalid parameter to get negative result
+ */
+int utc_media_webrtc_get_stun_server_n(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_get_stun_server(webrtc, NULL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+
+/**
+ * @testcase           utc_media_webrtc_add_turn_server_p
+ * @since_tizen                6.5
+ * @description                Adds TURN server\n
+ *                             - Create a webrtc handle\n
+ *                             - Add TURN server
+ */
+int utc_media_webrtc_add_turn_server_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_add_turn_server(webrtc, TEST_TURN_SERVER_URL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_add_turn_server_n1
+ * @since_tizen                6.5
+ * @description                Adds TURN server\n
+ *                             - Create a webrtc handle\n
+ *                             - Pass invalid parameter to get negative result
+ */
+int utc_media_webrtc_add_turn_server_n1(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_add_turn_server(webrtc, NULL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_add_turn_server_n2
+ * @since_tizen                6.5
+ * @description                Adds TURN server\n
+ *                             - Create a webrtc handle\n
+ *                             - Start the webrtc handle and set it to get negative result
+ */
+int utc_media_webrtc_add_turn_server_n2(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_ice_candidate_cb(webrtc, __webrtc_ice_candidate_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_state_changed_cb(webrtc, __webrtc_state_changed_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_start(webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       __run_mainloop();
+
+       ret = webrtc_add_turn_server(webrtc, TEST_TURN_SERVER_URL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_STATE);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_foreach_turn_server_p
+ * @since_tizen                6.5
+ * @description                Retrieves TURN servers\n
+ *                             - Create a webrtc handle\n
+ *                             - Add TURN server\n
+ *                             - Foreach TURN server
+ */
+int utc_media_webrtc_foreach_turn_server_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       int count = 0;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_add_turn_server(webrtc, TEST_TURN_SERVER_URL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+       count++;
+
+       ret = webrtc_add_turn_server(webrtc, TEST_TURN_SERVER_URL2);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+       count++;
+
+       ret = webrtc_foreach_turn_server(webrtc, __webrtc_turn_server_cb, (void *)&count);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+       assert_eq(count, 0);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_foreach_turn_server_n
+ * @since_tizen                6.5
+ * @description                Adds TURN server\n
+ *                             - Create a webrtc handle\n
+ *                             - Pass invalid parameter to get negative result
+ */
+int utc_media_webrtc_foreach_turn_server_n(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_foreach_turn_server(webrtc, NULL, NULL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_create_offer_p
+ * @since_tizen                6.5
+ * @description                Creates an offer message\n
+ *                             - Create a webrtc handle\n
+ *                             - Add a media source\n
+ *                             - Start the webrtc handle\n
+ *                             - Create an offer message
+ */
+int utc_media_webrtc_create_offer_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       unsigned int id;
+       char *offer;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_add_media_source(webrtc, WEBRTC_MEDIA_SOURCE_TYPE_CAMERA, &id);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_ice_candidate_cb(webrtc, __webrtc_ice_candidate_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_state_changed_cb(webrtc, __webrtc_state_changed_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_start(webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       __run_mainloop();
+
+       ret = webrtc_create_offer(webrtc, NULL, &offer);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       free(offer);
+
+       webrtc_stop(webrtc);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_create_offer_n1
+ * @since_tizen                6.5
+ * @description                Creates an offer message\n
+ *                             - Pass invalid parameter to get negative result
+ */
+int utc_media_webrtc_create_offer_n1(void)
+{
+       int ret = webrtc_create_offer(NULL, NULL, NULL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_create_offer_n2
+ * @since_tizen                6.5
+ * @description                Creates an offer message\n
+ *                             - Create a webrtc handle\n
+ *                             - Create an offer in IDLE state to get negative result
+ */
+int utc_media_webrtc_create_offer_n2(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       char *offer;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_create_offer(webrtc, NULL, &offer);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_STATE);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_create_answer_p
+ * @since_tizen                6.5
+ * @description                Creates an answer message\n
+ *                             - handle1 : Create a webrtc handle\n
+ *                             - handle1 : Add a media source\n
+ *                             - handle1 : Start the webrtc handle\n
+ *                             - handle1 : Create an offer message\n
+ *                             - handle2 : Create a webrtc handle\n
+  *                            - handle2 : Start the webrtc handle\n
+ *                             - handle2 : Set the remote description\n
+ *                             - handle2 : Create an answer message
+ */
+int utc_media_webrtc_create_answer_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       webrtc_h webrtc2;
+       unsigned int id;
+       char *offer;
+       char *answer;
+
+       /* handle 1: offerer */
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_add_media_source(webrtc, WEBRTC_MEDIA_SOURCE_TYPE_SCREEN, &id);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_ice_candidate_cb(webrtc, __webrtc_ice_candidate_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_state_changed_cb(webrtc, __webrtc_state_changed_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_start(webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       __run_mainloop();
+
+       ret = webrtc_create_offer(webrtc, NULL, &offer);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       dlog_print(DLOG_DEBUG, "NativeTCT", "[%s(%d)] offer[%s]", __FUNCTION__, __LINE__, offer);
+
+       /* handle 2: answerer */
+       ret = webrtc_create(&webrtc2);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_ice_candidate_cb(webrtc2, __webrtc_ice_candidate_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_state_changed_cb(webrtc2, __webrtc_state_changed_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_signaling_state_change_cb(webrtc2, __webrtc_signaling_state_change_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_start(webrtc2);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       __run_mainloop();
+
+       ret = webrtc_set_remote_description(webrtc2, offer);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       __run_mainloop();
+
+       ret = webrtc_create_answer(webrtc2, NULL, &answer);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       dlog_print(DLOG_DEBUG, "NativeTCT", "[%s(%d)] answer[%s]", __FUNCTION__, __LINE__, answer);
+
+       free(offer);
+       free(answer);
+
+#if 0 /* FIXME: blocking issue */
+       webrtc_stop(webrtc);
+       webrtc_destroy(webrtc);
+
+       webrtc_stop(webrtc2);
+       webrtc_destroy(webrtc2);
+#endif
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_create_answer_n1
+ * @since_tizen                6.5
+ * @description                Creates an answer message\n
+ *                             - Pass invalid parameter to get negative result
+ */
+int utc_media_webrtc_create_answer_n1(void)
+{
+       int ret = webrtc_create_answer(NULL, NULL, NULL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_create_answer_n2
+ * @since_tizen                6.5
+ * @description                Creates an answer message\n
+ *                             - Create a webrtc handle\n
+ *                             - Create an answer in IDLE state to get negative result
+ */
+int utc_media_webrtc_create_answer_n2(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       char *offer;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_create_answer(webrtc, NULL, &offer);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_STATE);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_create_answer_n3
+ * @since_tizen                6.5
+ * @description                Creates an answer message\n
+ *                             - Create a webrtc handle\n
+  *                            - Start the webrtc handle\n
+ *                             - Create an answer without setting a remote description to get negative result
+ */
+int utc_media_webrtc_create_answer_n3(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       char *offer;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_ice_candidate_cb(webrtc, __webrtc_ice_candidate_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_state_changed_cb(webrtc, __webrtc_state_changed_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_start(webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       __run_mainloop();
+
+       ret = webrtc_create_answer(webrtc, NULL, &offer);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_STATE);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_set_local_description_p
+ * @since_tizen                6.5
+ * @description                Creates an offer message\n
+ *                             - Create a webrtc handle\n
+ *                             - Add a media source\n
+ *                             - Start the webrtc handle\n
+ *                             - Create an offer message\n
+ *                             - Set the offer message as local description
+ */
+int utc_media_webrtc_set_local_description_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       unsigned int id;
+       char *offer;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_add_media_source(webrtc, WEBRTC_MEDIA_SOURCE_TYPE_CAMERA, &id);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_ice_candidate_cb(webrtc, __webrtc_ice_candidate_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_state_changed_cb(webrtc, __webrtc_state_changed_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_start(webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       __run_mainloop();
+
+       ret = webrtc_create_offer(webrtc, NULL, &offer);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_local_description(webrtc, offer);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       free(offer);
+
+       webrtc_stop(webrtc);
+
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_set_local_description_n
+ * @since_tizen                6.5
+ * @description                Sets a local description\n
+ *                             - Pass invalid parameter to get negative result
+ */
+int utc_media_webrtc_set_local_description_n(void)
+{
+       int ret = webrtc_set_local_description(NULL, NULL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_set_remote_description_p
+ * @since_tizen                6.5
+ * @description                Creates an answer message\n
+ *                             - handle1 : Create a webrtc handle\n
+ *                             - handle1 : Add a media source\n
+ *                             - handle1 : Start the webrtc handle\n
+ *                             - handle1 : Create an offer message\n
+ *                             - handle2 : Create a webrtc handle\n
+  *                            - handle2 : Start the webrtc handle\n
+ *                             - handle2 : Set the remote description
+ */
+int utc_media_webrtc_set_remote_description_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       webrtc_h webrtc2;
+       unsigned int id;
+       char *offer;
+
+       /* handle 1: offerer */
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_add_media_source(webrtc, WEBRTC_MEDIA_SOURCE_TYPE_MIC, &id);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_ice_candidate_cb(webrtc, __webrtc_ice_candidate_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_state_changed_cb(webrtc, __webrtc_state_changed_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_start(webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       __run_mainloop();
+
+       ret = webrtc_create_offer(webrtc, NULL, &offer);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       dlog_print(DLOG_DEBUG, "NativeTCT", "[%s(%d)] offer[%s]", __FUNCTION__, __LINE__, offer);
+
+       /* handle 2: answerer */
+       ret = webrtc_create(&webrtc2);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_ice_candidate_cb(webrtc2, __webrtc_ice_candidate_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_state_changed_cb(webrtc2, __webrtc_state_changed_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_start(webrtc2);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       __run_mainloop();
+
+       ret = webrtc_set_remote_description(webrtc2, offer);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       free(offer);
+
+       webrtc_stop(webrtc);
+       webrtc_destroy(webrtc);
+
+       webrtc_stop(webrtc2);
+       webrtc_destroy(webrtc2);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_set_remote_description_n
+ * @since_tizen                6.5
+ * @description                Sets a remote description\n
+ *                             - Pass invalid parameter to get negative result
+ */
+int utc_media_webrtc_set_remote_description_n(void)
+{
+       int ret = webrtc_set_remote_description(NULL, NULL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_add_ice_candidate_p
+ * @since_tizen                6.5
+ * @description                Adds an ICE candidate\n
+ *                             - Create a webrtc handle\n
+ *                             - Set ICE candidate callback\n
+ *                             - Start the handle\n
+ *                             - Add an ICE candidate
+ */
+int utc_media_webrtc_add_ice_candidate_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_ice_candidate_cb(webrtc, __webrtc_ice_candidate_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_set_state_changed_cb(webrtc, __webrtc_state_changed_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_start(webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       __run_mainloop();
+
+       ret = webrtc_add_ice_candidate(webrtc, TEST_ICE_CANDIDATE);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       webrtc_stop(webrtc);
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_add_ice_candidate_n1
+ * @since_tizen                6.5
+ * @description                Adds an ICE candidate\n
+ *                             - Pass invalid parameter to get negative result
+ */
+int utc_media_webrtc_add_ice_candidate_n1(void)
+{
+       int ret = webrtc_add_ice_candidate(NULL, NULL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_add_ice_candidate_n2
+ * @since_tizen                6.5
+ * @description                Adds an ICE candidate\n
+ *                             - Pass invalid parameter to get negative result
+ */
+int utc_media_webrtc_add_ice_candidate_n2(void)
+{
+       int ret;
+       webrtc_h webrtc;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_add_ice_candidate(webrtc, TEST_ICE_CANDIDATE);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_STATE);
+
+       return 0;
+}
+
 /**
  * @testcase           utc_media_webrtc_get_peer_connection_state_p
  * @since_tizen                6.5