Signed-off-by: Guo, Yejun <yejun....@intel.com> --- libavfilter/dnn/dnn_backend_openvino.c | 37 +++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/libavfilter/dnn/dnn_backend_openvino.c b/libavfilter/dnn/dnn_backend_openvino.c index d343bf2..478e151 100644 --- a/libavfilter/dnn/dnn_backend_openvino.c +++ b/libavfilter/dnn/dnn_backend_openvino.c @@ -26,8 +26,14 @@ #include "dnn_backend_openvino.h" #include "libavformat/avio.h" #include "libavutil/avassert.h" +#include "libavutil/avstring.h" #include <c_api/ie_c_api.h> +typedef struct OVOptions{ + uint32_t batch_size; + uint32_t req_num; +} OVOptions; + typedef struct OVModel{ ie_core_t *core; ie_network_t *network; @@ -36,6 +42,7 @@ typedef struct OVModel{ ie_blob_t *input_blob; ie_blob_t **output_blobs; uint32_t nb_output; + OVOptions options; } OVModel; static DNNDataType precision_to_datatype(precision_e precision) @@ -50,6 +57,32 @@ static DNNDataType precision_to_datatype(precision_e precision) } } +static int parse_options_ov(OVOptions *to, const char *from) +{ + AVDictionary *dict = NULL; + AVDictionaryEntry *opt = NULL; + int err = av_dict_parse_string(&dict, from, "=", "&", 0); + if (err < 0) { + av_dict_free(&dict); + return err; + } + + opt = av_dict_get(dict, "nireq", opt, AV_DICT_MATCH_CASE); + if (opt != NULL) + to->req_num = atoi(opt->value); + else + to->req_num = 1; + + opt = av_dict_get(dict, "batch", opt, AV_DICT_MATCH_CASE); + if (opt != NULL) + to->batch_size = atoi(opt->value); + else + to->batch_size = 1; + + av_dict_free(&dict); + return 0; +} + static DNNReturnType get_input_ov(void *model, DNNData *input, const char *input_name) { OVModel *ov_model = (OVModel *)model; @@ -171,6 +204,9 @@ DNNModel *ff_dnn_load_model_ov(const char *model_filename, const char *options) if (!ov_model) goto err; + model->options = options; + parse_options_ov(&ov_model->options, model->options); + status = ie_core_create("", &ov_model->core); if (status != OK) goto err; @@ -186,7 +222,6 @@ DNNModel *ff_dnn_load_model_ov(const char *model_filename, const char *options) model->model = (void *)ov_model; model->set_input_output = &set_input_output_ov; model->get_input = &get_input_ov; - model->options = options; return model; -- 2.7.4 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".