From patchwork Fri Sep 20 03:56:03 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guo, Yejun" X-Patchwork-Id: 15175 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 9A7F94469F0 for ; Fri, 20 Sep 2019 07:01:04 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 83496689E84; Fri, 20 Sep 2019 07:01:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 301EA6899A9 for ; Fri, 20 Sep 2019 07:00:58 +0300 (EEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Sep 2019 21:00:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,527,1559545200"; d="scan'208";a="271433348" Received: from yguo18-skl-u1604.sh.intel.com ([10.239.13.25]) by orsmga001.jf.intel.com with ESMTP; 19 Sep 2019 21:00:55 -0700 From: "Guo, Yejun" To: ffmpeg-devel@ffmpeg.org Date: Fri, 20 Sep 2019 11:56:03 +0800 Message-Id: <1568951763-6118-1-git-send-email-yejun.guo@intel.com> X-Mailer: git-send-email 2.7.4 Subject: [FFmpeg-devel] [PATCH 3/4] libavfilter/dnn/dnn_backend_native: find the input operand according to input name X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: yejun.guo@intel.com MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Guo, Yejun --- libavfilter/dnn/dnn_backend_native.c | 39 +++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/libavfilter/dnn/dnn_backend_native.c b/libavfilter/dnn/dnn_backend_native.c index 22a9a33..1b0aea2 100644 --- a/libavfilter/dnn/dnn_backend_native.c +++ b/libavfilter/dnn/dnn_backend_native.c @@ -33,30 +33,37 @@ static DNNReturnType set_input_output_native(void *model, DNNInputData *input, const char *input_name, const char **output_names, uint32_t nb_output) { ConvolutionalNetwork *network = (ConvolutionalNetwork *)model; + DnnOperand *oprd = NULL; if (network->layers_num <= 0 || network->operands_num <= 0) return DNN_ERROR; av_assert0(input->dt == DNN_FLOAT); + for (int i = 0; i < network->operands_num; ++i) { + oprd = &network->operands[i]; + if (strcmp(oprd->name, input_name) == 0) { + if (oprd->type != DOT_INPUT) + return DNN_ERROR; + break; + } + oprd = NULL; + } - /** - * as the first step, suppose network->operands[0] is the input operand. - */ - network->operands[0].dims[0] = 1; - network->operands[0].dims[1] = input->height; - network->operands[0].dims[2] = input->width; - network->operands[0].dims[3] = input->channels; - network->operands[0].type = DOT_INPUT; - network->operands[0].data_type = DNN_FLOAT; - network->operands[0].isNHWC = 1; - - av_freep(&network->operands[0].data); - network->operands[0].length = calculate_operand_data_length(&network->operands[0]); - network->operands[0].data = av_malloc(network->operands[0].length); - if (!network->operands[0].data) + if (!oprd) + return DNN_ERROR; + + oprd->dims[0] = 1; + oprd->dims[1] = input->height; + oprd->dims[2] = input->width; + oprd->dims[3] = input->channels; + + av_freep(&oprd->data); + oprd->length = calculate_operand_data_length(oprd); + oprd->data = av_malloc(oprd->length); + if (!oprd->data) return DNN_ERROR; - input->data = network->operands[0].data; + input->data = oprd->data; return DNN_SUCCESS; }