You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-11-29 05:57:37 +02:00
lavfi/dnn: refine dnn interface to add DNNExecBaseParams
Different function type of model requires different parameters, for example, object detection detects lots of objects (cat/dog/...) in the frame, and classifcation needs to know which object (cat or dog) it is going to classify. The current interface needs to add a new function with more parameters to support new requirement, with this change, we can just add a new struct (for example DNNExecClassifyParams) based on DNNExecBaseParams, and so we can continue to use the current interface execute_model just with params changed.
This commit is contained in:
@@ -63,6 +63,14 @@ typedef struct DNNData{
|
||||
DNNColorOrder order;
|
||||
} DNNData;
|
||||
|
||||
typedef struct DNNExecBaseParams {
|
||||
const char *input_name;
|
||||
const char **output_names;
|
||||
uint32_t nb_output;
|
||||
AVFrame *in_frame;
|
||||
AVFrame *out_frame;
|
||||
} DNNExecBaseParams;
|
||||
|
||||
typedef int (*FramePrePostProc)(AVFrame *frame, DNNData *model, AVFilterContext *filter_ctx);
|
||||
typedef int (*DetectPostProc)(AVFrame *frame, DNNData *output, uint32_t nb, AVFilterContext *filter_ctx);
|
||||
|
||||
@@ -96,11 +104,9 @@ typedef struct DNNModule{
|
||||
// Loads model and parameters from given file. Returns NULL if it is not possible.
|
||||
DNNModel *(*load_model)(const char *model_filename, DNNFunctionType func_type, const char *options, AVFilterContext *filter_ctx);
|
||||
// Executes model with specified input and output. Returns DNN_ERROR otherwise.
|
||||
DNNReturnType (*execute_model)(const DNNModel *model, const char *input_name, AVFrame *in_frame,
|
||||
const char **output_names, uint32_t nb_output, AVFrame *out_frame);
|
||||
DNNReturnType (*execute_model)(const DNNModel *model, DNNExecBaseParams *exec_params);
|
||||
// Executes model with specified input and output asynchronously. Returns DNN_ERROR otherwise.
|
||||
DNNReturnType (*execute_model_async)(const DNNModel *model, const char *input_name, AVFrame *in_frame,
|
||||
const char **output_names, uint32_t nb_output, AVFrame *out_frame);
|
||||
DNNReturnType (*execute_model_async)(const DNNModel *model, DNNExecBaseParams *exec_params);
|
||||
// Retrieve inference result.
|
||||
DNNAsyncStatusType (*get_async_result)(const DNNModel *model, AVFrame **in, AVFrame **out);
|
||||
// Flush all the pending tasks.
|
||||
|
||||
Reference in New Issue
Block a user