[FFmpeg-devel] [PATCH V4 1/2] dnn/native: unify error return to DNN_ERROR

Ting Fu ting.fu at intel.com
Sun Aug 23 19:04:04 EEST 2020


Unify all error return as DNN_ERROR, in order to cease model executing
when return error in ff_dnn_execute_model_native layer_func.pf_exec

Signed-off-by: Ting Fu <ting.fu at intel.com>
---
V4:
    Rename NetworkContext to NativeContext
    Move pf_exec return DNN_ERROR from PATCH 2/2 to 1/2

 libavfilter/dnn/dnn_backend_native.c                   | 10 ++++++----
 libavfilter/dnn/dnn_backend_native_layer_avgpool.c     |  2 +-
 libavfilter/dnn/dnn_backend_native_layer_conv2d.c      |  4 ++--
 libavfilter/dnn/dnn_backend_native_layer_depth2space.c |  4 ++--
 libavfilter/dnn/dnn_backend_native_layer_mathbinary.c  |  2 +-
 libavfilter/dnn/dnn_backend_native_layer_mathunary.c   |  2 +-
 libavfilter/dnn/dnn_backend_native_layer_pad.c         |  4 ++--
 7 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/libavfilter/dnn/dnn_backend_native.c b/libavfilter/dnn/dnn_backend_native.c
index 0be9c0b53c..2f5095f2ee 100644
--- a/libavfilter/dnn/dnn_backend_native.c
+++ b/libavfilter/dnn/dnn_backend_native.c
@@ -268,10 +268,12 @@ DNNReturnType ff_dnn_execute_model_native(const DNNModel *model, DNNData *output
 
     for (layer = 0; layer < native_model->layers_num; ++layer){
         DNNLayerType layer_type = native_model->layers[layer].type;
-        layer_funcs[layer_type].pf_exec(native_model->operands,
-                                        native_model->layers[layer].input_operand_indexes,
-                                        native_model->layers[layer].output_operand_index,
-                                        native_model->layers[layer].params);
+        if (layer_funcs[layer_type].pf_exec(native_model->operands,
+                                            native_model->layers[layer].input_operand_indexes,
+                                            native_model->layers[layer].output_operand_index,
+                                            native_model->layers[layer].params) == DNN_ERROR) {
+            return DNN_ERROR;
+        }
     }
 
     for (uint32_t i = 0; i < nb; ++i) {
diff --git a/libavfilter/dnn/dnn_backend_native_layer_avgpool.c b/libavfilter/dnn/dnn_backend_native_layer_avgpool.c
index 8d4d8db98c..bd7bdb4c97 100644
--- a/libavfilter/dnn/dnn_backend_native_layer_avgpool.c
+++ b/libavfilter/dnn/dnn_backend_native_layer_avgpool.c
@@ -109,7 +109,7 @@ int dnn_execute_layer_avg_pool(DnnOperand *operands, const int32_t *input_operan
     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;
+        return DNN_ERROR;
     output = output_operand->data;
 
     for (int y = 0; y < height_end; y += kernel_strides) {
diff --git a/libavfilter/dnn/dnn_backend_native_layer_conv2d.c b/libavfilter/dnn/dnn_backend_native_layer_conv2d.c
index a2202e4073..25356901c2 100644
--- a/libavfilter/dnn/dnn_backend_native_layer_conv2d.c
+++ b/libavfilter/dnn/dnn_backend_native_layer_conv2d.c
@@ -114,10 +114,10 @@ int dnn_execute_layer_conv2d(DnnOperand *operands, const int32_t *input_operand_
     output_operand->data_type = operands[input_operand_index].data_type;
     output_operand->length = calculate_operand_data_length(output_operand);
     if (output_operand->length <= 0)
-        return -1;
+        return DNN_ERROR;
     output_operand->data = av_realloc(output_operand->data, output_operand->length);
     if (!output_operand->data)
-        return -1;
+        return DNN_ERROR;
     output = output_operand->data;
 
     av_assert0(channel == conv_params->input_num);
diff --git a/libavfilter/dnn/dnn_backend_native_layer_depth2space.c b/libavfilter/dnn/dnn_backend_native_layer_depth2space.c
index 2c8bddf23d..5a61025f7a 100644
--- a/libavfilter/dnn/dnn_backend_native_layer_depth2space.c
+++ b/libavfilter/dnn/dnn_backend_native_layer_depth2space.c
@@ -76,10 +76,10 @@ int dnn_execute_layer_depth2space(DnnOperand *operands, const int32_t *input_ope
     output_operand->data_type = operands[input_operand_index].data_type;
     output_operand->length = calculate_operand_data_length(output_operand);
     if (output_operand->length <= 0)
-        return -1;
+        return DNN_ERROR;
     output_operand->data = av_realloc(output_operand->data, output_operand->length);
     if (!output_operand->data)
-        return -1;
+        return DNN_ERROR;
     output = output_operand->data;
 
     for (y = 0; y < height; ++y){
diff --git a/libavfilter/dnn/dnn_backend_native_layer_mathbinary.c b/libavfilter/dnn/dnn_backend_native_layer_mathbinary.c
index dd42c329a9..bffa41cdda 100644
--- a/libavfilter/dnn/dnn_backend_native_layer_mathbinary.c
+++ b/libavfilter/dnn/dnn_backend_native_layer_mathbinary.c
@@ -176,6 +176,6 @@ int dnn_execute_layer_math_binary(DnnOperand *operands, const int32_t *input_ope
         }
         return 0;
     default:
-        return -1;
+        return DNN_ERROR;
     }
 }
diff --git a/libavfilter/dnn/dnn_backend_native_layer_mathunary.c b/libavfilter/dnn/dnn_backend_native_layer_mathunary.c
index 58ee0e9d3d..57bbd9d3e8 100644
--- a/libavfilter/dnn/dnn_backend_native_layer_mathunary.c
+++ b/libavfilter/dnn/dnn_backend_native_layer_mathunary.c
@@ -143,6 +143,6 @@ int dnn_execute_layer_math_unary(DnnOperand *operands, const int32_t *input_oper
             dst[i] = round(src[i]);
         return 0;
     default:
-        return -1;
+        return DNN_ERROR;
     }
 }
diff --git a/libavfilter/dnn/dnn_backend_native_layer_pad.c b/libavfilter/dnn/dnn_backend_native_layer_pad.c
index feaab001e8..5452d22878 100644
--- a/libavfilter/dnn/dnn_backend_native_layer_pad.c
+++ b/libavfilter/dnn/dnn_backend_native_layer_pad.c
@@ -112,10 +112,10 @@ int dnn_execute_layer_pad(DnnOperand *operands, const int32_t *input_operand_ind
     output_operand->data_type = operands[input_operand_index].data_type;
     output_operand->length = calculate_operand_data_length(output_operand);
     if (output_operand->length <= 0)
-        return -1;
+        return DNN_ERROR;
     output_operand->data = av_realloc(output_operand->data, output_operand->length);
     if (!output_operand->data)
-        return -1;
+        return DNN_ERROR;
     output = output_operand->data;
 
     // copy the original data
-- 
2.17.1



More information about the ffmpeg-devel mailing list