FFmpeg
Data Structures | Macros | Functions
dnn_backend_tf.c File Reference

DNN tensorflow backend implementation. More...

#include "dnn_backend_tf.h"
#include "dnn_backend_native.h"
#include "libavformat/avio.h"
#include "libavutil/avassert.h"
#include "dnn_backend_native_layer_pad.h"
#include <tensorflow/c/c_api.h>

Go to the source code of this file.

Data Structures

struct  TFModel
 

Macros

#define NAME_BUFFER_SIZE   256
 
#define CLEANUP_ON_ERROR(tf_model)
 

Functions

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 DNNInputData *input)
 
static DNNReturnType set_input_output_tf (void *model, DNNInputData *input, const char *input_name, const char **output_names, uint32_t nb_output)
 
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 load_native_model (TFModel *tf_model, const char *model_filename)
 
DNNModelff_dnn_load_model_tf (const char *model_filename)
 
DNNReturnType ff_dnn_execute_model_tf (const DNNModel *model, DNNData *outputs, uint32_t nb_output)
 
void ff_dnn_free_model_tf (DNNModel **model)
 

Detailed Description

DNN tensorflow backend implementation.

Definition in file dnn_backend_tf.c.

Macro Definition Documentation

#define NAME_BUFFER_SIZE   256

Definition at line 212 of file dnn_backend_tf.c.

Referenced by add_conv_layer(), add_depth_to_space_layer(), and add_pad_layer().

#define CLEANUP_ON_ERROR (   tf_model)
Value:
{ \
TF_DeleteGraph(tf_model->graph); \
TF_DeleteStatus(tf_model->status); \
}
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a it should return

Referenced by load_native_model().

Function Documentation

static void free_buffer ( void data,
size_t  length 
)
static

Definition at line 45 of file dnn_backend_tf.c.

Referenced by read_graph().

static TF_Buffer* read_graph ( const char *  model_filename)
static

Definition at line 50 of file dnn_backend_tf.c.

Referenced by load_tf_model().

static TF_Tensor* allocate_input_tensor ( const DNNInputData input)
static

Definition at line 83 of file dnn_backend_tf.c.

Referenced by set_input_output_tf().

static DNNReturnType set_input_output_tf ( void model,
DNNInputData input,
const char *  input_name,
const char **  output_names,
uint32_t  nb_output 
)
static

Definition at line 105 of file dnn_backend_tf.c.

Referenced by ff_dnn_load_model_tf().

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

Definition at line 188 of file dnn_backend_tf.c.

Referenced by ff_dnn_load_model_tf().

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 214 of file dnn_backend_tf.c.

Referenced by load_native_model().

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

Definition at line 329 of file dnn_backend_tf.c.

Referenced by load_native_model().

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

Definition at line 351 of file dnn_backend_tf.c.

Referenced by load_native_model().

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

Definition at line 402 of file dnn_backend_tf.c.

Referenced by ff_dnn_load_model_tf().

DNNModel* ff_dnn_load_model_tf ( const char *  model_filename)

Definition at line 495 of file dnn_backend_tf.c.

Referenced by ff_get_dnn_module().

DNNReturnType ff_dnn_execute_model_tf ( const DNNModel model,
DNNData outputs,
uint32_t  nb_output 
)

Definition at line 528 of file dnn_backend_tf.c.

Referenced by ff_get_dnn_module().

void ff_dnn_free_model_tf ( DNNModel **  model)

Definition at line 562 of file dnn_backend_tf.c.

Referenced by ff_get_dnn_module().