Skip to content

Commit 4e06e0c

Browse files
committed
remove support for deprecated encoders
1 parent 6aee04d commit 4e06e0c

1 file changed

Lines changed: 13 additions & 114 deletions

File tree

obs-vaapi.c

Lines changed: 13 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -142,23 +142,15 @@ static gchar *get_device_name(gchar *device_name)
142142

143143
static const char *get_name(void *type_data)
144144
{
145-
gchar **fields = g_regex_split_simple("(obs-va-va|obs-vaapi-vaapi)(renderD\\d+)?(h264|h265|av1)(lp)?enc",
146-
type_data, 0, 0);
145+
gchar **fields = g_regex_split_simple("(obs-va-va)(renderD\\d+)?(h264|h265|av1)(lp)?enc", type_data, 0, 0);
147146

148-
gchar *devname = NULL;
147+
gchar *devname = get_device_name(g_strcmp0(fields[2], "") == 0 ? "renderD128" : fields[2]);
149148

150-
if (g_strcmp0(fields[1], "obs-va-va") == 0) {
151-
devname = get_device_name(g_strcmp0(fields[2], "") == 0 ? "renderD128" : fields[2]);
152-
}
153-
154-
gchar *name = g_strdup_printf("VAAPI %s %s%s%s%s",
149+
gchar *name = g_strdup_printf("VAAPI %s on %s%s",
155150
g_strcmp0(fields[3], "h264") == 0 ? "H.264"
156151
: g_strcmp0(fields[3], "h265") == 0 ? "H.265"
157152
: "AV1",
158-
g_strcmp0(fields[1], "obs-va-va") == 0 ? "on " : "",
159-
g_strcmp0(fields[1], "obs-vaapi-vaapi") == 0 ? "" : devname,
160-
g_strcmp0(fields[4], "lp") == 0 ? " (Low Power)" : "",
161-
g_strcmp0(fields[1], "obs-vaapi-vaapi") == 0 ? " (Legacy)" : "");
153+
devname, g_strcmp0(fields[4], "lp") == 0 ? " (Low Power)" : "");
162154

163155
g_free(devname);
164156
g_strfreev(fields);
@@ -267,24 +259,17 @@ static void *create(obs_data_t *settings, obs_encoder_t *encoder)
267259
GstElement *vaapiencoder = NULL;
268260
GstElement *parser = NULL;
269261

270-
if (g_str_has_prefix(obs_encoder_get_id(encoder), "obs-va-")) {
271-
gchar **fields = g_regex_split_simple("obs-va-va(renderD\\d+)?.*", obs_encoder_get_id(encoder), 0, 0);
262+
gchar **fields = g_regex_split_simple("obs-va-va(renderD\\d+)?.*", obs_encoder_get_id(encoder), 0, 0);
272263

273-
gchar *tmp = g_strdup_printf("va%spostproc", fields[1]);
274-
g_strfreev(fields);
264+
gchar *tmp = g_strdup_printf("va%spostproc", fields[1]);
265+
g_strfreev(fields);
275266

276-
vaapipostproc = gst_element_factory_make(tmp, NULL);
277-
g_free(tmp);
267+
vaapipostproc = gst_element_factory_make(tmp, NULL);
268+
g_free(tmp);
278269

279-
gst_util_set_object_arg(G_OBJECT(vaapipostproc), "scale-method", "hq");
270+
gst_util_set_object_arg(G_OBJECT(vaapipostproc), "scale-method", "hq");
280271

281-
vaapiencoder = gst_element_factory_make(obs_encoder_get_id(encoder) + strlen("obs-va-"), NULL);
282-
} else if (g_str_has_prefix(obs_encoder_get_id(encoder), "obs-vaapi-")) {
283-
g_setenv("GST_VAAPI_DRM_DEVICE", obs_data_get_string(settings, "device"), TRUE);
284-
285-
vaapipostproc = gst_element_factory_make("vaapipostproc", NULL);
286-
vaapiencoder = gst_element_factory_make(obs_encoder_get_id(encoder) + strlen("obs-vaapi-"), NULL);
287-
}
272+
vaapiencoder = gst_element_factory_make(obs_encoder_get_id(encoder) + strlen("obs-va-"), NULL);
288273

289274
if (g_strcmp0(obs_encoder_get_codec(encoder), "h264") == 0) {
290275
parser = gst_element_factory_make("h264parse", NULL);
@@ -498,15 +483,7 @@ static bool encode(void *data, struct encoder_frame *frame, struct encoder_packe
498483

499484
static void get_defaults2(obs_data_t *settings, void *type_data)
500485
{
501-
GstElement *encoder = NULL;
502-
503-
if (g_str_has_prefix(type_data, "obs-va-")) {
504-
encoder = gst_element_factory_make(type_data + strlen("obs-va-"), NULL);
505-
} else if (g_str_has_prefix(type_data, "obs-vaapi-")) {
506-
encoder = gst_element_factory_make(type_data + strlen("obs-vaapi-"), NULL);
507-
508-
obs_data_set_default_string(settings, "device", "");
509-
}
486+
GstElement *encoder = gst_element_factory_make(type_data + strlen("obs-va-"), NULL);
510487

511488
guint num_properties;
512489
GParamSpec **property_specs = g_object_class_list_properties(G_OBJECT_GET_CLASS(encoder), &num_properties);
@@ -599,63 +576,13 @@ static void get_defaults2(obs_data_t *settings, void *type_data)
599576
gst_object_unref(encoder);
600577
}
601578

602-
static void populate_devices(obs_property_t *prop)
603-
{
604-
struct dirent **list;
605-
int n = scandir("/dev/dri/by-path/", &list, scanfilter, versionsort);
606-
607-
obs_property_list_add_string(prop, "Default", "");
608-
609-
struct pci_access *pci = pci_alloc();
610-
pci_init(pci);
611-
612-
for (int i = 0; i < n; i++) {
613-
char device[1024] = {};
614-
int domain, bus, dev, fun;
615-
616-
sscanf(list[i]->d_name, "%*[^-]-%x:%x:%x.%x%*s", &domain, &bus, &dev, &fun);
617-
618-
struct pci_dev *pci_dev = pci_get_dev(pci, domain, bus, dev, fun);
619-
if (pci_dev == NULL) {
620-
obs_property_list_add_string(prop, list[i]->d_name, list[i]->d_name);
621-
continue;
622-
}
623-
624-
pci_fill_info(pci_dev, PCI_FILL_IDENT);
625-
pci_lookup_name(pci, device, sizeof(device), PCI_LOOKUP_DEVICE, pci_dev->vendor_id, pci_dev->device_id);
626-
pci_free_dev(pci_dev);
627-
628-
obs_property_list_add_string(prop, device, list[i]->d_name);
629-
}
630-
631-
pci_cleanup(pci);
632-
633-
while (n--) {
634-
free(list[n]);
635-
}
636-
free(list);
637-
}
638-
639579
static obs_properties_t *get_properties2(void *data, void *type_data)
640580
{
641-
GstElement *encoder = NULL;
581+
GstElement *encoder = gst_element_factory_make(type_data + strlen("obs-va-"), NULL);
642582
obs_property_t *property = NULL;
643583

644584
obs_properties_t *properties = obs_properties_create();
645585

646-
if (g_str_has_prefix(type_data, "obs-va-")) {
647-
encoder = gst_element_factory_make(type_data + strlen("obs-va-"), NULL);
648-
} else if (g_str_has_prefix(type_data, "obs-vaapi-")) {
649-
encoder = gst_element_factory_make(type_data + strlen("obs-vaapi-"), NULL);
650-
651-
property = obs_properties_add_list(properties, "device", "device", OBS_COMBO_TYPE_LIST,
652-
OBS_COMBO_FORMAT_STRING);
653-
654-
populate_devices(property);
655-
656-
obs_property_set_long_description(property, "Specify DRM device to use");
657-
}
658-
659586
guint num_properties;
660587
GParamSpec **property_specs = g_object_class_list_properties(G_OBJECT_GET_CLASS(encoder), &num_properties);
661588

@@ -820,34 +747,6 @@ MODULE_EXPORT bool obs_module_load(void)
820747

821748
gst_plugin_feature_list_free(list);
822749

823-
// vaapi.caps = OBS_ENCODER_CAP_DEPRECATED;
824-
825-
list = gst_registry_get_feature_list_by_plugin(gst_registry_get(), "vaapi");
826-
827-
for (GList *elem = list; elem != NULL; elem = elem->next) {
828-
GstPluginFeature *feature = elem->data;
829-
830-
gchar **fields =
831-
g_regex_split_simple("vaapi(h264|h265)enc", gst_plugin_feature_get_name(feature), 0, 0);
832-
if (g_strcmp0(fields[0], "") != 0) {
833-
g_strfreev(fields);
834-
continue;
835-
}
836-
if (g_strcmp0(fields[1], "h264") == 0) {
837-
vaapi.codec = "h264";
838-
} else {
839-
vaapi.codec = "hevc";
840-
}
841-
g_strfreev(fields);
842-
843-
vaapi.id = vaapi.type_data = g_strdup_printf("obs-vaapi-%s", gst_plugin_feature_get_name(feature));
844-
g_hash_table_insert(hash_table, vaapi.type_data, vaapi.type_data);
845-
obs_register_encoder(&vaapi);
846-
blog(LOG_INFO, "[obs-vaapi] found %s", gst_plugin_feature_get_name(feature));
847-
}
848-
849-
gst_plugin_feature_list_free(list);
850-
851750
return true;
852751
}
853752

0 commit comments

Comments
 (0)