}
}
+static void __decodebin_element_added_cb(GstElement *decodebin, GstElement *element, gpointer user_data)
+{
+ gchar *factory_name = NULL;
+
+ RET_IF(decodebin == NULL, "decodebin is NULL");
+ RET_IF(element == NULL, "element is NULL");
+
+ factory_name = GST_OBJECT_NAME(gst_element_get_factory(element));
+
+ LOG_INFO("element[name: %s] was added to decodebin", GST_ELEMENT_NAME(element));
+
+ if (g_strrstr(factory_name, "rtpvp8depay")) {
+ LOG_INFO("set wait-for-keyframe to rtpvp8depay");
+ g_object_set(G_OBJECT(element), "wait-for-keyframe", TRUE, NULL);
+ }
+}
+
static void __decodebin_pad_added_cb(GstElement *decodebin, GstPad *new_pad, gpointer user_data)
{
int ret = WEBRTC_ERROR_NONE;
g_signal_connect(decodebin, "pad-added", G_CALLBACK(__decodebin_pad_added_cb), webrtc);
g_signal_connect(decodebin, "autoplug-select", G_CALLBACK(__decodebin_autoplug_select_cb), webrtc);
+ g_signal_connect(decodebin, "element-added", G_CALLBACK(__decodebin_element_added_cb), NULL);
ret = _add_no_target_ghostpad_to_slot(sink, FALSE, &sink_pad);
if (ret != WEBRTC_ERROR_NONE)