GCC Code Coverage Report
Directory: ../../../ffmpeg/ Exec Total Coverage
File: src/libavfilter/dnn/dnn_interface.c Lines: 0 21 0.0 %
Date: 2020-08-14 10:39:37 Branches: 0 6 0.0 %

Line Branch Exec Source
1
/*
2
 * Copyright (c) 2018 Sergey Lavrushkin
3
 *
4
 * This file is part of FFmpeg.
5
 *
6
 * FFmpeg is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU Lesser General Public
8
 * License as published by the Free Software Foundation; either
9
 * version 2.1 of the License, or (at your option) any later version.
10
 *
11
 * FFmpeg is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
 * Lesser General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU Lesser General Public
17
 * License along with FFmpeg; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
 */
20
21
/**
22
 * @file
23
 * Implements DNN module initialization with specified backend.
24
 */
25
26
#include "../dnn_interface.h"
27
#include "dnn_backend_native.h"
28
#include "dnn_backend_tf.h"
29
#include "dnn_backend_openvino.h"
30
#include "libavutil/mem.h"
31
32
DNNModule *ff_get_dnn_module(DNNBackendType backend_type)
33
{
34
    DNNModule *dnn_module;
35
36
    dnn_module = av_malloc(sizeof(DNNModule));
37
    if(!dnn_module){
38
        return NULL;
39
    }
40
41
    switch(backend_type){
42
    case DNN_NATIVE:
43
        dnn_module->load_model = &ff_dnn_load_model_native;
44
        dnn_module->execute_model = &ff_dnn_execute_model_native;
45
        dnn_module->free_model = &ff_dnn_free_model_native;
46
        break;
47
    case DNN_TF:
48
    #if (CONFIG_LIBTENSORFLOW == 1)
49
        dnn_module->load_model = &ff_dnn_load_model_tf;
50
        dnn_module->execute_model = &ff_dnn_execute_model_tf;
51
        dnn_module->free_model = &ff_dnn_free_model_tf;
52
    #else
53
        av_freep(&dnn_module);
54
        return NULL;
55
    #endif
56
        break;
57
    case DNN_OV:
58
    #if (CONFIG_LIBOPENVINO == 1)
59
        dnn_module->load_model = &ff_dnn_load_model_ov;
60
        dnn_module->execute_model = &ff_dnn_execute_model_ov;
61
        dnn_module->free_model = &ff_dnn_free_model_ov;
62
    #else
63
        av_freep(&dnn_module);
64
        return NULL;
65
    #endif
66
        break;
67
    default:
68
        av_log(NULL, AV_LOG_ERROR, "Module backend_type is not native or tensorflow\n");
69
        av_freep(&dnn_module);
70
        return NULL;
71
    }
72
73
    return dnn_module;
74
}