summaryrefslogtreecommitdiff
path: root/libavfilter/vf_sr.c
Commit message (Collapse)AuthorAge
* dnn: add function type for modelGuo, Yejun2021-02-18
| | | | | | | | So the backend knows the usage of model is for frame processing, detect, classify, etc. Each function type has different behavior in backend when handling the input/output data of the model. Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
* dnn: extract common functions used by different filtersGuo, Yejun2021-02-18
| | | | Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
* dnn: add a new interface DNNModel.get_outputGuo, Yejun2020-09-21
| | | | | | | | | | for some cases (for example, super resolution), the DNN model changes the frame size which impacts the filter behavior, so the filter needs to know the out frame size at very beginning. Currently, the filter reuses DNNModule.execute_model to query the out frame size, it is not clear from interface perspective, so add a new explict interface DNNModel.get_output for such query.
* dnn: put DNNModel.set_input and DNNModule.execute_model togetherGuo, Yejun2020-09-21
| | | | | | | | | | | | | | suppose we have a detect and classify filter in the future, the detect filter generates some bounding boxes (BBox) as AVFrame sidedata, and the classify filter executes DNN model for each BBox. For each BBox, we need to crop the AVFrame, copy data to DNN model input and do the model execution. So we have to save the in_frame at DNNModel.set_input and use it at DNNModule.execute_model, such saving is not feasible when we support async execute_model. This patch sets the in_frame as execution_model parameter, and so all the information are put together within the same function for each inference. It also makes easy to support BBox async inference.
* dnn: change dnn interface to replace DNNData* with AVFrame*Guo, Yejun2020-09-21
| | | | | | | | | | | | Currently, every filter needs to provide code to transfer data from AVFrame* to model input (DNNData*), and also from model output (DNNData*) to AVFrame*. Actually, such transfer can be implemented within DNN module, and so filter can focus on its own business logic. DNN module also exports the function pointer pre_proc and post_proc in struct DNNModel, just in case that a filter has its special logic to transfer data between AVFrame* and DNNData*. The default implementation within DNN module is used if the filter does not set pre/post_proc.
* dnn: add userdata for load model parameterGuo, Yejun2020-09-21
| | | | the userdata will be used for the interaction between AVFrame and DNNData
* dnn: move output name from DNNModel.set_input_output to DNNModule.execute_modelGuo, Yejun2020-08-25
| | | | | | | | | | | currently, output is set both at DNNModel.set_input_output and DNNModule.execute_model, it makes sense that the output name is provided at model inference time so all the output info is set at a single place. and so DNNModel.set_input_output is renamed to DNNModel.set_input Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
* dnn: add backend options when load the modelGuo, Yejun2020-08-12
| | | | | | | different backend might need different options for a better performance, so, add the parameter into dnn interface, as a preparation. Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
* avfilter/vf_sr.c: refine code to use AVPixFmtDescriptor.log2_chroma_h/wGuo, Yejun2020-03-03
| | | | | Signed-off-by: Guo, Yejun <yejun.guo@intel.com> Reviewed-by: Pedro Arthur <bygrandao@gmail.com>
* avfilter/vf_sr: correct flags since the filter changes frame w/hGuo, Yejun2019-10-30
| | | | | | | | If filter changes frame w/h, AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC cannot be supported. Signed-off-by: Guo, Yejun <yejun.guo@intel.com> Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
* avfilter/dnn: get the data type of network output from dnn execution resultGuo, Yejun2019-10-30
| | | | | | | | | | | so, we can make a filter more general to accept different network models, by adding a data type convertion after getting data from network. After we add dt field into struct DNNData, it becomes the same as DNNInputData, so merge them with one struct: DNNData. Signed-off-by: Guo, Yejun <yejun.guo@intel.com> Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
* lavf/sr: Refine the coding style for initJun Zhao2019-06-03
| | | | | | | | | | | | | | We perfer the coding style like: /* some stuff */ if (error) { /* error handling */ return -(errorcode); } /* normal actions */ do_something() Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
* lavf/sr: Don't need to check NULL before sws_freeContextJun Zhao2019-06-03
| | | | | | | sws_freeContext have check the NULL pointer, so don't need to check NULL before sws_freeContext. Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
* lavf/sr: Dump input pixel format in error messageJun Zhao2019-06-03
| | | | | | Dump input pixel format in error message, it's will help to debugging Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
* lavfi/sr: Change the backend type from flags to intJun Zhao2019-05-28
| | | | | | | native and tensorflow is exclusive, so change the type from flags to int. Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
* lavfi/sr: Remove slice thread flagJun Zhao2019-05-28
| | | | | | sr didn't enable the slice threading, so remove the flag Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
* libavfilter/dnn: add more data type support for dnn model inputGuo, Yejun2019-05-08
| | | | | | | | currently, only float is supported as model input, actually, there are other data types, this patch adds uint8. Signed-off-by: Guo, Yejun <yejun.guo@intel.com> Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
* libavfilter/dnn: support multiple outputs for tensorflow modelGuo, Yejun2019-05-08
| | | | | | | | | | | | some models such as ssd, yolo have more than one output. the clean up code in this patch is a little complex, it is because that set_input_output_tf could be called for many times together with ff_dnn_execute_model_tf, we have to clean resources for the case that the two interfaces are called interleaved. Signed-off-by: Guo, Yejun <yejun.guo@intel.com> Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
* libavfilter/dnn: avoid memcpy for tensorflow dnn outputGuo, Yejun2019-05-08
| | | | | | | use TF_Tensor's cpu address to avoid extra memcpy. Signed-off-by: Guo, Yejun <yejun.guo@intel.com> Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
* libavfilter/dnn: determine dnn output during execute_model instead of ↵Guo, Yejun2019-05-08
| | | | | | | | | | | | | | | | | | | set_input_output Currently, within interface set_input_output, the dims/memory of the tensorflow dnn model output is determined by executing the model with zero input, actually, the output dims might vary with different input data for networks such as object detection models faster-rcnn, ssd and yolo. This patch moves the logic from set_input_output to execute_model which is suitable for all the cases. Since interface changed, and so dnn_backend_native also changes. In vf_sr.c, it knows it's srcnn or espcn by executing the model with zero input, so execute_model has to be called in function config_props Signed-off-by: Guo, Yejun <yejun.guo@intel.com> Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
* libavfilter/dnn: remove limit for the name of DNN model input/outputGuo, Yejun2019-05-08
| | | | | | | | remove the requirment that the name of DNN model input/output should be "x"/"y", Signed-off-by: Guo, Yejun <yejun.guo@intel.com> Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
* libavfilter/vf_sr: refine code to remove keyword 'else'Guo, Yejun2019-05-08
| | | | | | | | remove 'else' since there is always 'return' in 'if' scope, so the code will be clean for later maintenance Signed-off-by: Guo, Yejun <yejun.guo@intel.com> Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
* avfilter/sr: process and output message when load_model is NULLSteven Liu2018-09-24
| | | | | | | | fix ticket: 7455 Reviewed-by: Pedro Arthur <bygrandao@gmail.com> Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
* avfilter/vf_sr: Fix coverity CID 1439584Pedro Arthur2018-09-21
|
* avfilter/vf_sr: fix read out of boundsZhao Zhili2018-09-19
| | | | Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
* libavfilter: Removes stored DNN models. Adds support for native backend ↵Sergey Lavrushkin2018-09-17
| | | | | | model file format in tf backend. Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
* libavfilter/vf_sr.c: Removes uint8 -> float and float -> uint8 conversions.Sergey Lavrushkin2018-08-14
| | | | Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
* libavfilter: Code style fixes for pointers in DNN module and sr filter.Sergey Lavrushkin2018-08-07
| | | | Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
* libavfilter: Adds on the fly generation of default DNN models for tensorflow ↵Sergey Lavrushkin2018-08-07
| | | | | | backend instead of storing binary model. Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
* libavfilter: vf_sr.c remove warningsPedro Arthur2018-07-02
|
* Adds ESPCN super resolution filter merged with SRCNN filter.Sergey Lavrushkin2018-07-02
Signed-off-by: Pedro Arthur <bygrandao@gmail.com>