FFmpeg
Data Structures | Macros | Functions | Variables
dnn_backend_tf.c File Reference
#include "dnn_backend_tf.h"
#include "dnn_backend_native.h"
#include "dnn_backend_native_layer_conv2d.h"
#include "dnn_backend_native_layer_depth2space.h"
#include "libavformat/avio.h"
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "../internal.h"
#include "dnn_backend_native_layer_pad.h"
#include "dnn_backend_native_layer_maximum.h"
#include "dnn_io_proc.h"
#include "dnn_backend_common.h"
#include <tensorflow/c/c_api.h>

Go to the source code of this file.

Data Structures

struct  TFOptions
 
struct  TFContext
 
struct  TFModel
 

Macros

#define OFFSET(x)   offsetof(TFContext, x)
 
#define FLAGS   AV_OPT_FLAG_FILTERING_PARAM
 
#define SPACE_CHARS   " \t\r\n"
 
#define NAME_BUFFER_SIZE   256
 
#define CLEANUP_ON_ERROR(tf_model)
 

Functions

 AVFILTER_DEFINE_CLASS (dnn_tensorflow)
 
static DNNReturnType execute_model_tf (const DNNModel *model, const char *input_name, AVFrame *in_frame, const char **output_names, uint32_t nb_output, AVFrame *out_frame, int do_ioproc)
 
static void free_buffer (void *data, size_t length)
 
static TF_Buffer * read_graph (const char *model_filename)
 
static TF_Tensor * allocate_input_tensor (const DNNData *input)
 
static DNNReturnType get_input_tf (void *model, DNNData *input, const char *input_name)
 
static DNNReturnType get_output_tf (void *model, const char *input_name, int input_width, int input_height, const char *output_name, int *output_width, int *output_height)
 
static int hex_to_data (uint8_t *data, const char *p)
 
static DNNReturnType load_tf_model (TFModel *tf_model, const char *model_filename)
 
static DNNReturnType add_conv_layer (TFModel *tf_model, TF_Operation *transpose_op, TF_Operation **cur_op, ConvolutionalParams *params, const int layer)
 
static DNNReturnType add_depth_to_space_layer (TFModel *tf_model, TF_Operation **cur_op, DepthToSpaceParams *params, const int layer)
 
static DNNReturnType add_pad_layer (TFModel *tf_model, TF_Operation **cur_op, LayerPadParams *params, const int layer)
 
static DNNReturnType add_maximum_layer (TFModel *tf_model, TF_Operation **cur_op, DnnLayerMaximumParams *params, const int layer)
 
static DNNReturnType load_native_model (TFModel *tf_model, const char *model_filename)
 
DNNModelff_dnn_load_model_tf (const char *model_filename, DNNFunctionType func_type, const char *options, AVFilterContext *filter_ctx)
 
DNNReturnType ff_dnn_execute_model_tf (const DNNModel *model, DNNExecBaseParams *exec_params)
 
void ff_dnn_free_model_tf (DNNModel **model)
 

Variables

static const AVOption dnn_tensorflow_options []
 

Detailed Description

DNN tensorflow backend implementation.

Definition in file dnn_backend_tf.c.

Macro Definition Documentation

◆ OFFSET

#define OFFSET (   x)    offsetof(TFContext, x)

Definition at line 57 of file dnn_backend_tf.c.

◆ FLAGS

#define FLAGS   AV_OPT_FLAG_FILTERING_PARAM

Definition at line 58 of file dnn_backend_tf.c.

◆ SPACE_CHARS

#define SPACE_CHARS   " \t\r\n"

Definition at line 199 of file dnn_backend_tf.c.

◆ NAME_BUFFER_SIZE

#define NAME_BUFFER_SIZE   256

Definition at line 331 of file dnn_backend_tf.c.

◆ CLEANUP_ON_ERROR

#define CLEANUP_ON_ERROR (   tf_model)
Value:
{ \
TF_DeleteTensor(tensor); \
TF_DeleteGraph(tf_model->graph); \
TF_DeleteStatus(tf_model->status); \
av_log(ctx, AV_LOG_ERROR, "Failed to set value or add operator to layer\n"); \
return DNN_ERROR; \
}

Function Documentation

◆ AVFILTER_DEFINE_CLASS()

AVFILTER_DEFINE_CLASS ( dnn_tensorflow  )

◆ execute_model_tf()

static DNNReturnType execute_model_tf ( const DNNModel model,
const char *  input_name,
AVFrame in_frame,
const char **  output_names,
uint32_t  nb_output,
AVFrame out_frame,
int  do_ioproc 
)
static

Definition at line 736 of file dnn_backend_tf.c.

