webrtc_test_espp: Fix issue about calling esplusplayer_prepare_async() 42/280442/1
authorSangchul Lee <sc11.lee@samsung.com>
Tue, 30 Aug 2022 06:56:36 +0000 (15:56 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Tue, 30 Aug 2022 06:59:17 +0000 (15:59 +0900)
This patch fixed issues below
 1. _prepare_async() function is called too early
 2. Occasionally, redundant _prepare_async() function call happens

[Version] 0.3.219
[Issue Type] Bug fix

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

index d93125af190f1898c232c3d9a14a3acce68669ea..730b6aefbb3caad03d74e4f76dcd5fc91846d876 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    0.3.218
+Version:    0.3.219
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 1fb99e17cd14939c7900a064af9a59ff1c99712c..122354285d7d9e7b5e60dd421b89c67cf41228ff 100644 (file)
@@ -1875,7 +1875,6 @@ static void __track_added_cb(webrtc_h webrtc, webrtc_media_type_e type, unsigned
                                conn->render.display_type, conn->render.display_type == WEBRTC_DISPLAY_TYPE_OVERLAY ? g_ad.win : conn->render.eo);
 #ifdef TIZEN_FEATURE_ESPP
                        if (conn->render.espp.handle) {
-                               conn->render.espp.video_track_preparing = true;
                                if (conn->render.display_type == WEBRTC_DISPLAY_TYPE_OVERLAY)
                                        esplusplayer_set_display(conn->render.espp.handle, ESPLUSPLAYER_DISPLAY_TYPE_OVERLAY, g_ad.win);
                                else if (conn->render.display_type == WEBRTC_DISPLAY_TYPE_EVAS)
@@ -1906,10 +1905,8 @@ static void __track_added_cb(webrtc_h webrtc, webrtc_media_type_e type, unsigned
                        int ret;
                        g_print("Audio track is added, set stream_info[%p]\n", &conn->render.stream_info);
 #ifdef TIZEN_FEATURE_ESPP
-                       if (conn->render.espp.handle) { /* TODO: apply stream info if the function is provided in espp */
-                               conn->render.espp.audio_track_preparing = true;
+                       if (conn->render.espp.handle) /* TODO: apply stream info if the function is provided in espp */
                                return;
-                       }
 #endif
                        if (!conn->render.stream_info) {
                                ret = sound_manager_create_stream_information(SOUND_STREAM_TYPE_MEDIA, NULL, NULL, &conn->render.stream_info);
index cdc32f3456287b9911470beb387aca205d539153..3290f4ab94db43f9173db3f8d3c92264d1419316 100644 (file)
@@ -45,8 +45,8 @@ void _espp_init(int index)
 
        g_mutex_init(&get_appdata()->conns[index].render.espp.mutex);
        g_cond_init(&get_appdata()->conns[index].render.espp.cond);
-       get_appdata()->conns[index].render.espp.audio_track_preparing = false;
-       get_appdata()->conns[index].render.espp.video_track_preparing = false;
+       get_appdata()->conns[index].render.espp.audio_track_preparing = true;
+       get_appdata()->conns[index].render.espp.video_track_preparing = true;
 
        g_print("espp create & open\n");
        get_appdata()->conns[index].render.espp.handle = esplusplayer_create();
@@ -66,8 +66,8 @@ void _espp_deinit(int index)
        esplusplayer_destroy(get_appdata()->conns[index].render.espp.handle);
 
        get_appdata()->conns[index].render.espp.handle = NULL;
-       get_appdata()->conns[index].render.espp.audio_track_preparing = false;
-       get_appdata()->conns[index].render.espp.video_track_preparing = false;
+       get_appdata()->conns[index].render.espp.audio_track_preparing = true;
+       get_appdata()->conns[index].render.espp.video_track_preparing = true;
        g_mutex_clear(&get_appdata()->conns[index].render.espp.mutex);
        g_cond_clear(&get_appdata()->conns[index].render.espp.cond);
 }
@@ -195,6 +195,7 @@ bool _espp_prepare_and_start(connection_s *conn, media_packet_h packet, webrtc_m
        bool is_audio = (type == WEBRTC_MEDIA_TYPE_AUDIO) ? true : false;
        bool *espp_track_preparing = is_audio ? &conn->render.espp.audio_track_preparing : &conn->render.espp.video_track_preparing;
        bool *espp_track_preparing_oppsite = is_audio ? &conn->render.espp.video_track_preparing : &conn->render.espp.audio_track_preparing;
+       bool *opposite_type_exist = is_audio ? &conn->encoded_video_frame_cb_is_set : &conn->encoded_audio_frame_cb_is_set;
 
        if (!conn)
                return false;
@@ -214,7 +215,7 @@ bool _espp_prepare_and_start(connection_s *conn, media_packet_h packet, webrtc_m
                (void *)&conn->render.espp.video_info);
        esplusplayer_activate(conn->render.espp.handle, espp_infos[type].stream_type);
 
-       if (!(*espp_track_preparing_oppsite)) {
+       if (!*opposite_type_exist || !(*espp_track_preparing_oppsite)) {
                g_print("espp prepare async\n");
                esplusplayer_prepare_async(conn->render.espp.handle);