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);
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;
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) {