libavfilter/dnn: support multiple outputs for tensorflow model
[ffmpeg.git] / libavfilter / dnn_interface.h
index 909ba95..73d226e 100644 (file)
 #ifndef AVFILTER_DNN_INTERFACE_H
 #define AVFILTER_DNN_INTERFACE_H
 
+#include <stdint.h>
+
 typedef enum {DNN_SUCCESS, DNN_ERROR} DNNReturnType;
 
 typedef enum {DNN_NATIVE, DNN_TF} DNNBackendType;
 
-typedef enum {DNN_SRCNN} DNNDefaultModel;
-
 typedef struct DNNData{
-    floatdata;
+    float *data;
     int width, height, channels;
 } DNNData;
 
 typedef struct DNNModel{
     // Stores model that can be different for different backends.
-    voidmodel;
-    // Sets model input and output, while allocating additional memory for intermediate calculations.
+    void *model;
+    // Sets model input and output.
     // Should be called at least once before model execution.
-    DNNReturnType (*set_input_output)(void* model, const DNNData* input, const DNNData* output);
+    DNNReturnType (*set_input_output)(void *model, DNNData *input, const char *input_name, const char **output_names, uint32_t nb_output);
 } DNNModel;
 
 // Stores pointers to functions for loading, executing, freeing DNN models for one of the backends.
 typedef struct DNNModule{
     // Loads model and parameters from given file. Returns NULL if it is not possible.
-    DNNModel* (*load_model)(const char* model_filename);
-    // Loads one of the default models
-    DNNModel* (*load_default_model)(DNNDefaultModel model_type);
+    DNNModel *(*load_model)(const char *model_filename);
     // Executes model with specified input and output. Returns DNN_ERROR otherwise.
-    DNNReturnType (*execute_model)(const DNNModel* model);
+    DNNReturnType (*execute_model)(const DNNModel *model, DNNData *outputs, uint32_t nb_output);
     // Frees memory allocated for model.
-    void (*free_model)(DNNModel** model);
+    void (*free_model)(DNNModel **model);
 } DNNModule;
 
 // Initializes DNNModule depending on chosen backend.
-DNNModuleff_get_dnn_module(DNNBackendType backend_type);
+DNNModule *ff_get_dnn_module(DNNBackendType backend_type);
 
 #endif