libavfilter: Remove DNNReturnType from DNN Module

This patch removes all occurences of DNNReturnType from the DNN module.
This commit replaces DNN_SUCCESS by 0 (essentially the same), so the
functions with DNNReturnType now return 0 in case of success, the negative
values otherwise.

Signed-off-by: Shubhanshu Saxena <shubhanshu.e01@gmail.com>
Signed-off-by: Shubhanshu Saxena <shubhanshu.e01@gmail.com>
release/5.1
Shubhanshu Saxena 3 years ago committed by Guo Yejun
parent 1df77bab08
commit d0a999a0ab
  1. 10
      libavfilter/dnn/dnn_backend_common.c
  2. 8
      libavfilter/dnn/dnn_backend_common.h
  3. 16
      libavfilter/dnn/dnn_backend_native.c
  4. 2
      libavfilter/dnn/dnn_backend_native_layer_avgpool.c
  5. 4
      libavfilter/dnn/dnn_backend_native_layer_conv2d.c
  6. 2
      libavfilter/dnn/dnn_backend_native_layer_dense.c
  7. 2
      libavfilter/dnn/dnn_backend_native_layer_depth2space.c
  8. 48
      libavfilter/dnn/dnn_backend_openvino.c
  9. 56
      libavfilter/dnn/dnn_backend_tf.c
  10. 14
      libavfilter/dnn/dnn_io_proc.c
  11. 2
      libavfilter/dnn_interface.h
  12. 2
      libavfilter/vf_derain.c
  13. 4
      libavfilter/vf_dnn_classify.c
  14. 4
      libavfilter/vf_dnn_detect.c
  15. 8
      libavfilter/vf_dnn_processing.c
  16. 4
      libavfilter/vf_sr.c

