Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuo, Yejun <yejun.guo@intel.com>2019-04-25 05:14:33 +0300
committerPedro Arthur <bygrandao@gmail.com>2019-05-08 18:33:00 +0300
commit25c1cd909fa6c8b6b778dc24192dc3ec780324b0 (patch)
treeb428c01522b2935d0b6af414580edcdf39370093 /libavfilter/dnn_backend_native.c
parent7adfb6132e0823de06f92ecbcb485eeb4260d407 (diff)
libavfilter/dnn: support multiple outputs for tensorflow model
some models such as ssd, yolo have more than one output. the clean up code in this patch is a little complex, it is because that set_input_output_tf could be called for many times together with ff_dnn_execute_model_tf, we have to clean resources for the case that the two interfaces are called interleaved. Signed-off-by: Guo, Yejun <yejun.guo@intel.com> Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
Diffstat (limited to 'libavfilter/dnn_backend_native.c')
-rw-r--r--libavfilter/dnn_backend_native.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/libavfilter/dnn_backend_native.c b/libavfilter/dnn_backend_native.c
index 18735c025c..8a83c63c73 100644
--- a/libavfilter/dnn_backend_native.c
+++ b/libavfilter/dnn_backend_native.c
@@ -25,7 +25,7 @@
#include "dnn_backend_native.h"
-static DNNReturnType set_input_output_native(void *model, DNNData *input, const char *input_name, const char *output_name)
+static DNNReturnType set_input_output_native(void *model, DNNData *input, const char *input_name, const char **output_names, uint32_t nb_output)
{
ConvolutionalNetwork *network = (ConvolutionalNetwork *)model;
InputParams *input_params;
@@ -275,7 +275,7 @@ static void depth_to_space(const float *input, float *output, int block_size, in
}
}
-DNNReturnType ff_dnn_execute_model_native(const DNNModel *model, DNNData *output)
+DNNReturnType ff_dnn_execute_model_native(const DNNModel *model, DNNData *outputs, uint32_t nb_output)
{
ConvolutionalNetwork *network = (ConvolutionalNetwork *)model->model;
int cur_width, cur_height, cur_channels;
@@ -317,10 +317,13 @@ DNNReturnType ff_dnn_execute_model_native(const DNNModel *model, DNNData *output
}
}
- output->data = network->layers[network->layers_num - 1].output;
- output->height = cur_height;
- output->width = cur_width;
- output->channels = cur_channels;
+ // native mode does not support multiple outputs yet
+ if (nb_output > 1)
+ return DNN_ERROR;
+ outputs[0].data = network->layers[network->layers_num - 1].output;
+ outputs[0].height = cur_height;
+ outputs[0].width = cur_width;
+ outputs[0].channels = cur_channels;
return DNN_SUCCESS;
}