mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-25 11:11:08 +00:00
tensordecoders: Move decoder out of the ONNX plugin
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6000>
This commit is contained in:
parent
03fd6fadbc
commit
8fa4c8f2f0
9 changed files with 148 additions and 9 deletions
|
@ -245050,6 +245050,86 @@
|
||||||
"tracers": {},
|
"tracers": {},
|
||||||
"url": "Unknown package origin"
|
"url": "Unknown package origin"
|
||||||
},
|
},
|
||||||
|
"tensordecoders": {
|
||||||
|
"description": "Tensor decoders elements",
|
||||||
|
"elements": {
|
||||||
|
"ssdobjectdetector": {
|
||||||
|
"author": "Aaron Boxer <aaron.boxer@collabora.com>, Marcus Edel <marcus.edel@collabora.com>",
|
||||||
|
"description": "Apply tensor output from inference to detect objects in video frames",
|
||||||
|
"hierarchy": [
|
||||||
|
"GstSsdObjectDetector",
|
||||||
|
"GstBaseTransform",
|
||||||
|
"GstElement",
|
||||||
|
"GstObject",
|
||||||
|
"GInitiallyUnowned",
|
||||||
|
"GObject"
|
||||||
|
],
|
||||||
|
"klass": "TensorDecoder/Video",
|
||||||
|
"pad-templates": {
|
||||||
|
"sink": {
|
||||||
|
"caps": "video/x-raw:\n",
|
||||||
|
"direction": "sink",
|
||||||
|
"presence": "always"
|
||||||
|
},
|
||||||
|
"src": {
|
||||||
|
"caps": "video/x-raw:\n",
|
||||||
|
"direction": "src",
|
||||||
|
"presence": "always"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"label-file": {
|
||||||
|
"blurb": "Label file",
|
||||||
|
"conditionally-available": false,
|
||||||
|
"construct": false,
|
||||||
|
"construct-only": false,
|
||||||
|
"controllable": false,
|
||||||
|
"default": "NULL",
|
||||||
|
"mutable": "null",
|
||||||
|
"readable": true,
|
||||||
|
"type": "gchararray",
|
||||||
|
"writable": true
|
||||||
|
},
|
||||||
|
"score-threshold": {
|
||||||
|
"blurb": "Threshold for deciding when to remove boxes based on score",
|
||||||
|
"conditionally-available": false,
|
||||||
|
"construct": false,
|
||||||
|
"construct-only": false,
|
||||||
|
"controllable": false,
|
||||||
|
"default": "0.3",
|
||||||
|
"max": "1",
|
||||||
|
"min": "0",
|
||||||
|
"mutable": "null",
|
||||||
|
"readable": true,
|
||||||
|
"type": "gfloat",
|
||||||
|
"writable": true
|
||||||
|
},
|
||||||
|
"size-threshold": {
|
||||||
|
"blurb": "Threshold for deciding when to remove boxes based on proportion of the image",
|
||||||
|
"conditionally-available": false,
|
||||||
|
"construct": false,
|
||||||
|
"construct-only": false,
|
||||||
|
"controllable": false,
|
||||||
|
"default": "0.9",
|
||||||
|
"max": "1",
|
||||||
|
"min": "0",
|
||||||
|
"mutable": "null",
|
||||||
|
"readable": true,
|
||||||
|
"type": "gfloat",
|
||||||
|
"writable": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rank": "primary"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"filename": "gsttensordecoders",
|
||||||
|
"license": "LGPL",
|
||||||
|
"other-types": {},
|
||||||
|
"package": "GStreamer Bad Plug-ins",
|
||||||
|
"source": "gst-plugins-bad",
|
||||||
|
"tracers": {},
|
||||||
|
"url": "Unknown package origin"
|
||||||
|
},
|
||||||
"timecode": {
|
"timecode": {
|
||||||
"description": "Timecode-related elements",
|
"description": "Timecode-related elements",
|
||||||
"elements": {
|
"elements": {
|
||||||
|
|
|
@ -24,16 +24,12 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "decoders/gstssdobjectdetector.h"
|
|
||||||
#include "gstonnxinference.h"
|
#include "gstonnxinference.h"
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
plugin_init (GstPlugin * plugin)
|
plugin_init (GstPlugin * plugin)
|
||||||
{
|
{
|
||||||
gboolean success = GST_ELEMENT_REGISTER (ssd_object_detector, plugin);
|
return GST_ELEMENT_REGISTER (onnx_inference, plugin);
|
||||||
success |= GST_ELEMENT_REGISTER (onnx_inference, plugin);
|
|
||||||
|
|
||||||
return success;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
|
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
|
||||||
|
|
|
@ -15,7 +15,6 @@ endif
|
||||||
if onnxrt_dep.found()
|
if onnxrt_dep.found()
|
||||||
gstonnx = library('gstonnx',
|
gstonnx = library('gstonnx',
|
||||||
'gstonnx.c',
|
'gstonnx.c',
|
||||||
'decoders/gstssdobjectdetector.c',
|
|
||||||
'gstonnxinference.cpp',
|
'gstonnxinference.cpp',
|
||||||
'gstonnxclient.cpp',
|
'gstonnxclient.cpp',
|
||||||
c_args : gst_plugins_bad_args + extra_args,
|
c_args : gst_plugins_bad_args + extra_args,
|
||||||
|
@ -23,7 +22,7 @@ if onnxrt_dep.found()
|
||||||
link_args : noseh_link_args,
|
link_args : noseh_link_args,
|
||||||
include_directories : [configinc, libsinc, cuda_stubinc],
|
include_directories : [configinc, libsinc, cuda_stubinc],
|
||||||
dependencies : [gstbase_dep, gstvideo_dep, gstanalytics_dep, onnxrt_dep,
|
dependencies : [gstbase_dep, gstvideo_dep, gstanalytics_dep, onnxrt_dep,
|
||||||
libm, gio_dep] + extra_deps,
|
libm] + extra_deps,
|
||||||
install : true,
|
install : true,
|
||||||
install_dir : plugins_install_dir,
|
install_dir : plugins_install_dir,
|
||||||
)
|
)
|
||||||
|
|
|
@ -11,7 +11,7 @@ foreach plugin : ['accurip', 'adpcmdec', 'adpcmenc', 'aiff', 'asfmux',
|
||||||
'mse', 'mxf', 'netsim', 'onvif', 'pcapparse', 'pnm', 'proxy',
|
'mse', 'mxf', 'netsim', 'onvif', 'pcapparse', 'pnm', 'proxy',
|
||||||
'rawparse', 'removesilence', 'rist', 'rtmp2', 'rtp', 'sdp',
|
'rawparse', 'removesilence', 'rist', 'rtmp2', 'rtp', 'sdp',
|
||||||
'segmentclip', 'siren', 'smooth', 'speed', 'subenc', 'switchbin',
|
'segmentclip', 'siren', 'smooth', 'speed', 'subenc', 'switchbin',
|
||||||
'timecode', 'transcode', 'unixfd', 'videofilters',
|
'tensordecoders', 'timecode', 'transcode', 'unixfd', 'videofilters',
|
||||||
'videoframe_audiolevel', 'videoparsers', 'videosignal',
|
'videoframe_audiolevel', 'videoparsers', 'videosignal',
|
||||||
'vmnc', 'y4m']
|
'vmnc', 'y4m']
|
||||||
if not get_option(plugin).disabled()
|
if not get_option(plugin).disabled()
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* GStreamer gstreamer-ssdobjectdetector
|
* GStreamer gstreamer-ssdobjectdetector
|
||||||
* Copyright (C) 2021 Collabora Ltd.
|
* Copyright (C) 2021 Collabora Ltd.
|
||||||
*
|
*
|
||||||
* gstssdobjectdetector.cpp
|
* gstssdobjectdetector.c
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Library General Public
|
* modify it under the terms of the GNU Library General Public
|
|
@ -0,0 +1,49 @@
|
||||||
|
/* GStreamer object detection overlay
|
||||||
|
* Copyright (C) <2024> Collabora Ltd.
|
||||||
|
* @author: Daniel Morin <daniel.morin@collabora.com>
|
||||||
|
*
|
||||||
|
* gsttensordecoders.c
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Library General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Library General Public
|
||||||
|
* License along with this library; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "gstssdobjectdetector.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION:plugin-tensordecoders
|
||||||
|
*
|
||||||
|
* Tensor decoders
|
||||||
|
*
|
||||||
|
* Since: 1.26
|
||||||
|
*/
|
||||||
|
static gboolean
|
||||||
|
plugin_init (GstPlugin * plugin)
|
||||||
|
{
|
||||||
|
gboolean ret = FALSE;
|
||||||
|
ret |= GST_ELEMENT_REGISTER (ssd_object_detector, plugin);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
|
||||||
|
GST_VERSION_MINOR,
|
||||||
|
tensordecoders,
|
||||||
|
"Tensor decoders elements",
|
||||||
|
plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
|
14
subprojects/gst-plugins-bad/gst/tensordecoders/meson.build
Normal file
14
subprojects/gst-plugins-bad/gst/tensordecoders/meson.build
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
tensordecoders_sources = [
|
||||||
|
'gsttensordecoders.c',
|
||||||
|
'gstssdobjectdetector.c'
|
||||||
|
]
|
||||||
|
|
||||||
|
gsttensordecoders = library('gsttensordecoders',
|
||||||
|
tensordecoders_sources,
|
||||||
|
c_args : gst_plugins_bad_args,
|
||||||
|
include_directories : [configinc],
|
||||||
|
dependencies : [gstbase_dep, gstvideo_dep, gstanalytics_dep, gio_dep, libm],
|
||||||
|
install : true,
|
||||||
|
install_dir : plugins_install_dir,
|
||||||
|
)
|
||||||
|
plugins += [gsttensordecoders]
|
|
@ -67,6 +67,7 @@ option('smooth', type : 'feature', value : 'auto')
|
||||||
option('speed', type : 'feature', value : 'auto')
|
option('speed', type : 'feature', value : 'auto')
|
||||||
option('subenc', type : 'feature', value : 'auto')
|
option('subenc', type : 'feature', value : 'auto')
|
||||||
option('switchbin', type : 'feature', value : 'auto')
|
option('switchbin', type : 'feature', value : 'auto')
|
||||||
|
option('tensordecoders', type : 'feature', value : 'auto')
|
||||||
option('timecode', type : 'feature', value : 'auto')
|
option('timecode', type : 'feature', value : 'auto')
|
||||||
option('unixfd', type : 'feature', value : 'auto')
|
option('unixfd', type : 'feature', value : 'auto')
|
||||||
option('videofilters', type : 'feature', value : 'auto')
|
option('videofilters', type : 'feature', value : 'auto')
|
||||||
|
|
Loading…
Reference in a new issue