@ -70,7 +70,7 @@ int ff_dnn_fill_task(TaskItem *task, DNNExecBaseParams *exec_params, void *backe
task->nb_output = exec_params->nb_output; task->nb_output = exec_params->nb_output;
task->output_names = exec_params->output_names; task->output_names = exec_params->output_names;
return DNN_SUCCESS; return 0;
} }
/** /**
@ -82,7 +82,7 @@ static void *async_thread_routine(void *args)
DNNAsyncExecModule *async_module = args; DNNAsyncExecModule *async_module = args;
void *request = async_module->args; void *request = async_module->args;
if (async_module->start_inference(request) != DNN_SUCCESS) { if (async_module->start_inference(request) != 0) {
return DNN_ASYNC_FAIL; return DNN_ASYNC_FAIL;
} }
async_module->callback(request); async_module->callback(request);
@ -105,7 +105,7 @@ int ff_dnn_async_module_cleanup(DNNAsyncExecModule *async_module)
async_module->start_inference = NULL; async_module->start_inference = NULL;
async_module->callback = NULL; async_module->callback = NULL;
async_module->args = NULL; async_module->args = NULL;
return DNN_SUCCESS; return 0;
} }
int ff_dnn_start_inference_async(void *ctx, DNNAsyncExecModule *async_module) int ff_dnn_start_inference_async(void *ctx, DNNAsyncExecModule *async_module)
@ -131,12 +131,12 @@ int ff_dnn_start_inference_async(void *ctx, DNNAsyncExecModule *async_module)
} }
#else #else
ret = async_module->start_inference(async_module->args); ret = async_module->start_inference(async_module->args);
if (ret != DNN_SUCCESS) { if (ret != 0) {
return ret; return ret;
} }
async_module->callback(async_module->args); async_module->callback(async_module->args);
#endif #endif
return DNN_SUCCESS; return 0;
} }
DNNAsyncStatusType ff_dnn_get_result_common(Queue *task_queue, AVFrame **in, AVFrame **out) DNNAsyncStatusType ff_dnn_get_result_common(Queue *task_queue, AVFrame **in, AVFrame **out)

@ -92,7 +92,7 @@ int ff_check_exec_params(void *ctx, DNNBackendType backend, DNNFunctionType func
* @param async flag for async execution. Must be 0 or 1 * @param async flag for async execution. Must be 0 or 1
* @param do_ioproc flag for IO processing. Must be 0 or 1 * @param do_ioproc flag for IO processing. Must be 0 or 1
* *
* @returns DNN_SUCCESS if successful or error code otherwise. * @returns 0 if successful or error code otherwise.
*/ */
int ff_dnn_fill_task(TaskItem *task, DNNExecBaseParams *exec_params, void *backend_model, int async, int do_ioproc); int ff_dnn_fill_task(TaskItem *task, DNNExecBaseParams *exec_params, void *backend_model, int async, int do_ioproc);
@ -101,7 +101,7 @@ int ff_dnn_fill_task(TaskItem *task, DNNExecBaseParams *exec_params, void *backe
* *
* @param async_module pointer to DNNAsyncExecModule module * @param async_module pointer to DNNAsyncExecModule module
* *
* @returns DNN_SUCCESS if successful or error code otherwise. * @returns 0 if successful or error code otherwise.
*/ */
int ff_dnn_async_module_cleanup(DNNAsyncExecModule *async_module); int ff_dnn_async_module_cleanup(DNNAsyncExecModule *async_module);
@ -117,7 +117,7 @@ int ff_dnn_async_module_cleanup(DNNAsyncExecModule *async_module);
* @param ctx pointer to the backend context * @param ctx pointer to the backend context
* @param async_module pointer to DNNAsyncExecModule module * @param async_module pointer to DNNAsyncExecModule module
* *
* @returns DNN_SUCCESS on the start of async inference or error code otherwise. * @returns 0 on the start of async inference or error code otherwise.
*/ */
int ff_dnn_start_inference_async(void *ctx, DNNAsyncExecModule *async_module); int ff_dnn_start_inference_async(void *ctx, DNNAsyncExecModule *async_module);
@ -146,7 +146,7 @@ DNNAsyncStatusType ff_dnn_get_result_common(Queue *task_queue, AVFrame **in, AVF
* @param input_width width of input frame * @param input_width width of input frame
* @param ctx pointer to the backend context * @param ctx pointer to the backend context
* *
* @returns DNN_SUCCESS if successful or error code otherwise. * @returns 0 if successful or error code otherwise.
*/ */
int ff_dnn_fill_gettingoutput_task(TaskItem *task, DNNExecBaseParams *exec_params, void *backend_model, int input_height, int input_width, void *ctx); int ff_dnn_fill_gettingoutput_task(TaskItem *task, DNNExecBaseParams *exec_params, void *backend_model, int input_height, int input_width, void *ctx);

@ -67,7 +67,7 @@ static int extract_lltask_from_task(TaskItem *task, Queue *lltask_queue)
av_freep(&lltask); av_freep(&lltask);
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
} }
return DNN_SUCCESS; return 0;
} }
static int get_input_native(void *model, DNNData *input, const char *input_name) static int get_input_native(void *model, DNNData *input, const char *input_name)
@ -87,7 +87,7 @@ static int get_input_native(void *model, DNNData *input, const char *input_name)
input->height = oprd->dims[1]; input->height = oprd->dims[1];
input->width = oprd->dims[2]; input->width = oprd->dims[2];
input->channels = oprd->dims[3]; input->channels = oprd->dims[3];
return DNN_SUCCESS; return 0;
} }
} }
@ -112,12 +112,12 @@ static int get_output_native(void *model, const char *input_name, int input_widt
}; };
ret = ff_dnn_fill_gettingoutput_task(&task, &exec_params, native_model, input_height, input_width, ctx); ret = ff_dnn_fill_gettingoutput_task(&task, &exec_params, native_model, input_height, input_width, ctx);
if (ret != DNN_SUCCESS) { if (ret != 0) {
goto err; goto err;
} }
ret = extract_lltask_from_task(&task, native_model->lltask_queue); ret = extract_lltask_from_task(&task, native_model->lltask_queue);
if (ret != DNN_SUCCESS) { if (ret != 0) {
av_log(ctx, AV_LOG_ERROR, "unable to extract last level task from task.\n"); av_log(ctx, AV_LOG_ERROR, "unable to extract last level task from task.\n");
goto err; goto err;
} }
@ -387,7 +387,7 @@ static int execute_model_native(Queue *lltask_queue)
native_model->layers[layer].output_operand_index, native_model->layers[layer].output_operand_index,
native_model->layers[layer].params, native_model->layers[layer].params,
&native_model->ctx); &native_model->ctx);
if (ret != DNN_SUCCESS) { if (ret != 0) {
av_log(ctx, AV_LOG_ERROR, "Failed to execute model\n"); av_log(ctx, AV_LOG_ERROR, "Failed to execute model\n");
goto err; goto err;
} }
@ -451,7 +451,7 @@ int ff_dnn_execute_model_native(const DNNModel *model, DNNExecBaseParams *exec_p
} }
ret = ff_dnn_fill_task(task, exec_params, native_model, ctx->options.async, 1); ret = ff_dnn_fill_task(task, exec_params, native_model, ctx->options.async, 1);
if (ret != DNN_SUCCESS) { if (ret != 0) {
av_freep(&task); av_freep(&task);
return ret; return ret;
} }
@ -463,7 +463,7 @@ int ff_dnn_execute_model_native(const DNNModel *model, DNNExecBaseParams *exec_p
} }
ret = extract_lltask_from_task(task, native_model->lltask_queue); ret = extract_lltask_from_task(task, native_model->lltask_queue);
if (ret != DNN_SUCCESS) { if (ret != 0) {
av_log(ctx, AV_LOG_ERROR, "unable to extract last level task from task.\n"); av_log(ctx, AV_LOG_ERROR, "unable to extract last level task from task.\n");
return ret; return ret;
} }
@ -477,7 +477,7 @@ int ff_dnn_flush_native(const DNNModel *model)
if (ff_queue_size(native_model->lltask_queue) == 0) { if (ff_queue_size(native_model->lltask_queue) == 0) {
// no pending task need to flush // no pending task need to flush
return DNN_SUCCESS; return 0;
} }
// for now, use sync node with flush operation // for now, use sync node with flush operation

@ -143,5 +143,5 @@ int ff_dnn_execute_layer_avg_pool(DnnOperand *operands, const int32_t *input_ope
} }
} }
return DNN_SUCCESS; return 0;
} }

@ -190,7 +190,7 @@ int ff_dnn_execute_layer_conv2d(DnnOperand *operands, const int32_t *input_opera
#if HAVE_PTHREAD_CANCEL #if HAVE_PTHREAD_CANCEL
int thread_num = (ctx->options.conv2d_threads <= 0 || ctx->options.conv2d_threads > av_cpu_count()) int thread_num = (ctx->options.conv2d_threads <= 0 || ctx->options.conv2d_threads > av_cpu_count())
? (av_cpu_count() + 1) : (ctx->options.conv2d_threads); ? (av_cpu_count() + 1) : (ctx->options.conv2d_threads);
int ret = DNN_SUCCESS, thread_stride; int ret = 0, thread_stride;
ThreadParam *thread_param; ThreadParam *thread_param;
#else #else
ThreadParam thread_param = { 0 }; ThreadParam thread_param = { 0 };
@ -260,6 +260,6 @@ int ff_dnn_execute_layer_conv2d(DnnOperand *operands, const int32_t *input_opera
thread_param.thread_end = height - pad_size; thread_param.thread_end = height - pad_size;
dnn_execute_layer_conv2d_thread(&thread_param); dnn_execute_layer_conv2d_thread(&thread_param);
return DNN_SUCCESS; return 0;
#endif #endif
} }