Referenced by ff_dnn_execute_model_tf(), and get_output_tf().

◆ free_buffer()

static void free_buffer ( void *  data,
size_t  length 
)
static

Definition at line 70 of file dnn_backend_tf.c.

Referenced by read_graph().

◆ read_graph()

static TF_Buffer* read_graph ( const char *  model_filename)
static

Definition at line 75 of file dnn_backend_tf.c.

Referenced by load_tf_model().

◆ allocate_input_tensor()

static TF_Tensor* allocate_input_tensor ( const DNNData input)
static

Definition at line 108 of file dnn_backend_tf.c.

Referenced by execute_model_tf().

◆ get_input_tf()

static DNNReturnType get_input_tf ( void *  model,
DNNData input,
const char *  input_name 
)
static

Definition at line 130 of file dnn_backend_tf.c.

Referenced by execute_model_tf(), and ff_dnn_load_model_tf().

◆ get_output_tf()

static DNNReturnType get_output_tf ( void *  model,
const char *  input_name,
int  input_width,
int  input_height,
const char *  output_name,
int output_width,
int output_height 
)
static

Definition at line 166 of file dnn_backend_tf.c.

Referenced by ff_dnn_load_model_tf().

◆ hex_to_data()

static int hex_to_data ( uint8_t *  data,
const char *  p 
)
static

Definition at line 200 of file dnn_backend_tf.c.

Referenced by load_tf_model().

◆ load_tf_model()

static DNNReturnType load_tf_model ( TFModel tf_model,
const char *  model_filename 
)
static

Definition at line 229 of file dnn_backend_tf.c.

Referenced by ff_dnn_load_model_tf().

◆ add_conv_layer()

static DNNReturnType add_conv_layer ( TFModel tf_model,
TF_Operation *  transpose_op,
TF_Operation **  cur_op,
ConvolutionalParams params,
const int  layer 
)
static

Definition at line 333 of file dnn_backend_tf.c.

Referenced by load_native_model().

◆ add_depth_to_space_layer()

static DNNReturnType add_depth_to_space_layer ( TFModel tf_model,
TF_Operation **  cur_op,
DepthToSpaceParams params,
const int  layer 
)
static

Definition at line 455 of file dnn_backend_tf.c.

Referenced by load_native_model().

◆ add_pad_layer()

static DNNReturnType add_pad_layer ( TFModel tf_model,
TF_Operation **  cur_op,
LayerPadParams params,
const int  layer 
)
static

Definition at line 479 of file dnn_backend_tf.c.

Referenced by load_native_model().

◆ add_maximum_layer()

static DNNReturnType add_maximum_layer ( TFModel tf_model,
TF_Operation **  cur_op,
DnnLayerMaximumParams params,
const int  layer 
)
static

Definition at line 537 of file dnn_backend_tf.c.

Referenced by load_native_model().

◆ load_native_model()

static DNNReturnType load_native_model ( TFModel tf_model,
const char *  model_filename 
)
static

Definition at line 586 of file dnn_backend_tf.c.

Referenced by ff_dnn_load_model_tf().

◆ ff_dnn_load_model_tf()

DNNModel* ff_dnn_load_model_tf ( const char *  model_filename,
DNNFunctionType  func_type,
const char *  options,
AVFilterContext filter_ctx 
)

Definition at line 690 of file dnn_backend_tf.c.

Referenced by ff_get_dnn_module().

◆ ff_dnn_execute_model_tf()

DNNReturnType ff_dnn_execute_model_tf ( const DNNModel model,
DNNExecBaseParams exec_params 
)

Definition at line 887 of file dnn_backend_tf.c.

Referenced by ff_get_dnn_module().

◆ ff_dnn_free_model_tf()

void ff_dnn_free_model_tf ( DNNModel **  model)

Definition at line 900 of file dnn_backend_tf.c.

Referenced by ff_get_dnn_module().

Variable Documentation

◆ dnn_tensorflow_options

const AVOption dnn_tensorflow_options[]
static
Initial value:
= {
{ "sess_config", "config for SessionOptions", OFFSET(options.sess_config), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, FLAGS },
{ NULL }
}

Definition at line 59 of file dnn_backend_tf.c.

FLAGS
#define FLAGS
Definition: dnn_backend_tf.c:58
OFFSET
#define OFFSET(x)
Definition: dnn_backend_tf.c:57
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:181
ctx
AVFormatContext * ctx
Definition: movenc.c:48
NULL
#define NULL
Definition: coverity.c:32
options
const OptionDef options[]
DNN_ERROR
@ DNN_ERROR
Definition: dnn_interface.h:33
AV_OPT_TYPE_STRING
@ AV_OPT_TYPE_STRING
Definition: opt.h:229