mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 08:46:40 +00:00
va: enable vah265lpenc for low power mode H265 encoder.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>
This commit is contained in:
parent
2677d4c6db
commit
2f8ce208e8
1 changed files with 27 additions and 16 deletions
|
@ -2455,7 +2455,7 @@ _h265_decide_profile (GstVaH265Enc * self, VAProfile * _profile,
|
|||
continue;
|
||||
|
||||
if ((rt_format & gst_va_encoder_get_rtformat (base->encoder,
|
||||
profile, VAEntrypointEncSlice)) == 0)
|
||||
profile, GST_VA_BASE_ENC_ENTRYPOINT (base))) == 0)
|
||||
continue;
|
||||
|
||||
*_profile = profile;
|
||||
|
@ -4196,20 +4196,26 @@ gst_va_h265_enc_class_init (gpointer g_klass, gpointer class_data)
|
|||
GstVaEncoder *encoder;
|
||||
struct CData *cdata = class_data;
|
||||
gchar *long_name;
|
||||
const gchar *name, *desc;
|
||||
gint n_props = N_PROPERTIES;
|
||||
GParamFlags param_flags =
|
||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT;
|
||||
|
||||
if (cdata->description) {
|
||||
long_name = g_strdup_printf ("VA-API H.265 Encoder in %s",
|
||||
cdata->description);
|
||||
if (cdata->entrypoint == VAEntrypointEncSlice) {
|
||||
desc = "VA-API based H.265 video encoder";
|
||||
name = "VA-API H.265 Encoder";
|
||||
} else {
|
||||
long_name = g_strdup ("VA-API H.265 Encoder");
|
||||
desc = "VA-API based H.265 low power video encoder";
|
||||
name = "VA-API H.265 Low Power Encoder";
|
||||
}
|
||||
|
||||
if (cdata->description)
|
||||
long_name = g_strdup_printf ("%s in %s", name, cdata->description);
|
||||
else
|
||||
long_name = g_strdup (name);
|
||||
|
||||
gst_element_class_set_metadata (element_class, long_name,
|
||||
"Codec/Encoder/Video/Hardware", "VA-API based H.265 video encoder",
|
||||
"He Junyan <junyan.he@intel.com>");
|
||||
"Codec/Encoder/Video/Hardware", desc, "He Junyan <junyan.he@intel.com>");
|
||||
|
||||
sink_doc_caps = gst_caps_from_string (sink_caps_str);
|
||||
src_doc_caps = gst_caps_from_string (src_caps_str);
|
||||
|
@ -4528,11 +4534,6 @@ gst_va_h265_enc_register (GstPlugin * plugin, GstVaDevice * device,
|
|||
g_return_val_if_fail (entrypoint == VAEntrypointEncSlice ||
|
||||
entrypoint == VAEntrypointEncSliceLP, FALSE);
|
||||
|
||||
if (entrypoint == VAEntrypointEncSliceLP) {
|
||||
GST_WARNING ("low power H265 encoder is not supported now.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
cdata = g_new (struct CData, 1);
|
||||
cdata->entrypoint = entrypoint;
|
||||
cdata->description = NULL;
|
||||
|
@ -4547,8 +4548,13 @@ gst_va_h265_enc_register (GstPlugin * plugin, GstVaDevice * device,
|
|||
GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED);
|
||||
|
||||
type_info.class_data = cdata;
|
||||
type_name = g_strdup ("GstVaH265Enc");
|
||||
feature_name = g_strdup ("vah265enc");
|
||||
if (entrypoint == VAEntrypointEncSlice) {
|
||||
type_name = g_strdup ("GstVaH265Enc");
|
||||
feature_name = g_strdup ("vah265enc");
|
||||
} else {
|
||||
type_name = g_strdup ("GstVaH265LPEnc");
|
||||
feature_name = g_strdup ("vah265lpenc");
|
||||
}
|
||||
|
||||
/* The first encoder to be registered should use a constant name,
|
||||
* like vah265enc, for any additional encoders, we create unique
|
||||
|
@ -4557,8 +4563,13 @@ gst_va_h265_enc_register (GstPlugin * plugin, GstVaDevice * device,
|
|||
gchar *basename = g_path_get_basename (device->render_device_path);
|
||||
g_free (type_name);
|
||||
g_free (feature_name);
|
||||
type_name = g_strdup_printf ("GstVa%sH265Enc", basename);
|
||||
feature_name = g_strdup_printf ("va%sh265enc", basename);
|
||||
if (entrypoint == VAEntrypointEncSlice) {
|
||||
type_name = g_strdup_printf ("GstVa%sH265Enc", basename);
|
||||
feature_name = g_strdup_printf ("va%sh265enc", basename);
|
||||
} else {
|
||||
type_name = g_strdup_printf ("GstVa%sH265LPEnc", basename);
|
||||
feature_name = g_strdup_printf ("va%sh265lpenc", basename);
|
||||
}
|
||||
cdata->description = basename;
|
||||
/* lower rank for non-first device */
|
||||
if (rank > 0)
|
||||
|
|
Loading…
Reference in a new issue