FFmpeg
Loading...
Searching...
No Matches
dnn_backend_openvino.c File Reference

DNN OpenVINO backend implementation. More...

#include "dnn_io_proc.h"
#include "libavformat/avio.h"
#include "libavutil/avassert.h"
#include "libavutil/cpu.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "libavutil/avstring.h"
#include "libavutil/detection_bbox.h"
#include "safe_queue.h"
#include <c_api/ie_c_api.h>
#include "dnn_backend_common.h"

Go to the source code of this file.

Data Structures

struct  OVModel
 
struct  OVRequestItem
 

Macros

#define APPEND_STRING(generated_string, iterate_string)
 
#define OFFSET(x)
 
#define FLAGS   AV_OPT_FLAG_FILTERING_PARAM
 

Functions

static DNNDataType precision_to_datatype (precision_e precision)
 
static int get_datatype_size (DNNDataType dt)
 
static int fill_model_input_ov (OVModel *ov_model, OVRequestItem *request)
 
static void infer_completion_callback (void *args)
 
static void dnn_free_model_ov (DNNModel **model)
 
static int init_model_ov (OVModel *ov_model, const char *input_name, const char **output_names, int nb_outputs)
 
static int execute_model_ov (OVRequestItem *request, Queue *inferenceq)
 
static int get_input_ov (DNNModel *model, DNNData *input, const char *input_name)
 
static int contain_valid_detection_bbox (AVFrame *frame)
 
static int extract_lltask_from_task (DNNFunctionType func_type, TaskItem *task, Queue *lltask_queue, DNNExecBaseParams *exec_params)
 
static int get_output_ov (DNNModel *model, const char *input_name, int input_width, int input_height, const char *output_name, int *output_width, int *output_height)
 
static DNNModeldnn_load_model_ov (DnnContext *ctx, DNNFunctionType func_type, AVFilterContext *filter_ctx)
 
static int dnn_execute_model_ov (const DNNModel *model, DNNExecBaseParams *exec_params)
 
static DNNAsyncStatusType dnn_get_result_ov (const DNNModel *model, AVFrame **in, AVFrame **out)
 
static int dnn_flush_ov (const DNNModel *model)
 

Variables

static const AVOption dnn_openvino_options []
 
const DNNModule ff_dnn_backend_openvino
 

Detailed Description

DNN OpenVINO backend implementation.

Definition in file dnn_backend_openvino.c.

Macro Definition Documentation

◆ APPEND_STRING

#define APPEND_STRING ( generated_string,
iterate_string )
Value:
generated_string = generated_string ? av_asprintf("%s %s", generated_string, iterate_string) : \
av_asprintf("%s", iterate_string);
char * av_asprintf(const char *fmt,...)
Definition avstring.c:115

Definition at line 80 of file dnn_backend_openvino.c.

Referenced by dnn_load_model_ov(), and init_model_ov().

◆ OFFSET

#define OFFSET ( x)
Value:
offsetof(OVOptions, x)

Definition at line 84 of file dnn_backend_openvino.c.

◆ FLAGS

#define FLAGS   AV_OPT_FLAG_FILTERING_PARAM

Definition at line 85 of file dnn_backend_openvino.c.

Function Documentation

◆ precision_to_datatype()

static DNNDataType precision_to_datatype ( precision_e precision)
static

◆ get_datatype_size()

static int get_datatype_size ( DNNDataType dt)
static

Definition at line 161 of file dnn_backend_openvino.c.

Referenced by fill_model_input_ov(), and infer_completion_callback().

◆ fill_model_input_ov()

static int fill_model_input_ov ( OVModel * ov_model,
OVRequestItem * request )
static

Definition at line 175 of file dnn_backend_openvino.c.

Referenced by dnn_flush_ov(), and execute_model_ov().

◆ infer_completion_callback()

static void infer_completion_callback ( void * args)
static

Definition at line 333 of file dnn_backend_openvino.c.

Referenced by execute_model_ov().

◆ dnn_free_model_ov()

static void dnn_free_model_ov ( DNNModel ** model)
static

Definition at line 511 of file dnn_backend_openvino.c.

Referenced by dnn_load_model_ov().

◆ init_model_ov()

static int init_model_ov ( OVModel * ov_model,
const char * input_name,
const char ** output_names,
int nb_outputs )
static

Definition at line 577 of file dnn_backend_openvino.c.

Referenced by dnn_execute_model_ov(), and get_output_ov().

◆ execute_model_ov()

static int execute_model_ov ( OVRequestItem * request,
Queue * inferenceq )
static

Definition at line 964 of file dnn_backend_openvino.c.

Referenced by dnn_execute_model_ov(), and get_output_ov().

◆ get_input_ov()

static int get_input_ov ( DNNModel * model,
DNNData * input,
const char * input_name )
static

Definition at line 1061 of file dnn_backend_openvino.c.

Referenced by dnn_load_model_ov().

◆ contain_valid_detection_bbox()

