libvmaf
Toggle main menu visibility
Loading...
Searching...
No Matches
feature_extractor.h
Go to the documentation of this file.
1
18
19
#ifndef __VMAF_FEATURE_EXTRACTOR_H__
20
#define __VMAF_FEATURE_EXTRACTOR_H__
21
22
#include <stdatomic.h>
23
#include <stdint.h>
24
#include <stdlib.h>
25
26
#include "dict.h"
27
#include "framesync.h"
28
#include "
feature_collector.h
"
29
#include "opt.h"
30
31
#include "
libvmaf/picture.h
"
32
33
#ifdef HAVE_CUDA
34
#include "cuda/common.h"
35
#endif
36
37
enum
VmafFeatureExtractorFlags
{
38
VMAF_FEATURE_EXTRACTOR_TEMPORAL
= 1 << 0,
39
VMAF_FEATURE_EXTRACTOR_CUDA
= 1 << 1,
40
VMAF_FEATURE_FRAME_SYNC
= 1 << 2,
41
VMAF_FEATURE_EXTRACTOR_PREV_REF
= 1 << 3,
42
};
43
44
typedef
struct
VmafFeatureExtractor
{
45
const
char
*
name
;
55
int (*
init
)(
struct
VmafFeatureExtractor
*fex,
enum
VmafPixelFormat
pix_fmt,
56
unsigned
bpc,
unsigned
w,
unsigned
h);
71
int (*
extract
)(
struct
VmafFeatureExtractor
*fex,
72
VmafPicture
*ref_pic,
VmafPicture
*ref_pic_90,
73
VmafPicture
*dist_pic,
VmafPicture
*dist_pic_90,
74
unsigned
index,
VmafFeatureCollector
*feature_collector);
82
int (*
flush
)(
struct
VmafFeatureExtractor
*fex,
83
VmafFeatureCollector
*feature_collector);
89
int (*
close
)(
struct
VmafFeatureExtractor
*fex);
90
const
VmafOption *
options
;
91
void
*
priv
;
92
size_t
priv_size
;
93
uint64_t
flags
;
94
const
char
**
provided_features
;
95
96
#ifdef HAVE_CUDA
97
VmafCudaState
*cu_state;
98
#endif
99
100
VmafFrameSyncContext *
framesync
;
101
VmafPicture
prev_ref
;
102
VmafPicture
prev_prev_ref
;
103
104
}
VmafFeatureExtractor
;
105
106
VmafFeatureExtractor
*
vmaf_get_feature_extractor_by_name
(
const
char
*
name
);
107
VmafFeatureExtractor
*
vmaf_get_feature_extractor_by_feature_name
(
const
char
*
name
,
108
unsigned
flags
);
109
110
enum
VmafFeatureExtractorContextFlags
{
111
VMAF_FEATURE_EXTRACTOR_CONTEXT_DO_NOT_OVERWRITE
= 1 << 0,
112
};
113
114
typedef
struct
VmafFeatureExtractorContext
{
115
bool
is_initialized
,
is_closed
;
116
VmafDictionary *
opts_dict
;
117
VmafFeatureExtractor
*
fex
;
118
}
VmafFeatureExtractorContext
;
119
120
int
vmaf_feature_extractor_context_create
(
VmafFeatureExtractorContext
**fex_ctx,
121
VmafFeatureExtractor
*fex,
122
VmafDictionary *opts_dict);
123
124
int
vmaf_feature_extractor_context_init
(
VmafFeatureExtractorContext
*fex_ctx,
125
enum
VmafPixelFormat
pix_fmt,
126
unsigned
bpc,
unsigned
w,
unsigned
h);
127
128
int
vmaf_feature_extractor_context_extract
(
VmafFeatureExtractorContext
*fex_ctx,
129
VmafPicture
*ref,
VmafPicture
*ref_90,
130
VmafPicture
*dist,
VmafPicture
*dist_90,
131
unsigned
pic_index,
132
VmafFeatureCollector
*vfc);
133
134
int
vmaf_feature_extractor_context_flush
(
VmafFeatureExtractorContext
*fex_ctx,
135
VmafFeatureCollector
*vfc);
136
137
int
vmaf_feature_extractor_context_close
(
VmafFeatureExtractorContext
*fex_ctx);
138
139
int
vmaf_feature_extractor_context_delete
(
VmafFeatureExtractorContext
*fex_ctx);
140
141
int
vmaf_feature_extractor_context_destroy
(
VmafFeatureExtractorContext
*fex_ctx);
142
143
typedef
struct
VmafFeatureExtractorContextPool
{
144
struct
fex_list_entry
{
145
VmafFeatureExtractor
*
fex
;
146
VmafDictionary *
opts_dict
;
147
struct
{
148
VmafFeatureExtractorContext
*
fex_ctx
;
149
bool
in_use
;
150
} *
ctx_list
;
151
atomic_int
capacity
,
in_use
;
152
pthread_cond_t
full
;
153
} *
fex_list
;
154
unsigned
cnt
,
capacity
;
155
pthread_mutex_t
lock
;
156
unsigned
n_threads
;
157
}
VmafFeatureExtractorContextPool
;
158
159
int
vmaf_fex_ctx_pool_create
(
VmafFeatureExtractorContextPool
**pool,
160
unsigned
n_threads);
161
162
int
vmaf_fex_ctx_pool_aquire
(
VmafFeatureExtractorContextPool
*pool,
163
VmafFeatureExtractor
*fex,
164
VmafDictionary *opts_dict,
165
VmafFeatureExtractorContext
**fex_ctx);
166
167
int
vmaf_fex_ctx_pool_release
(
VmafFeatureExtractorContextPool
*pool,
168
VmafFeatureExtractorContext
*fex_ctx);
169
170
int
vmaf_fex_ctx_pool_flush
(
VmafFeatureExtractorContextPool
*pool,
171
VmafFeatureCollector
*feature_collector);
172
173
int
vmaf_fex_ctx_pool_destroy
(
VmafFeatureExtractorContextPool
*pool);
174
175
#endif
/* __VMAF_FEATURE_EXTRACTOR_H__ */
feature_collector.h
vmaf_feature_extractor_context_flush
int vmaf_feature_extractor_context_flush(VmafFeatureExtractorContext *fex_ctx, VmafFeatureCollector *vfc)
vmaf_fex_ctx_pool_destroy
int vmaf_fex_ctx_pool_destroy(VmafFeatureExtractorContextPool *pool)
vmaf_fex_ctx_pool_release
int vmaf_fex_ctx_pool_release(VmafFeatureExtractorContextPool *pool, VmafFeatureExtractorContext *fex_ctx)
VmafFeatureExtractorContextFlags
VmafFeatureExtractorContextFlags
Definition
feature_extractor.h:110
VMAF_FEATURE_EXTRACTOR_CONTEXT_DO_NOT_OVERWRITE
@ VMAF_FEATURE_EXTRACTOR_CONTEXT_DO_NOT_OVERWRITE
Definition
feature_extractor.h:111
vmaf_feature_extractor_context_create
int vmaf_feature_extractor_context_create(VmafFeatureExtractorContext **fex_ctx, VmafFeatureExtractor *fex, VmafDictionary *opts_dict)
vmaf_feature_extractor_context_extract
int vmaf_feature_extractor_context_extract(VmafFeatureExtractorContext *fex_ctx, VmafPicture *ref, VmafPicture *ref_90, VmafPicture *dist, VmafPicture *dist_90, unsigned pic_index, VmafFeatureCollector *vfc)
VmafFeatureExtractorFlags
VmafFeatureExtractorFlags
Definition
feature_extractor.h:37
VMAF_FEATURE_EXTRACTOR_CUDA
@ VMAF_FEATURE_EXTRACTOR_CUDA
Definition
feature_extractor.h:39
VMAF_FEATURE_FRAME_SYNC
@ VMAF_FEATURE_FRAME_SYNC
Definition
feature_extractor.h:40
VMAF_FEATURE_EXTRACTOR_TEMPORAL
@ VMAF_FEATURE_EXTRACTOR_TEMPORAL
Definition
feature_extractor.h:38
VMAF_FEATURE_EXTRACTOR_PREV_REF
@ VMAF_FEATURE_EXTRACTOR_PREV_REF
Definition
feature_extractor.h:41
vmaf_get_feature_extractor_by_name
VmafFeatureExtractor * vmaf_get_feature_extractor_by_name(const char *name)
vmaf_fex_ctx_pool_create
int vmaf_fex_ctx_pool_create(VmafFeatureExtractorContextPool **pool, unsigned n_threads)
vmaf_feature_extractor_context_destroy
int vmaf_feature_extractor_context_destroy(VmafFeatureExtractorContext *fex_ctx)
vmaf_feature_extractor_context_init
int vmaf_feature_extractor_context_init(VmafFeatureExtractorContext *fex_ctx, enum VmafPixelFormat pix_fmt, unsigned bpc, unsigned w, unsigned h)
vmaf_feature_extractor_context_delete
int vmaf_feature_extractor_context_delete(VmafFeatureExtractorContext *fex_ctx)
vmaf_get_feature_extractor_by_feature_name
VmafFeatureExtractor * vmaf_get_feature_extractor_by_feature_name(const char *name, unsigned flags)
vmaf_feature_extractor_context_close
int vmaf_feature_extractor_context_close(VmafFeatureExtractorContext *fex_ctx)
vmaf_fex_ctx_pool_flush
int vmaf_fex_ctx_pool_flush(VmafFeatureExtractorContextPool *pool, VmafFeatureCollector *feature_collector)
vmaf_fex_ctx_pool_aquire
int vmaf_fex_ctx_pool_aquire(VmafFeatureExtractorContextPool *pool, VmafFeatureExtractor *fex, VmafDictionary *opts_dict, VmafFeatureExtractorContext **fex_ctx)
VmafCudaState
struct VmafCudaState VmafCudaState
Definition
libvmaf_cuda.h:28
picture.h
VmafPixelFormat
VmafPixelFormat
Definition
picture.h:28
VmafFeatureCollector
Definition
feature_collector.h:52
VmafFeatureExtractorContextPool::fex_list_entry::[struct].ctx_list::in_use
bool in_use
VmafFeatureExtractorContextPool::fex_list_entry::[struct].ctx_list::fex_ctx
VmafFeatureExtractorContext * fex_ctx
VmafFeatureExtractorContextPool::fex_list_entry
Definition
feature_extractor.h:144
VmafFeatureExtractorContextPool::fex_list_entry::fex
VmafFeatureExtractor * fex
Definition
feature_extractor.h:145
VmafFeatureExtractorContextPool::fex_list_entry::ctx_list
struct VmafFeatureExtractorContextPool::fex_list_entry::@140232147361234020075056063166160343065210217150 * ctx_list
VmafFeatureExtractorContextPool::fex_list_entry::capacity
atomic_int capacity
Definition
feature_extractor.h:151
VmafFeatureExtractorContextPool::fex_list_entry::opts_dict
VmafDictionary * opts_dict
Definition
feature_extractor.h:146
VmafFeatureExtractorContextPool::fex_list_entry::in_use
atomic_int in_use
Definition
feature_extractor.h:151
VmafFeatureExtractorContextPool::fex_list_entry::full
pthread_cond_t full
Definition
feature_extractor.h:152
VmafFeatureExtractorContextPool
Definition
feature_extractor.h:143
VmafFeatureExtractorContextPool::fex_list
struct VmafFeatureExtractorContextPool::fex_list_entry * fex_list
VmafFeatureExtractorContextPool::cnt
unsigned cnt
Definition
feature_extractor.h:154
VmafFeatureExtractorContextPool::n_threads
unsigned n_threads
Definition
feature_extractor.h:156
VmafFeatureExtractorContextPool::capacity
unsigned capacity
Definition
feature_extractor.h:154
VmafFeatureExtractorContextPool::lock
pthread_mutex_t lock
Definition
feature_extractor.h:155
VmafFeatureExtractorContext
Definition
feature_extractor.h:114
VmafFeatureExtractorContext::fex
VmafFeatureExtractor * fex
Definition
feature_extractor.h:117
VmafFeatureExtractorContext::opts_dict
VmafDictionary * opts_dict
Definition
feature_extractor.h:116
VmafFeatureExtractorContext::is_closed
bool is_closed
Definition
feature_extractor.h:115
VmafFeatureExtractorContext::is_initialized
bool is_initialized
Definition
feature_extractor.h:115
VmafFeatureExtractor
Definition
feature_extractor.h:44
VmafFeatureExtractor::provided_features
const char ** provided_features
Provided feature list, NULL terminated.
Definition
feature_extractor.h:94
VmafFeatureExtractor::prev_prev_ref
VmafPicture prev_prev_ref
Reference picture from two frames ago (n-2), set by framework.
Definition
feature_extractor.h:102
VmafFeatureExtractor::framesync
VmafFrameSyncContext * framesync
Definition
feature_extractor.h:100
VmafFeatureExtractor::priv
void * priv
Custom data.
Definition
feature_extractor.h:91
VmafFeatureExtractor::close
int(*) close(struct VmafFeatureExtractor *fex)
Definition
feature_extractor.h:89
VmafFeatureExtractor::extract
int(*) extract(struct VmafFeatureExtractor *fex, VmafPicture *ref_pic, VmafPicture *ref_pic_90, VmafPicture *dist_pic, VmafPicture *dist_pic_90, unsigned index, VmafFeatureCollector *feature_collector)
Definition
feature_extractor.h:71
VmafFeatureExtractor::prev_ref
VmafPicture prev_ref
Previous reference picture (n-1), set by framework.
Definition
feature_extractor.h:101
VmafFeatureExtractor::name
const char * name
Name of feature extractor.
Definition
feature_extractor.h:45
VmafFeatureExtractor::flags
uint64_t flags
Feauture extraction flags, binary or'd.
Definition
feature_extractor.h:93
VmafFeatureExtractor::flush
int(*) flush(struct VmafFeatureExtractor *fex, VmafFeatureCollector *feature_collector)
Definition
feature_extractor.h:82
VmafFeatureExtractor::options
const VmafOption * options
Optional initialization options.
Definition
feature_extractor.h:90
VmafFeatureExtractor::init
int(*) init(struct VmafFeatureExtractor *fex, enum VmafPixelFormat pix_fmt, unsigned bpc, unsigned w, unsigned h)
Definition
feature_extractor.h:55
VmafFeatureExtractor::priv_size
size_t priv_size
sizeof private data.
Definition
feature_extractor.h:92
VmafPicture
Definition
picture.h:38
src
feature
feature_extractor.h
Generated by
1.18.0