webrtc_test: Add test cases for encoded audio/video frame callback 03/252803/9
authorSangchul Lee <sc11.lee@samsung.com>
Tue, 2 Feb 2021 10:11:42 +0000 (19:11 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Thu, 4 Feb 2021 13:11:47 +0000 (22:11 +0900)
[Version] 0.1.104
[Issue Type] Test application

Change-Id: Ide975cd7fc5e5abf1029e4f98b2c1cce12ad70d3
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
packaging/capi-media-webrtc.spec
test/webrtc_test.c

index ef5b01f687c7c16611155e7c4ffb6da1ccfcbcd9..feaaefcb19397e089c38ea8daa52bc1910d15ea3 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    0.1.103
+Version:    0.1.104
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 87c22aa5338370377a10c4cd78ba95c072b6c82f..733e4dab5e042b59f04497740f160b373351341f 100644 (file)
@@ -1212,6 +1212,65 @@ static void _webrtc_unset_track_added_cb(int index)
                g_print("webrtc_unset_track_added_cb() success\n");
 }
 
+static void __encoded_frame_cb(webrtc_h webrtc, webrtc_media_type_e type, unsigned int track_id, media_packet_h packet, void *user_data)
+{
+       void *data_ptr = NULL;
+
+       /* get data pointer from media packet */
+       if (media_packet_get_buffer_data_ptr(packet, &data_ptr) != MEDIA_PACKET_ERROR_NONE)
+               g_print("failed to media_packet_get_buffer_data_ptr()\n");
+
+       g_print("webrtc[%p] type[%u] track_id[%u] packet[%p, data_ptr:%p] user_data[%p]\n",
+               webrtc, type, track_id, packet, data_ptr, user_data);
+
+       /* media packet should be freed after use */
+       media_packet_destroy(packet);
+}
+
+static void _webrtc_set_encoded_audio_frame_cb(int index)
+{
+       int ret = WEBRTC_ERROR_NONE;
+
+       ret = webrtc_set_encoded_audio_frame_cb(g_conns[index].webrtc, __encoded_frame_cb, &g_conns[index]);
+       if (ret != WEBRTC_ERROR_NONE)
+               g_print("failed to webrtc_set_encoded_audio_frame_cb()\n");
+       else
+               g_print("webrtc_set_encoded_audio_frame_cb() success\n");
+}
+
+static void _webrtc_unset_encoded_audio_frame_cb(int index)
+{
+       int ret = WEBRTC_ERROR_NONE;
+
+       ret = webrtc_unset_encoded_audio_frame_cb(g_conns[index].webrtc);
+       if (ret != WEBRTC_ERROR_NONE)
+               g_print("failed to webrtc_unset_encoded_audio_frame_cb()\n");
+       else
+               g_print("webrtc_unset_encoded_audio_frame_cb() success\n");
+}
+
+static void _webrtc_set_encoded_video_frame_cb(int index)
+{
+       int ret = WEBRTC_ERROR_NONE;
+
+       ret = webrtc_set_encoded_video_frame_cb(g_conns[index].webrtc, __encoded_frame_cb, &g_conns[index]);
+       if (ret != WEBRTC_ERROR_NONE)
+               g_print("failed to webrtc_set_encoded_video_frame_cb()\n");
+       else
+               g_print("webrtc_set_encoded_video_frame_cb() success\n");
+}
+
+static void _webrtc_unset_encoded_video_frame_cb(int index)
+{
+       int ret = WEBRTC_ERROR_NONE;
+
+       ret = webrtc_unset_encoded_video_frame_cb(g_conns[index].webrtc);
+       if (ret != WEBRTC_ERROR_NONE)
+               g_print("failed to webrtc_unset_encoded_video_frame_cb()\n");
+       else
+               g_print("webrtc_unset_encoded_video_frame_cb() success\n");
+}
+
 static void __media_packet_source_buffer_state_changed_cb(unsigned int source_id, webrtc_media_packet_source_buffer_state_e state, void *user_data)
 {
        connection_s *conn = (connection_s *)user_data;
@@ -2580,6 +2639,18 @@ void _interpret_main_menu(char *cmd)
                } else if (strncmp(cmd, "uk", 2) == 0) {
                        _webrtc_unset_track_added_cb(g_conn_index);
 
+               } else if (strncmp(cmd, "sa", 2) == 0) {
+                       _webrtc_set_encoded_audio_frame_cb(g_conn_index);
+
+               } else if (strncmp(cmd, "ua", 2) == 0) {
+                       _webrtc_unset_encoded_audio_frame_cb(g_conn_index);
+
+               } else if (strncmp(cmd, "sv", 2) == 0) {
+                       _webrtc_set_encoded_video_frame_cb(g_conn_index);
+
+               } else if (strncmp(cmd, "uv", 2) == 0) {
+                       _webrtc_unset_encoded_video_frame_cb(g_conn_index);
+
                } else if (strncmp(cmd, "sm", 2) == 0) {
                        g_conns[g_conn_index].menu_state = CURRENT_STATUS_MEDIA_PACKET_SOURCE_SET_BUFFER_STATE_CHANGED_CB;
 
@@ -2753,7 +2824,7 @@ void display_sub_basic()
        g_print("zb. Send string as bytes data via data channel\t");
        g_print("zf. Send file via data channel\n");
        g_print("------------------------------------- Callbacks -----------------------------------------\n");
-       g_print("sac. Set all callbacks below\n");
+       g_print("sac. Set all callbacks below (except for the encoded frame callbacks)\n");
        g_print("se. Set error callback\t");
        g_print("ue. Unset error callback\n");
        g_print("sc. Set state changed callback\t");
@@ -2764,6 +2835,10 @@ void display_sub_basic()
        g_print("ui. Unset ICE candidate callback\n");
        g_print("sk. Set track added callback\t");
        g_print("uk. Unset track added callback\n");
+       g_print("sa. Set encoded audio frame callback\t");
+       g_print("ua. Unset encoded audio frame callback\n");
+       g_print("sv. Set encoded video frame callback\t");
+       g_print("uv. Unset encoded video frame callback\n");
        g_print("sz. Set data channel callback\t");
        g_print("uz. Unset data channel callback\n");
        g_print("sm. Set media packet source buffer state changed callback\n");