ffmpeg | branch: master | Guo, Yejun <yejun....@intel.com> | Wed Nov 18 14:28:06 2020 +0800| [39f5cb4bd1bbb12632baac24dd7b9bb5a68bef8d] | committer: Guo, Yejun
dnn_interface: add interface to support async execution Signed-off-by: Xie, Lin <lin....@intel.com> Signed-off-by: Wu Zhiwen <zhiwen...@intel.com> Signed-off-by: Guo, Yejun <yejun....@intel.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=39f5cb4bd1bbb12632baac24dd7b9bb5a68bef8d --- libavfilter/dnn/dnn_interface.c | 2 +- libavfilter/dnn_interface.h | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/libavfilter/dnn/dnn_interface.c b/libavfilter/dnn/dnn_interface.c index 7973d3e017..f82ab12e98 100644 --- a/libavfilter/dnn/dnn_interface.c +++ b/libavfilter/dnn/dnn_interface.c @@ -33,7 +33,7 @@ DNNModule *ff_get_dnn_module(DNNBackendType backend_type) { DNNModule *dnn_module; - dnn_module = av_malloc(sizeof(DNNModule)); + dnn_module = av_mallocz(sizeof(DNNModule)); if(!dnn_module){ return NULL; } diff --git a/libavfilter/dnn_interface.h b/libavfilter/dnn_interface.h index 2f129d535e..9e54b91d19 100644 --- a/libavfilter/dnn_interface.h +++ b/libavfilter/dnn_interface.h @@ -35,6 +35,13 @@ typedef enum {DNN_NATIVE, DNN_TF, DNN_OV} DNNBackendType; typedef enum {DNN_FLOAT = 1, DNN_UINT8 = 4} DNNDataType; +typedef enum { + DAST_FAIL, // something wrong + DAST_EMPTY_QUEUE, // no more inference result to get + DAST_NOT_READY, // all queued inferences are not finished + DAST_SUCCESS // got a result frame successfully +} DNNAsyncStatusType; + typedef struct DNNData{ void *data; DNNDataType dt; @@ -69,6 +76,11 @@ typedef struct DNNModule{ // Executes model with specified input and output. Returns DNN_ERROR otherwise. DNNReturnType (*execute_model)(const DNNModel *model, const char *input_name, AVFrame *in_frame, const char **output_names, uint32_t nb_output, AVFrame *out_frame); + // Executes model with specified input and output asynchronously. Returns DNN_ERROR otherwise. + DNNReturnType (*execute_model_async)(const DNNModel *model, const char *input_name, AVFrame *in_frame, + const char **output_names, uint32_t nb_output, AVFrame *out_frame); + // Retrieve inference result. + DNNAsyncStatusType (*get_async_result)(const DNNModel *model, AVFrame **out); // Frees memory allocated for model. void (*free_model)(DNNModel **model); } DNNModule; _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".