@ -147,5 +147,5 @@ int ff_dnn_execute_layer_dense(DnnOperand *operands, const int32_t *input_operan
output += dense_params->output_num; output += dense_params->output_num;
} }
} }
return DNN_SUCCESS; return 0;
} }

@ -98,5 +98,5 @@ int ff_dnn_execute_layer_depth2space(DnnOperand *operands, const int32_t *input_
} }
output += output_linesize; output += output_linesize;
} }
return DNN_SUCCESS; return 0;
} }

@ -191,7 +191,7 @@ static int fill_model_input_ov(OVModel *ov_model, OVRequestItem *request)
} }
ie_blob_free(&input_blob); ie_blob_free(&input_blob);
return DNN_SUCCESS; return 0;
} }
static void infer_completion_callback(void *args) static void infer_completion_callback(void *args)
@ -303,7 +303,7 @@ static void infer_completion_callback(void *args)
static int init_model_ov(OVModel *ov_model, const char *input_name, const char *output_name) static int init_model_ov(OVModel *ov_model, const char *input_name, const char *output_name)
{ {
int ret = DNN_SUCCESS; int ret = 0;
OVContext *ctx = &ov_model->ctx; OVContext *ctx = &ov_model->ctx;
IEStatusCode status; IEStatusCode status;
ie_available_devices_t a_dev; ie_available_devices_t a_dev;
@ -433,7 +433,7 @@ static int init_model_ov(OVModel *ov_model, const char *input_name, const char *
goto err; goto err;
} }
return DNN_SUCCESS; return 0;
err: err:
ff_dnn_free_model_ov(&ov_model->model); ff_dnn_free_model_ov(&ov_model->model);
@ -444,7 +444,7 @@ static int execute_model_ov(OVRequestItem *request, Queue *inferenceq)
{ {
IEStatusCode status; IEStatusCode status;
LastLevelTaskItem *lltask; LastLevelTaskItem *lltask;
int ret = DNN_SUCCESS; int ret = 0;
TaskItem *task; TaskItem *task;
OVContext *ctx; OVContext *ctx;
OVModel *ov_model; OVModel *ov_model;
@ -452,7 +452,7 @@ static int execute_model_ov(OVRequestItem *request, Queue *inferenceq)
if (ff_queue_size(inferenceq) == 0) { if (ff_queue_size(inferenceq) == 0) {
ie_infer_request_free(&request->infer_request); ie_infer_request_free(&request->infer_request);
av_freep(&request); av_freep(&request);
return DNN_SUCCESS; return 0;
} }
lltask = ff_queue_peek_front(inferenceq); lltask = ff_queue_peek_front(inferenceq);
@ -462,7 +462,7 @@ static int execute_model_ov(OVRequestItem *request, Queue *inferenceq)
if (task->async) { if (task->async) {
ret = fill_model_input_ov(ov_model, request); ret = fill_model_input_ov(ov_model, request);
if (ret != DNN_SUCCESS) { if (ret != 0) {
goto err; goto err;
} }
status = ie_infer_set_completion_callback(request->infer_request, &request->callback); status = ie_infer_set_completion_callback(request->infer_request, &request->callback);
@ -477,10 +477,10 @@ static int execute_model_ov(OVRequestItem *request, Queue *inferenceq)
ret = DNN_GENERIC_ERROR; ret = DNN_GENERIC_ERROR;
goto err; goto err;
} }
return DNN_SUCCESS; return 0;
} else { } else {
ret = fill_model_input_ov(ov_model, request); ret = fill_model_input_ov(ov_model, request);
if (ret != DNN_SUCCESS) { if (ret != 0) {
goto err; goto err;
} }
status = ie_infer_request_infer(request->infer_request); status = ie_infer_request_infer(request->infer_request);
@ -490,7 +490,7 @@ static int execute_model_ov(OVRequestItem *request, Queue *inferenceq)
goto err; goto err;
} }
infer_completion_callback(request); infer_completion_callback(request);
return (task->inference_done == task->inference_todo) ? DNN_SUCCESS : DNN_GENERIC_ERROR; return (task->inference_done == task->inference_todo) ? 0 : DNN_GENERIC_ERROR;
} }
err: err:
if (ff_safe_queue_push_back(ov_model->request_queue, request) < 0) { if (ff_safe_queue_push_back(ov_model->request_queue, request) < 0) {
@ -537,7 +537,7 @@ static int get_input_ov(void *model, DNNData *input, const char *input_name)
input->height = input_resizable ? -1 : dims.dims[2]; input->height = input_resizable ? -1 : dims.dims[2];
input->width = input_resizable ? -1 : dims.dims[3]; input->width = input_resizable ? -1 : dims.dims[3];
input->dt = precision_to_datatype(precision); input->dt = precision_to_datatype(precision);
return DNN_SUCCESS; return 0;
} else { } else {
//incorrect input name //incorrect input name
APPEND_STRING(all_input_names, model_input_name) APPEND_STRING(all_input_names, model_input_name)
@ -604,7 +604,7 @@ static int extract_lltask_from_task(DNNFunctionType func_type, TaskItem *task, Q
av_freep(&lltask); av_freep(&lltask);
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
} }
return DNN_SUCCESS; return 0;
} }
case DFT_ANALYTICS_CLASSIFY: case DFT_ANALYTICS_CLASSIFY:
{ {
@ -617,7 +617,7 @@ static int extract_lltask_from_task(DNNFunctionType func_type, TaskItem *task, Q
task->inference_done = 0; task->inference_done = 0;
if (!contain_valid_detection_bbox(frame)) { if (!contain_valid_detection_bbox(frame)) {
return DNN_SUCCESS; return 0;
} }
sd = av_frame_get_side_data(frame, AV_FRAME_DATA_DETECTION_BBOXES); sd = av_frame_get_side_data(frame, AV_FRAME_DATA_DETECTION_BBOXES);
@ -645,7 +645,7 @@ static int extract_lltask_from_task(DNNFunctionType func_type, TaskItem *task, Q
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
} }
} }
return DNN_SUCCESS; return 0;
} }
default: default:
av_assert0(!"should not reach here"); av_assert0(!"should not reach here");
@ -690,19 +690,19 @@ static int get_output_ov(void *model, const char *input_name, int input_width, i
if (!ov_model->exe_network) { if (!ov_model->exe_network) {
ret = init_model_ov(ov_model, input_name, output_name); ret = init_model_ov(ov_model, input_name, output_name);
if (ret != DNN_SUCCESS) { if (ret != 0) {
av_log(ctx, AV_LOG_ERROR, "Failed init OpenVINO exectuable network or inference request\n"); av_log(ctx, AV_LOG_ERROR, "Failed init OpenVINO exectuable network or inference request\n");
return ret; return ret;
} }
} }
ret = ff_dnn_fill_gettingoutput_task(&task, &exec_params, ov_model, input_height, input_width, ctx); ret = ff_dnn_fill_gettingoutput_task(&task, &exec_params, ov_model, input_height, input_width, ctx);
if (ret != DNN_SUCCESS) { if (ret != 0) {
goto err; goto err;
} }
ret = extract_lltask_from_task(ov_model->model->func_type, &task, ov_model->lltask_queue, NULL); ret = extract_lltask_from_task(ov_model->model->func_type, &task, ov_model->lltask_queue, NULL);
if (ret != DNN_SUCCESS) { if (ret != 0) {
av_log(ctx, AV_LOG_ERROR, "unable to extract inference from task.\n"); av_log(ctx, AV_LOG_ERROR, "unable to extract inference from task.\n");
goto err; goto err;
} }
@ -795,7 +795,7 @@ int ff_dnn_execute_model_ov(const DNNModel *model, DNNExecBaseParams *exec_param
if (!ov_model->exe_network) { if (!ov_model->exe_network) {
ret = init_model_ov(ov_model, exec_params->input_name, exec_params->output_names[0]); ret = init_model_ov(ov_model, exec_params->input_name, exec_params->output_names[0]);
if (ret != DNN_SUCCESS) { if (ret != 0) {
av_log(ctx, AV_LOG_ERROR, "Failed init OpenVINO exectuable network or inference request\n"); av_log(ctx, AV_LOG_ERROR, "Failed init OpenVINO exectuable network or inference request\n");
return ret; return ret;
} }
@ -808,7 +808,7 @@ int ff_dnn_execute_model_ov(const DNNModel *model, DNNExecBaseParams *exec_param
} }
ret = ff_dnn_fill_task(task, exec_params, ov_model, ctx->options.async, 1); ret = ff_dnn_fill_task(task, exec_params, ov_model, ctx->options.async, 1);
if (ret != DNN_SUCCESS) { if (ret != 0) {
av_freep(&task); av_freep(&task);
return ret; return ret;
} }
@ -820,7 +820,7 @@ int ff_dnn_execute_model_ov(const DNNModel *model, DNNExecBaseParams *exec_param
} }
ret = extract_lltask_from_task(model->func_type, task, ov_model->lltask_queue, exec_params); ret = extract_lltask_from_task(model->func_type, task, ov_model->lltask_queue, exec_params);
if (ret != DNN_SUCCESS) { if (ret != 0) {
av_log(ctx, AV_LOG_ERROR, "unable to extract inference from task.\n"); av_log(ctx, AV_LOG_ERROR, "unable to extract inference from task.\n");
return ret; return ret;
} }
@ -834,12 +834,12 @@ int ff_dnn_execute_model_ov(const DNNModel *model, DNNExecBaseParams *exec_param
} }
ret = execute_model_ov(request, ov_model->lltask_queue); ret = execute_model_ov(request, ov_model->lltask_queue);
if (ret != DNN_SUCCESS) { if (ret != 0) {
return ret; return ret;
} }
} }
return DNN_SUCCESS; return 0;
} }
else { else {
if (model->func_type == DFT_ANALYTICS_CLASSIFY) { if (model->func_type == DFT_ANALYTICS_CLASSIFY) {
@ -879,7 +879,7 @@ int ff_dnn_flush_ov(const DNNModel *model)
if (ff_queue_size(ov_model->lltask_queue) == 0) { if (ff_queue_size(ov_model->lltask_queue) == 0) {
// no pending task need to flush // no pending task need to flush
return DNN_SUCCESS; return 0;
} }
request = ff_safe_queue_pop_front(ov_model->request_queue); request = ff_safe_queue_pop_front(ov_model->request_queue);
@ -889,7 +889,7 @@ int ff_dnn_flush_ov(const DNNModel *model)
} }
ret = fill_model_input_ov(ov_model, request); ret = fill_model_input_ov(ov_model, request);
if (ret != DNN_SUCCESS) { if (ret != 0) {
av_log(ctx, AV_LOG_ERROR, "Failed to fill model input.\n"); av_log(ctx, AV_LOG_ERROR, "Failed to fill model input.\n");
return ret; return ret;
} }
@ -904,7 +904,7 @@ int ff_dnn_flush_ov(const DNNModel *model)
return DNN_GENERIC_ERROR; return DNN_GENERIC_ERROR;
} }
return DNN_SUCCESS; return 0;
} }
void ff_dnn_free_model_ov(DNNModel **model) void ff_dnn_free_model_ov(DNNModel **model)

