webrtc_source_mediapacket: Set picture-id-mode in case of VP8 payloader 73/314473/1
authorSangchul Lee <sc11.lee@samsung.com>
Fri, 12 Jul 2024 06:15:49 +0000 (15:15 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Fri, 12 Jul 2024 06:19:22 +0000 (15:19 +0900)
It is applied similarly with the commit below.
17e92a5dcf40ad3a82cde8fa3c1cb41652f2ccb3

_update_payloader_vp8_picture_id_mode() is extracted from the
previous codes.

[Version] 1.1.13
[Issue Type] Improvement

Change-Id: I6e390f72f0664ee709d14f9db2843d41b33b6542
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
include/webrtc_source_private.h
packaging/capi-media-webrtc.spec
src/webrtc_source_mediapacket.c
src/webrtc_source_private.c

index f8c66151f0b1a49888c430f5989bc0997ab0c19e..7ee3e8fba297193779ae296972f4703af3cc4376 100644 (file)
@@ -95,6 +95,7 @@ bool _is_videoscale_needed(webrtc_s *webrtc, webrtc_gst_slot_s *source);
 bool _is_videorate_needed(webrtc_s *webrtc, webrtc_gst_slot_s *source);
 GstElement *_prepare_first_capsfilter(webrtc_s *webrtc, webrtc_gst_slot_s *source, int ssrc, int av_idx, GList **element_list, bool *encoded_support, GstCaps **caps_for_render);
 GstElement *_prepare_videorate(webrtc_gst_slot_s *source, int ssrc, GList **element_list);
+void _update_payloader_vp8_picture_id_mode(GstElement *payloader);
 int _create_rest_of_elements(webrtc_s *webrtc, webrtc_gst_slot_s *source, int ssrc, bool need_capsfilter, GList **element_list, bool is_audio);
 GstCaps *_make_default_encoded_caps(webrtc_gst_slot_s *source, int ssrc, webrtc_ini_s *ini, gchar **media_type);
 int _set_encoder_element_bitrate(GstElement *encoder, int target_bitrate);
index c1c3b06571692c47e8e349f848a46bf69e8f3570..367c6630a5c84d39eb9656f15c51bba8f5560e1a 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    1.1.12
+Version:    1.1.13
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index fec84a587cbb9935eaf64ba1dd4612dbf2ef59ed..ba7d4eea69300d71b4e69d958e0d12d815975e3f 100644 (file)
@@ -323,6 +323,8 @@ static int __create_rest_of_elements_for_encoded_format(webrtc_s *webrtc, webrtc
                goto error;
        APPEND_ELEMENT(*element_list, payloader);
 
+       _update_payloader_vp8_picture_id_mode(payloader);
+
        if (!(queue = _create_element(DEFAULT_ELEMENT_QUEUE, NULL)))
                goto error;
        APPEND_ELEMENT(*element_list, queue);
index fc61ee6b210966e3c5c8c75a0ebb7fcc2c7f9972..e54998745fe6be91a2c3c06024a89df40b266cac 100644 (file)
@@ -887,6 +887,25 @@ GstElement *_prepare_videorate(webrtc_gst_slot_s *source, int ssrc, GList **elem
        return videorateCapsfilter;
 }
 
+void _update_payloader_vp8_picture_id_mode(GstElement *payloader)
+{
+       const gchar *factory_name;
+
+       ASSERT(payloader);
+
+       factory_name = GST_OBJECT_NAME(gst_element_get_factory(payloader));
+       if (g_strcmp0(factory_name, "rtpvp8pay"))
+               return;
+
+       /* NOTE: picture-id-mode has been set for compatibility with mediasoup.*/
+       #define VP8_PAYLOADER_7BIT_PICTURE_ID 1 /* 7-bit Picture ID */
+       g_object_set(G_OBJECT(payloader),
+               "picture-id-mode", VP8_PAYLOADER_7BIT_PICTURE_ID,
+               NULL);
+
+       LOG_DEBUG("[%s] set picture-id-mode [%d]", factory_name, VP8_PAYLOADER_7BIT_PICTURE_ID);
+}
+
 int _create_rest_of_elements(webrtc_s *webrtc, webrtc_gst_slot_s *source, int ssrc, bool need_capsfilter, GList **element_list, bool is_audio)
 {
        GstElement *encoder = NULL;
@@ -979,17 +998,8 @@ skip_encoder:
                goto error;
        APPEND_ELEMENT(*element_list, payloader);
        if (!source->av[idx].payloader_factory_name) {
-               GstElementFactory *factory = gst_element_get_factory(payloader);
-               source->av[idx].payloader_factory_name = g_strdup(GST_OBJECT_NAME(factory));
-               if (!g_strcmp0(source->av[idx].payloader_factory_name, "rtpvp8pay")) {
-                       /* NOTE: picture-id-mode has been set for compatibility with mediasoup.*/
-                       #define VP8_PAYLOADER_7BIT_PICTURE_ID 1 /* 7-bit Picture ID */
-                       g_object_set(G_OBJECT(payloader),
-                               "picture-id-mode", VP8_PAYLOADER_7BIT_PICTURE_ID,
-                               NULL);
-                       LOG_DEBUG("[%s] set picture-id-mode [%d]",
-                               source->av[idx].payloader_factory_name, VP8_PAYLOADER_7BIT_PICTURE_ID);
-               }
+               source->av[idx].payloader_factory_name = g_strdup(GST_OBJECT_NAME(gst_element_get_factory(payloader)));
+               _update_payloader_vp8_picture_id_mode(payloader);
        }
 
        if (!is_simulcast) {