mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 00:36:51 +00:00
vapostproc: Build classification dynamically.
By default, the classification is "Converter/Filter/Colorspace/Scaler/Video/Hardware", but if VA post-processor driver supports either color balance, skin tone enhancement, sharpening or noise reduction, "Effect" is added. Thus, if vapostproc ranking is raised, it can be chosen by autovideosink. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2066>
This commit is contained in:
parent
041eee6c2e
commit
599257bf10
1 changed files with 24 additions and 4 deletions
|
@ -2021,6 +2021,7 @@ gst_va_vpp_class_init (gpointer g_class, gpointer class_data)
|
||||||
GstVaFilter *filter;
|
GstVaFilter *filter;
|
||||||
struct CData *cdata = class_data;
|
struct CData *cdata = class_data;
|
||||||
gchar *long_name;
|
gchar *long_name;
|
||||||
|
GString *klass;
|
||||||
|
|
||||||
parent_class = g_type_class_peek_parent (g_class);
|
parent_class = g_type_class_peek_parent (g_class);
|
||||||
|
|
||||||
|
@ -2033,10 +2034,7 @@ gst_va_vpp_class_init (gpointer g_class, gpointer class_data)
|
||||||
long_name = g_strdup ("VA-API Video Postprocessor");
|
long_name = g_strdup ("VA-API Video Postprocessor");
|
||||||
}
|
}
|
||||||
|
|
||||||
gst_element_class_set_metadata (element_class, long_name,
|
klass = g_string_new ("Converter/Filter/Colorspace/Scaler/Video/Hardware");
|
||||||
"Filter/Converter/Video/Scaler/Hardware",
|
|
||||||
"VA-API based video postprocessor",
|
|
||||||
"Víctor Jáquez <vjaquez@igalia.com>");
|
|
||||||
|
|
||||||
display = gst_va_display_drm_new_from_path (btrans_class->render_device_path);
|
display = gst_va_display_drm_new_from_path (btrans_class->render_device_path);
|
||||||
filter = gst_va_filter_new (display);
|
filter = gst_va_filter_new (display);
|
||||||
|
@ -2050,10 +2048,32 @@ gst_va_vpp_class_init (gpointer g_class, gpointer class_data)
|
||||||
gst_caps_set_features_simple (any_caps, gst_caps_features_new_any ());
|
gst_caps_set_features_simple (any_caps, gst_caps_features_new_any ());
|
||||||
caps = gst_caps_merge (caps, any_caps);
|
caps = gst_caps_merge (caps, any_caps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* add converter klass */
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
VAProcFilterType types[] = { VAProcFilterColorBalance,
|
||||||
|
VAProcFilterSkinToneEnhancement, VAProcFilterSharpening,
|
||||||
|
VAProcFilterNoiseReduction
|
||||||
|
};
|
||||||
|
|
||||||
|
for (i = 0; i < G_N_ELEMENTS (types); i++) {
|
||||||
|
if (gst_va_filter_has_filter (filter, types[i])) {
|
||||||
|
g_string_prepend (klass, "Effect/");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
caps = gst_caps_from_string (caps_str);
|
caps = gst_caps_from_string (caps_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gst_element_class_set_metadata (element_class, long_name, klass->str,
|
||||||
|
"VA-API based video postprocessor",
|
||||||
|
"Víctor Jáquez <vjaquez@igalia.com>");
|
||||||
|
|
||||||
|
g_string_free (klass, TRUE);
|
||||||
|
|
||||||
doc_caps = gst_caps_from_string (caps_str);
|
doc_caps = gst_caps_from_string (caps_str);
|
||||||
|
|
||||||
sink_pad_templ = gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
|
sink_pad_templ = gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
|
||||||
|
|
Loading…
Reference in a new issue