@ -151,7 +151,7 @@ static TFInferRequest *tf_create_inference_request(void)
* Start synchronous inference for the TensorFlow model. * Start synchronous inference for the TensorFlow model.
* *
* @param request pointer to the TFRequestItem for inference * @param request pointer to the TFRequestItem for inference
* @retval DNN_SUCCESS if execution is successful * @retval 0 if execution is successful
* @retval AVERROR(EINVAL) if request is NULL * @retval AVERROR(EINVAL) if request is NULL
* @retval DNN_GENERIC_ERROR if execution fails * @retval DNN_GENERIC_ERROR if execution fails
*/ */
@ -181,7 +181,7 @@ static int tf_start_inference(void *args)
} }
return DNN_GENERIC_ERROR; return DNN_GENERIC_ERROR;
} }
return DNN_SUCCESS; return 0;
} }
/** /**
@ -220,7 +220,7 @@ static int extract_lltask_from_task(TaskItem *task, Queue *lltask_queue)
av_freep(&lltask); av_freep(&lltask);
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
} }
return DNN_SUCCESS; return 0;
} }
static TF_Buffer *read_graph(const char *model_filename) static TF_Buffer *read_graph(const char *model_filename)
@ -311,7 +311,7 @@ static int get_input_tf(void *model, DNNData *input, const char *input_name)
input->width = dims[2]; input->width = dims[2];
input->channels = dims[3]; input->channels = dims[3];
return DNN_SUCCESS; return 0;
} }
static int get_output_tf(void *model, const char *input_name, int input_width, int input_height, static int get_output_tf(void *model, const char *input_name, int input_width, int input_height,
@ -331,12 +331,12 @@ static int get_output_tf(void *model, const char *input_name, int input_width, i
}; };
ret = ff_dnn_fill_gettingoutput_task(&task, &exec_params, tf_model, input_height, input_width, ctx); ret = ff_dnn_fill_gettingoutput_task(&task, &exec_params, tf_model, input_height, input_width, ctx);
if (ret != DNN_SUCCESS) { if (ret != 0) {
goto err; goto err;
} }
ret = extract_lltask_from_task(&task, tf_model->lltask_queue); ret = extract_lltask_from_task(&task, tf_model->lltask_queue);
if (ret != DNN_SUCCESS) { if (ret != 0) {
av_log(ctx, AV_LOG_ERROR, "unable to extract inference from task.\n"); av_log(ctx, AV_LOG_ERROR, "unable to extract inference from task.\n");
goto err; goto err;
} }
@ -487,7 +487,7 @@ static int load_tf_model(TFModel *tf_model, const char *model_filename)
} }
} }
return DNN_SUCCESS; return 0;
} }
#define NAME_BUFFER_SIZE 256 #define NAME_BUFFER_SIZE 256
@ -606,7 +606,7 @@ static int add_conv_layer(TFModel *tf_model, TF_Operation *transpose_op, TF_Oper
goto err; goto err;
} }
return DNN_SUCCESS; return 0;
err: err:
TF_DeleteTensor(kernel_tensor); TF_DeleteTensor(kernel_tensor);
TF_DeleteTensor(biases_tensor); TF_DeleteTensor(biases_tensor);
@ -635,7 +635,7 @@ static int add_depth_to_space_layer(TFModel *tf_model, TF_Operation **cur_op,
return DNN_GENERIC_ERROR; return DNN_GENERIC_ERROR;
} }
return DNN_SUCCESS; return 0;
} }
static int add_pad_layer(TFModel *tf_model, TF_Operation **cur_op, static int add_pad_layer(TFModel *tf_model, TF_Operation **cur_op,
@ -693,7 +693,7 @@ static int add_pad_layer(TFModel *tf_model, TF_Operation **cur_op,
return DNN_GENERIC_ERROR; return DNN_GENERIC_ERROR;
} }
return DNN_SUCCESS; return 0;
} }
static int add_maximum_layer(TFModel *tf_model, TF_Operation **cur_op, static int add_maximum_layer(TFModel *tf_model, TF_Operation **cur_op,
@ -742,7 +742,7 @@ static int add_maximum_layer(TFModel *tf_model, TF_Operation **cur_op,
return DNN_GENERIC_ERROR; return DNN_GENERIC_ERROR;
} }
return DNN_SUCCESS; return 0;
} }
static int load_native_model(TFModel *tf_model, const char *model_filename) static int load_native_model(TFModel *tf_model, const char *model_filename)
@ -808,7 +808,7 @@ static int load_native_model(TFModel *tf_model, const char *model_filename)
for (layer = 0; layer < native_model->layers_num; ++layer){ for (layer = 0; layer < native_model->layers_num; ++layer){
switch (native_model->layers[layer].type){ switch (native_model->layers[layer].type){
case DLT_INPUT: case DLT_INPUT:
layer_add_res = DNN_SUCCESS; layer_add_res = 0;
break; break;
case DLT_CONV2D: case DLT_CONV2D:
layer_add_res = add_conv_layer(tf_model, transpose_op, &op, layer_add_res = add_conv_layer(tf_model, transpose_op, &op,
@ -830,7 +830,7 @@ static int load_native_model(TFModel *tf_model, const char *model_filename)
CLEANUP_ON_ERROR(tf_model); CLEANUP_ON_ERROR(tf_model);
} }
if (layer_add_res != DNN_SUCCESS){ if (layer_add_res != 0){
CLEANUP_ON_ERROR(tf_model); CLEANUP_ON_ERROR(tf_model);
} }
} }
@ -846,7 +846,7 @@ static int load_native_model(TFModel *tf_model, const char *model_filename)
ff_dnn_free_model_native(&model); ff_dnn_free_model_native(&model);
return DNN_SUCCESS; return 0;
} }
DNNModel *ff_dnn_load_model_tf(const char *model_filename, DNNFunctionType func_type, const char *options, AVFilterContext *filter_ctx) DNNModel *ff_dnn_load_model_tf(const char *model_filename, DNNFunctionType func_type, const char *options, AVFilterContext *filter_ctx)
@ -876,8 +876,8 @@ DNNModel *ff_dnn_load_model_tf(const char *model_filename, DNNFunctionType func_
goto err; goto err;
} }
if (load_tf_model(tf_model, model_filename) != DNN_SUCCESS){ if (load_tf_model(tf_model, model_filename) != 0){
if (load_native_model(tf_model, model_filename) != DNN_SUCCESS){ if (load_native_model(tf_model, model_filename) != 0){
goto err; goto err;
} }
} }
@ -958,7 +958,7 @@ static int fill_model_input_tf(TFModel *tf_model, TFRequestItem *request) {
request->lltask = lltask; request->lltask = lltask;
ret = get_input_tf(tf_model, &input, task->input_name); ret = get_input_tf(tf_model, &input, task->input_name);
if (ret != DNN_SUCCESS) { if (ret != 0) {
goto err; goto err;
} }
@ -1032,7 +1032,7 @@ static int fill_model_input_tf(TFModel *tf_model, TFRequestItem *request) {
infer_request->tf_outputs[i].index = 0; infer_request->tf_outputs[i].index = 0;
} }
return DNN_SUCCESS; return 0;
err: err:
tf_free_request(infer_request); tf_free_request(infer_request);
return ret; return ret;
@ -1106,7 +1106,7 @@ static int execute_model_tf(TFRequestItem *request, Queue *lltask_queue)
if (ff_queue_size(lltask_queue) == 0) { if (ff_queue_size(lltask_queue) == 0) {
destroy_request_item(&request); destroy_request_item(&request);
return DNN_SUCCESS; return 0;
} }
lltask = ff_queue_peek_front(lltask_queue); lltask = ff_queue_peek_front(lltask_queue);
@ -1115,23 +1115,23 @@ static int execute_model_tf(TFRequestItem *request, Queue *lltask_queue)
ctx = &tf_model->ctx; ctx = &tf_model->ctx;
ret = fill_model_input_tf(tf_model, request); ret = fill_model_input_tf(tf_model, request);
if (ret != DNN_SUCCESS) { if (ret != 0) {
goto err; goto err;
} }
if (task->async) { if (task->async) {
if (ff_dnn_start_inference_async(ctx, &request->exec_module) != DNN_SUCCESS) { if (ff_dnn_start_inference_async(ctx, &request->exec_module) != 0) {
goto err; goto err;
} }
return DNN_SUCCESS; return 0;
} }
else { else {
ret = tf_start_inference(request); ret = tf_start_inference(request);
if (ret != DNN_SUCCESS) { if (ret != 0) {
goto err; goto err;
} }
infer_completion_callback(request); infer_completion_callback(request);
return (task->inference_done == task->inference_todo) ? DNN_SUCCESS : DNN_GENERIC_ERROR; return (task->inference_done == task->inference_todo) ? 0 : DNN_GENERIC_ERROR;
} }
err: err:
tf_free_request(request->infer_request); tf_free_request(request->infer_request);
@ -1161,7 +1161,7 @@ int ff_dnn_execute_model_tf(const DNNModel *model, DNNExecBaseParams *exec_param
} }
ret = ff_dnn_fill_task(task, exec_params, tf_model, ctx->options.async, 1); ret = ff_dnn_fill_task(task, exec_params, tf_model, ctx->options.async, 1);
if (ret != DNN_SUCCESS) { if (ret != 0) {
av_freep(&task); av_freep(&task);
return ret; return ret;
} }
@ -1173,7 +1173,7 @@ int ff_dnn_execute_model_tf(const DNNModel *model, DNNExecBaseParams *exec_param
} }
ret = extract_lltask_from_task(task, tf_model->lltask_queue); ret = extract_lltask_from_task(task, tf_model->lltask_queue);
if (ret != DNN_SUCCESS) { if (ret != 0) {
av_log(ctx, AV_LOG_ERROR, "unable to extract last level task from task.\n"); av_log(ctx, AV_LOG_ERROR, "unable to extract last level task from task.\n");
return ret; return ret;
} }
@ -1201,7 +1201,7 @@ int ff_dnn_flush_tf(const DNNModel *model)
if (ff_queue_size(tf_model->lltask_queue) == 0) { if (ff_queue_size(tf_model->lltask_queue) == 0) {
// no pending task need to flush // no pending task need to flush
return DNN_SUCCESS; return 0;
} }
request = ff_safe_queue_pop_front(tf_model->request_queue); request = ff_safe_queue_pop_front(tf_model->request_queue);
@ -1211,7 +1211,7 @@ int ff_dnn_flush_tf(const DNNModel *model)
} }
ret = fill_model_input_tf(tf_model, request); ret = fill_model_input_tf(tf_model, request);
if (ret != DNN_SUCCESS) { if (ret != 0) {
av_log(ctx, AV_LOG_ERROR, "Failed to fill model input.\n"); av_log(ctx, AV_LOG_ERROR, "Failed to fill model input.\n");
if (ff_safe_queue_push_back(tf_model->request_queue, request) < 0) { if (ff_safe_queue_push_back(tf_model->request_queue, request) < 0) {
destroy_request_item(&request); destroy_request_item(&request);

@ -57,12 +57,12 @@ int ff_proc_from_dnn_to_frame(AVFrame *frame, DNNData *output, void *log_ctx)
(const int[4]){frame->width * 3 * sizeof(float), 0, 0, 0}, 0, frame->height, (const int[4]){frame->width * 3 * sizeof(float), 0, 0, 0}, 0, frame->height,
(uint8_t * const*)frame->data, frame->linesize); (uint8_t * const*)frame->data, frame->linesize);
sws_freeContext(sws_ctx); sws_freeContext(sws_ctx);
return DNN_SUCCESS; return 0;
case AV_PIX_FMT_GRAYF32: case AV_PIX_FMT_GRAYF32:
av_image_copy_plane(frame->data[0], frame->linesize[0], av_image_copy_plane(frame->data[0], frame->linesize[0],
output->data, bytewidth, output->data, bytewidth,
bytewidth, frame->height); bytewidth, frame->height);
return DNN_SUCCESS; return 0;
case AV_PIX_FMT_YUV420P: case AV_PIX_FMT_YUV420P:
case AV_PIX_FMT_YUV422P: case AV_PIX_FMT_YUV422P:
case AV_PIX_FMT_YUV444P: case AV_PIX_FMT_YUV444P:
@ -88,13 +88,13 @@ int ff_proc_from_dnn_to_frame(AVFrame *frame, DNNData *output, void *log_ctx)
(const int[4]){frame->width * sizeof(float), 0, 0, 0}, 0, frame->height, (const int[4]){frame->width * sizeof(float), 0, 0, 0}, 0, frame->height,
(uint8_t * const*)frame->data, frame->linesize); (uint8_t * const*)frame->data, frame->linesize);
sws_freeContext(sws_ctx); sws_freeContext(sws_ctx);
return DNN_SUCCESS; return 0;
default: default:
avpriv_report_missing_feature(log_ctx, "%s", av_get_pix_fmt_name(frame->format)); avpriv_report_missing_feature(log_ctx, "%s", av_get_pix_fmt_name(frame->format));
return AVERROR(ENOSYS); return AVERROR(ENOSYS);
} }
return DNN_SUCCESS; return 0;
} }
int ff_proc_from_frame_to_dnn(AVFrame *frame, DNNData *input, void *log_ctx) int ff_proc_from_frame_to_dnn(AVFrame *frame, DNNData *input, void *log_ctx)
@ -169,7 +169,7 @@ int ff_proc_from_frame_to_dnn(AVFrame *frame, DNNData *input, void *log_ctx)
return AVERROR(ENOSYS); return AVERROR(ENOSYS);
} }
return DNN_SUCCESS; return 0;
} }
static enum AVPixelFormat get_pixel_format(DNNData *data) static enum AVPixelFormat get_pixel_format(DNNData *data)
@ -197,7 +197,7 @@ int ff_frame_to_dnn_classify(AVFrame *frame, DNNData *input, uint32_t bbox_index
uint8_t *bbox_data[4]; uint8_t *bbox_data[4];
struct SwsContext *sws_ctx; struct SwsContext *sws_ctx;
int linesizes[4]; int linesizes[4];
int ret = DNN_SUCCESS; int ret = 0;
enum AVPixelFormat fmt; enum AVPixelFormat fmt;
int left, top, width, height; int left, top, width, height;
const AVDetectionBBoxHeader *header; const AVDetectionBBoxHeader *header;
@ -255,7 +255,7 @@ int ff_frame_to_dnn_detect(AVFrame *frame, DNNData *input, void *log_ctx)
{ {
struct SwsContext *sws_ctx; struct SwsContext *sws_ctx;
int linesizes[4]; int linesizes[4];
int ret = DNN_SUCCESS; int ret = 0;
enum AVPixelFormat fmt = get_pixel_format(input); enum AVPixelFormat fmt = get_pixel_format(input);
sws_ctx = sws_getContext(frame->width, frame->height, frame->format, sws_ctx = sws_getContext(frame->width, frame->height, frame->format,
input->width, input->height, fmt, input->width, input->height, fmt,

@ -32,8 +32,6 @@
#define DNN_GENERIC_ERROR FFERRTAG('D','N','N','!') #define DNN_GENERIC_ERROR FFERRTAG('D','N','N','!')
typedef enum {DNN_SUCCESS, DNN_ERROR} DNNReturnType;
typedef enum {DNN_NATIVE, DNN_TF, DNN_OV} DNNBackendType; typedef enum {DNN_NATIVE, DNN_TF, DNN_OV} DNNBackendType;
typedef enum {DNN_FLOAT = 1, DNN_UINT8 = 4} DNNDataType; typedef enum {DNN_FLOAT = 1, DNN_UINT8 = 4} DNNDataType;

@ -74,7 +74,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
av_frame_copy_props(out, in); av_frame_copy_props(out, in);
dnn_result = ff_dnn_execute_model(&dr_context->dnnctx, in, out); dnn_result = ff_dnn_execute_model(&dr_context->dnnctx, in, out);
if (dnn_result != DNN_SUCCESS){ if (dnn_result != 0){
av_log(ctx, AV_LOG_ERROR, "failed to execute model\n"); av_log(ctx, AV_LOG_ERROR, "failed to execute model\n");
av_frame_free(&in); av_frame_free(&in);
return dnn_result; return dnn_result;

@ -213,7 +213,7 @@ static int dnn_classify_flush_frame(AVFilterLink *outlink, int64_t pts, int64_t
DNNAsyncStatusType async_state; DNNAsyncStatusType async_state;
ret = ff_dnn_flush(&ctx->dnnctx); ret = ff_dnn_flush(&ctx->dnnctx);
if (ret != DNN_SUCCESS) { if (ret != 0) {
return -1; return -1;
} }
@ -253,7 +253,7 @@ static int dnn_classify_activate(AVFilterContext *filter_ctx)
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret > 0) { if (ret > 0) {
if (ff_dnn_execute_model_classification(&ctx->dnnctx, in, NULL, ctx->target) != DNN_SUCCESS) { if (ff_dnn_execute_model_classification(&ctx->dnnctx, in, NULL, ctx->target) != 0) {
return AVERROR(EIO); return AVERROR(EIO);
} }
} }

@ -356,7 +356,7 @@ static int dnn_detect_flush_frame(AVFilterLink *outlink, int64_t pts, int64_t *o
DNNAsyncStatusType async_state; DNNAsyncStatusType async_state;
ret = ff_dnn_flush(&ctx->dnnctx); ret = ff_dnn_flush(&ctx->dnnctx);
if (ret != DNN_SUCCESS) { if (ret != 0) {
return -1; return -1;
} }
@ -396,7 +396,7 @@ static int dnn_detect_activate(AVFilterContext *filter_ctx)
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret > 0) { if (ret > 0) {
if (ff_dnn_execute_model(&ctx->dnnctx, in, NULL) != DNN_SUCCESS) { if (ff_dnn_execute_model(&ctx->dnnctx, in, NULL) != 0) {
return AVERROR(EIO); return AVERROR(EIO);
} }
} }

@ -139,7 +139,7 @@ static int config_input(AVFilterLink *inlink)
int check; int check;
result = ff_dnn_get_input(&ctx->dnnctx, &model_input); result = ff_dnn_get_input(&ctx->dnnctx, &model_input);
if (result != DNN_SUCCESS) { if (result != 0) {
av_log(ctx, AV_LOG_ERROR, "could not get input from the model\n"); av_log(ctx, AV_LOG_ERROR, "could not get input from the model\n");
return result; return result;
} }
@ -199,7 +199,7 @@ static int config_output(AVFilterLink *outlink)
// have a try run in case that the dnn model resize the frame // have a try run in case that the dnn model resize the frame
result = ff_dnn_get_output(&ctx->dnnctx, inlink->w, inlink->h, &outlink->w, &outlink->h); result = ff_dnn_get_output(&ctx->dnnctx, inlink->w, inlink->h, &outlink->w, &outlink->h);
if (result != DNN_SUCCESS) { if (result != 0) {
av_log(ctx, AV_LOG_ERROR, "could not get output from the model\n"); av_log(ctx, AV_LOG_ERROR, "could not get output from the model\n");
return result; return result;
} }
@ -247,7 +247,7 @@ static int flush_frame(AVFilterLink *outlink, int64_t pts, int64_t *out_pts)
DNNAsyncStatusType async_state; DNNAsyncStatusType async_state;
ret = ff_dnn_flush(&ctx->dnnctx); ret = ff_dnn_flush(&ctx->dnnctx);
if (ret != DNN_SUCCESS) { if (ret != 0) {
return -1; return -1;
} }
@ -296,7 +296,7 @@ static int activate(AVFilterContext *filter_ctx)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
} }
av_frame_copy_props(out, in); av_frame_copy_props(out, in);
if (ff_dnn_execute_model(&ctx->dnnctx, in, out) != DNN_SUCCESS) { if (ff_dnn_execute_model(&ctx->dnnctx, in, out) != 0) {
return AVERROR(EIO); return AVERROR(EIO);
} }
} }

@ -82,7 +82,7 @@ static int config_output(AVFilterLink *outlink)
// have a try run in case that the dnn model resize the frame // have a try run in case that the dnn model resize the frame
result = ff_dnn_get_output(&ctx->dnnctx, inlink->w, inlink->h, &out_width, &out_height); result = ff_dnn_get_output(&ctx->dnnctx, inlink->w, inlink->h, &out_width, &out_height);
if (result != DNN_SUCCESS) { if (result != 0) {
av_log(ctx, AV_LOG_ERROR, "could not get output from the model\n"); av_log(ctx, AV_LOG_ERROR, "could not get output from the model\n");
return result; return result;
} }
@ -139,7 +139,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
dnn_result = ff_dnn_execute_model(&ctx->dnnctx, in, out); dnn_result = ff_dnn_execute_model(&ctx->dnnctx, in, out);
} }
if (dnn_result != DNN_SUCCESS){ if (dnn_result != 0){
av_log(ctx, AV_LOG_ERROR, "failed to execute loaded model\n"); av_log(ctx, AV_LOG_ERROR, "failed to execute loaded model\n");
av_frame_free(&in); av_frame_free(&in);
av_frame_free(&out); av_frame_free(&out);

Loading…
Cancel
Save