FFmpeg
dnn_filter_common.h
Go to the documentation of this file.
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 /**
20  * @file
21  * common functions for the dnn based filters
22  */
23 
24 #ifndef AVFILTER_DNN_FILTER_COMMON_H
25 #define AVFILTER_DNN_FILTER_COMMON_H
26 
27 #include "dnn_interface.h"
28 
29 #define AVFILTER_DNN_DEFINE_CLASS_EXT(name, desc, options) \
30  static const AVClass name##_class = { \
31  .class_name = desc, \
32  .item_name = av_default_item_name, \
33  .option = options, \
34  .version = LIBAVUTIL_VERSION_INT, \
35  .category = AV_CLASS_CATEGORY_FILTER, \
36  .child_next = ff_dnn_filter_child_next, \
37  .child_class_iterate = ff_dnn_child_class_iterate, \
38  }
39 
40 #define AVFILTER_DNN_DEFINE_CLASS(fname) \
41  AVFILTER_DNN_DEFINE_CLASS_EXT(fname, #fname, fname##_options)
42 
43 void *ff_dnn_filter_child_next(void *obj, void *prev);
44 
46 
52 int ff_dnn_get_output(DnnContext *ctx, int input_width, int input_height, int *output_width, int *output_height);
53 int ff_dnn_execute_model(DnnContext *ctx, AVFrame *in_frame, AVFrame *out_frame);
54 int ff_dnn_execute_model_classification(DnnContext *ctx, AVFrame *in_frame, AVFrame *out_frame, const char *target);
58 
59 #endif
ff_dnn_get_input
int ff_dnn_get_input(DnnContext *ctx, DNNData *input)
Definition: dnn_filter_common.c:158
DNNFunctionType
DNNFunctionType
Definition: dnn_interface.h:52
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:374
ff_dnn_set_detect_post_proc
int ff_dnn_set_detect_post_proc(DnnContext *ctx, DetectPostProc post_proc)
Definition: dnn_filter_common.c:146
ff_dnn_init
int ff_dnn_init(DnnContext *ctx, DNNFunctionType func_type, AVFilterContext *filter_ctx)
Definition: dnn_filter_common.c:73
DetectPostProc
int(* DetectPostProc)(AVFrame *frame, DNNData *output, uint32_t nb, AVFilterContext *filter_ctx)
Definition: dnn_interface.h:90
ff_dnn_uninit
void ff_dnn_uninit(DnnContext *ctx)
Definition: dnn_filter_common.c:208
filter
filter_frame For filters that do not use the this method is called when a frame is pushed to the filter s input It can be called at any time except in a reentrant way If the input frame is enough to produce then the filter should push the output frames on the output link immediately As an exception to the previous rule if the input frame is enough to produce several output frames then the filter needs output only at least one per link The additional frames can be left buffered in the filter
Definition: filter_design.txt:228
ff_dnn_filter_child_next
void * ff_dnn_filter_child_next(void *obj, void *prev)
Definition: dnn_filter_common.c:67
DnnContext
Definition: dnn_interface.h:141
filter_ctx
static FilteringContext * filter_ctx
Definition: transcode.c:52
DNNData
Definition: dnn_interface.h:65
ctx
AVFormatContext * ctx
Definition: movenc.c:49
ff_dnn_set_classify_post_proc
int ff_dnn_set_classify_post_proc(DnnContext *ctx, ClassifyPostProc post_proc)
Definition: dnn_filter_common.c:152
ff_dnn_get_output
int ff_dnn_get_output(DnnContext *ctx, int input_width, int input_height, int *output_width, int *output_height)
Definition: dnn_filter_common.c:163
ff_dnn_filter_init_child_class
int ff_dnn_filter_init_child_class(AVFilterContext *filter)
Definition: dnn_filter_common.c:61
ClassifyPostProc
int(* ClassifyPostProc)(AVFrame *frame, DNNData *output, uint32_t bbox_index, AVFilterContext *filter_ctx)
Definition: dnn_interface.h:91
ff_dnn_get_result
DNNAsyncStatusType ff_dnn_get_result(DnnContext *ctx, AVFrame **in_frame, AVFrame **out_frame)
Definition: dnn_filter_common.c:198
input
and forward the test the status of outputs and forward it to the corresponding return FFERROR_NOT_READY If the filters stores internally one or a few frame for some input
Definition: filter_design.txt:172
dnn_interface.h
ff_dnn_execute_model_classification
int ff_dnn_execute_model_classification(DnnContext *ctx, AVFrame *in_frame, AVFrame *out_frame, const char *target)
Definition: dnn_filter_common.c:183
ff_dnn_execute_model
int ff_dnn_execute_model(DnnContext *ctx, AVFrame *in_frame, AVFrame *out_frame)
Definition: dnn_filter_common.c:171
FramePrePostProc
int(* FramePrePostProc)(AVFrame *frame, DNNData *model, AVFilterContext *filter_ctx)
Definition: dnn_interface.h:89
AVFilterContext
An instance of a filter.
Definition: avfilter.h:407
ff_dnn_flush
int ff_dnn_flush(DnnContext *ctx)
Definition: dnn_filter_common.c:203
ff_dnn_set_frame_proc
int ff_dnn_set_frame_proc(DnnContext *ctx, FramePrePostProc pre_proc, FramePrePostProc post_proc)
Definition: dnn_filter_common.c:139
DNNAsyncStatusType
DNNAsyncStatusType
Definition: dnn_interface.h:45