factory_name = GST_OBJECT_NAME(factory);
klass = gst_element_factory_get_metadata(factory, GST_ELEMENT_METADATA_KLASS);
- ms_debug("Decodebin: found new element [%s] to link [%s]", factory_name, klass);
+ ms_debug("Found new element [%s] to link [%s]", factory_name, klass);
if (ms_streamer->ini.exclude_elem_names) {
- /* Search if such plugin must be excluded */
for (index = 0; ms_streamer->ini.exclude_elem_names[index]; ++index) {
if (g_strrstr(factory_name, ms_streamer->ini.exclude_elem_names[index])) {
- ms_debug("Decodebin: skipping [%s] as excluded", factory_name);
- ms_debug_fleave();
-
+ ms_debug("Skipping [%s] as excluded", factory_name);
return GST_AUTOPLUG_SELECT_SKIP;
}
}
+ }
+ if (g_strcmp0(klass, "Codec/Decoder/Video/Hardware") == 0) {
+ gchar **zerocopy_node_names = NULL;
+ gboolean found = false;
+ if (!ms_ini_get_boolean("general:use zerocopy", DEFAULT_USE_ZEROCOPY)) {
+ ms_debug("Skipping [%s] because use zerocopy is false", factory_name);
+ return GST_AUTOPLUG_SELECT_SKIP;
+ }
+ ms_ini_read_list("general:zerocopy node names", &zerocopy_node_names);
+ found = (zerocopy_node_names && g_strv_contains((const gchar * const *)zerocopy_node_names, MEDIASTREAMER_DECODEBIN_TYPE_DECODER));
+ g_strfreev(zerocopy_node_names);
+ if (!found) {
+ ms_debug("Skipping [%s] which is not specified in zerocopy node names", factory_name);
+ return GST_AUTOPLUG_SELECT_SKIP;
+ }
+ ms_debug("[%s] can be used", factory_name);
}
if (ms_streamer->ini.resource_required_elem_names) {
/* Try to acquire resources before adding element */
for (index = 0; ms_streamer->ini.resource_required_elem_names[index]; ++index) {
if (g_strrstr(factory_name, ms_streamer->ini.resource_required_elem_names[index])) {
- ms_debug("Decodebin: trying to acquire resource for [%s] element", factory_name);
+ ms_debug("Trying to acquire resource for [%s] element", factory_name);
if (MM_RESOURCE_MANAGER_ERROR_NONE !=
mm_resource_manager_mark_for_acquire(ms_streamer->resource_manager,