static int contain_valid_detection_bbox ( AVFrame * frame)
static

Definition at line 1158 of file dnn_backend_openvino.c.

Referenced by extract_lltask_from_task().

◆ extract_lltask_from_task()

static int extract_lltask_from_task ( DNNFunctionType func_type,
TaskItem * task,
Queue * lltask_queue,
DNNExecBaseParams * exec_params )
static

Definition at line 1195 of file dnn_backend_openvino.c.

Referenced by dnn_execute_model_ov(), and get_output_ov().

◆ get_output_ov()

static int get_output_ov ( DNNModel * model,
const char * input_name,
int input_width,
int input_height,
const char * output_name,
int * output_width,
int * output_height )
static

Definition at line 1261 of file dnn_backend_openvino.c.

Referenced by dnn_load_model_ov().

◆ dnn_load_model_ov()

static DNNModel * dnn_load_model_ov ( DnnContext * ctx,
DNNFunctionType func_type,
AVFilterContext * filter_ctx )
static

Definition at line 1370 of file dnn_backend_openvino.c.

◆ dnn_execute_model_ov()

static int dnn_execute_model_ov ( const DNNModel * model,
DNNExecBaseParams * exec_params )
static

Definition at line 1473 of file dnn_backend_openvino.c.

◆ dnn_get_result_ov()

static DNNAsyncStatusType dnn_get_result_ov ( const DNNModel * model,
AVFrame ** in,
AVFrame ** out )
static

Definition at line 1561 of file dnn_backend_openvino.c.

◆ dnn_flush_ov()

static int dnn_flush_ov ( const DNNModel * model)
static

Definition at line 1567 of file dnn_backend_openvino.c.

Variable Documentation

◆ dnn_openvino_options

const AVOption dnn_openvino_options[]
static
Initial value:
= {
{ "input_resizable", "can input be resizable or not", OFFSET(input_resizable), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, FLAGS },
{ "layout", "input layout of model", OFFSET(layout), AV_OPT_TYPE_INT, { .i64 = DL_NONE}, DL_NONE, DL_NHWC, FLAGS, .unit = "layout" },
{ "none", "none", 0, AV_OPT_TYPE_CONST, { .i64 = DL_NONE }, 0, 0, FLAGS, .unit = "layout"},
{ "nchw", "nchw", 0, AV_OPT_TYPE_CONST, { .i64 = DL_NCHW }, 0, 0, FLAGS, .unit = "layout"},
{ "nhwc", "nhwc", 0, AV_OPT_TYPE_CONST, { .i64 = DL_NHWC }, 0, 0, FLAGS, .unit = "layout"},
{ "scale", "Add scale preprocess operation. Divide each element of input by specified value.", OFFSET(scale), AV_OPT_TYPE_FLOAT, { .dbl = 0 }, INT_MIN, INT_MAX, FLAGS},
{ "mean", "Add mean preprocess operation. Subtract specified value from each element of input.", OFFSET(mean), AV_OPT_TYPE_FLOAT, { .dbl = 0 }, INT_MIN, INT_MAX, FLAGS},
{ NULL }
}
#define FLAGS
Definition cmdutils.c:598
#define NULL
Definition coverity.c:32
@ DL_NCHW
@ DL_NHWC
@ DL_NONE
#define OFFSET(x)
@ AV_OPT_TYPE_CONST
Special option type for declaring named constants.
Definition opt.h:298
@ AV_OPT_TYPE_INT
Underlying C type is int.
Definition opt.h:258
@ AV_OPT_TYPE_FLOAT
Underlying C type is float.
Definition opt.h:270
@ AV_OPT_TYPE_BOOL
Underlying C type is int.
Definition opt.h:326
static void scale(int *out, const int *in, const int w, const int h, const int shift)
Definition intra.c:278
uint64_t layout
static float mean(const float *input, int size)
Definition vf_nnedi.c:861

Definition at line 86 of file dnn_backend_openvino.c.

◆ ff_dnn_backend_openvino

const DNNModule ff_dnn_backend_openvino
Initial value:
= {
.clazz = DNN_DEFINE_CLASS(dnn_openvino),
.type = DNN_OV,
.load_model = dnn_load_model_ov,
.execute_model = dnn_execute_model_ov,
.get_result = dnn_get_result_ov,
.flush = dnn_flush_ov,
.free_model = dnn_free_model_ov,
}
#define DNN_DEFINE_CLASS(fname)
static DNNAsyncStatusType dnn_get_result_ov(const DNNModel *model, AVFrame **in, AVFrame **out)
static DNNModel * dnn_load_model_ov(DnnContext *ctx, DNNFunctionType func_type, AVFilterContext *filter_ctx)
static int dnn_execute_model_ov(const DNNModel *model, DNNExecBaseParams *exec_params)
static int dnn_flush_ov(const DNNModel *model)
static void dnn_free_model_ov(DNNModel **model)
@ DNN_OV

Definition at line 1617 of file dnn_backend_openvino.c.