summaryrefslogtreecommitdiff
path: root/libavfilter/dnn/dnn_backend_native.c
diff options
context:
space:
mode:
authorGuo, Yejun <yejun.guo@intel.com>2019-09-05 14:00:46 +0800
committerPedro Arthur <bygrandao@gmail.com>2019-09-19 11:25:15 -0300
commit48133fad056e9173a39333fc5f7d4a724a47a028 (patch)
treeeec3d9483324435ec19e0444f6c5391e3c02393e /libavfilter/dnn/dnn_backend_native.c
parent24f507301b4774bb1b082c594d1ce8885b5cabd8 (diff)
libavfilter/dnn: separate depth_to_space layer from dnn_backend_native.c to a new file
the logic is that one layer in one separated source file to make the source files simple for maintaining. Signed-off-by: Guo, Yejun <yejun.guo@intel.com> Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
Diffstat (limited to 'libavfilter/dnn/dnn_backend_native.c')
-rw-r--r--libavfilter/dnn/dnn_backend_native.c44
1 files changed, 1 insertions, 43 deletions
diff --git a/libavfilter/dnn/dnn_backend_native.c b/libavfilter/dnn/dnn_backend_native.c
index 5dabd151c0..be548c6d46 100644
--- a/libavfilter/dnn/dnn_backend_native.c
+++ b/libavfilter/dnn/dnn_backend_native.c
@@ -27,6 +27,7 @@
#include "libavutil/avassert.h"
#include "dnn_backend_native_layer_pad.h"
#include "dnn_backend_native_layer_conv2d.h"
+#include "dnn_backend_native_layer_depth2space.h"
static DNNReturnType set_input_output_native(void *model, DNNInputData *input, const char *input_name, const char **output_names, uint32_t nb_output)
{
@@ -282,49 +283,6 @@ DNNModel *ff_dnn_load_model_native(const char *model_filename)
return model;
}
-static int depth_to_space(DnnOperand *operands, const int32_t *input_operand_indexes, int32_t output_operand_index, int block_size)
-{
- float *output;
- int32_t input_operand_index = input_operand_indexes[0];
- int number = operands[input_operand_index].dims[0];
- int height = operands[input_operand_index].dims[1];
- int width = operands[input_operand_index].dims[2];
- int channels = operands[input_operand_index].dims[3];
- const float *input = operands[input_operand_index].data;
-
- int y, x, by, bx, ch;
- int new_channels = channels / (block_size * block_size);
- int output_linesize = width * channels;
- int by_linesize = output_linesize / block_size;
- int x_linesize = new_channels * block_size;
-
- DnnOperand *output_operand = &operands[output_operand_index];
- output_operand->dims[0] = number;
- output_operand->dims[1] = height * block_size;
- output_operand->dims[2] = width * block_size;
- output_operand->dims[3] = new_channels;
- output_operand->length = calculate_operand_data_length(output_operand);
- output_operand->data = av_realloc(output_operand->data, output_operand->length);
- if (!output_operand->data)
- return -1;
- output = output_operand->data;
-
- for (y = 0; y < height; ++y){
- for (x = 0; x < width; ++x){
- for (by = 0; by < block_size; ++by){
- for (bx = 0; bx < block_size; ++bx){
- for (ch = 0; ch < new_channels; ++ch){
- output[by * by_linesize + x * x_linesize + bx * new_channels + ch] = input[ch];
- }
- input += new_channels;
- }
- }
- }
- output += output_linesize;
- }
- return 0;
-}
-
DNNReturnType ff_dnn_execute_model_native(const DNNModel *model, DNNData *outputs, uint32_t nb_output)
{
ConvolutionalNetwork *network = (ConvolutionalNetwork *)model->model;