libvmaf
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
43
44typedef 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;
103
105
108 unsigned flags);
109
113
119
122 VmafDictionary *opts_dict);
123
125 enum VmafPixelFormat pix_fmt,
126 unsigned bpc, unsigned w, unsigned h);
127
129 VmafPicture *ref, VmafPicture *ref_90,
130 VmafPicture *dist, VmafPicture *dist_90,
131 unsigned pic_index,
133
136
138
140
142
158
160 unsigned n_threads);
161
164 VmafDictionary *opts_dict,
166
169
171 VmafFeatureCollector *feature_collector);
172
174
175#endif /* __VMAF_FEATURE_EXTRACTOR_H__ */
int vmaf_feature_extractor_context_flush(VmafFeatureExtractorContext *fex_ctx, VmafFeatureCollector *vfc)
int vmaf_fex_ctx_pool_destroy(VmafFeatureExtractorContextPool *pool)
int vmaf_fex_ctx_pool_release(VmafFeatureExtractorContextPool *pool, VmafFeatureExtractorContext *fex_ctx)
VmafFeatureExtractorContextFlags
Definition feature_extractor.h:110
@ VMAF_FEATURE_EXTRACTOR_CONTEXT_DO_NOT_OVERWRITE
Definition feature_extractor.h:111
int vmaf_feature_extractor_context_create(VmafFeatureExtractorContext **fex_ctx, VmafFeatureExtractor *fex, VmafDictionary *opts_dict)
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
Definition feature_extractor.h:37
@ VMAF_FEATURE_EXTRACTOR_CUDA
Definition feature_extractor.h:39
@ VMAF_FEATURE_FRAME_SYNC
Definition feature_extractor.h:40
@ VMAF_FEATURE_EXTRACTOR_TEMPORAL
Definition feature_extractor.h:38
@ VMAF_FEATURE_EXTRACTOR_PREV_REF
Definition feature_extractor.h:41
VmafFeatureExtractor * vmaf_get_feature_extractor_by_name(const char *name)
int vmaf_fex_ctx_pool_create(VmafFeatureExtractorContextPool **pool, unsigned n_threads)
int vmaf_feature_extractor_context_destroy(VmafFeatureExtractorContext *fex_ctx)
int vmaf_feature_extractor_context_init(VmafFeatureExtractorContext *fex_ctx, enum VmafPixelFormat pix_fmt, unsigned bpc, unsigned w, unsigned h)
int vmaf_feature_extractor_context_delete(VmafFeatureExtractorContext *fex_ctx)
VmafFeatureExtractor * vmaf_get_feature_extractor_by_feature_name(const char *name, unsigned flags)
int vmaf_feature_extractor_context_close(VmafFeatureExtractorContext *fex_ctx)
int vmaf_fex_ctx_pool_flush(VmafFeatureExtractorContextPool *pool, VmafFeatureCollector *feature_collector)
int vmaf_fex_ctx_pool_aquire(VmafFeatureExtractorContextPool *pool, VmafFeatureExtractor *fex, VmafDictionary *opts_dict, VmafFeatureExtractorContext **fex_ctx)
struct VmafCudaState VmafCudaState
Definition libvmaf_cuda.h:28
VmafPixelFormat
Definition picture.h:28
Definition feature_collector.h:52
bool in_use
VmafFeatureExtractorContext * fex_ctx
Definition feature_extractor.h:144
VmafFeatureExtractor * fex
Definition feature_extractor.h:145
struct VmafFeatureExtractorContextPool::fex_list_entry::@140232147361234020075056063166160343065210217150 * ctx_list
atomic_int capacity
Definition feature_extractor.h:151
VmafDictionary * opts_dict
Definition feature_extractor.h:146
atomic_int in_use
Definition feature_extractor.h:151
pthread_cond_t full
Definition feature_extractor.h:152
Definition feature_extractor.h:143
struct VmafFeatureExtractorContextPool::fex_list_entry * fex_list
unsigned cnt
Definition feature_extractor.h:154
unsigned n_threads
Definition feature_extractor.h:156
unsigned capacity
Definition feature_extractor.h:154
pthread_mutex_t lock
Definition feature_extractor.h:155
Definition feature_extractor.h:114
VmafFeatureExtractor * fex
Definition feature_extractor.h:117
VmafDictionary * opts_dict
Definition feature_extractor.h:116
bool is_closed
Definition feature_extractor.h:115
bool is_initialized
Definition feature_extractor.h:115
Definition feature_extractor.h:44
const char ** provided_features
Provided feature list, NULL terminated.
Definition feature_extractor.h:94
VmafPicture prev_prev_ref
Reference picture from two frames ago (n-2), set by framework.
Definition feature_extractor.h:102
VmafFrameSyncContext * framesync
Definition feature_extractor.h:100
void * priv
Custom data.
Definition feature_extractor.h:91
int(*) close(struct VmafFeatureExtractor *fex)
Definition feature_extractor.h:89
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
VmafPicture prev_ref
Previous reference picture (n-1), set by framework.
Definition feature_extractor.h:101
const char * name
Name of feature extractor.
Definition feature_extractor.h:45
uint64_t flags
Feauture extraction flags, binary or'd.
Definition feature_extractor.h:93
int(*) flush(struct VmafFeatureExtractor *fex, VmafFeatureCollector *feature_collector)
Definition feature_extractor.h:82
const VmafOption * options
Optional initialization options.
Definition feature_extractor.h:90
int(*) init(struct VmafFeatureExtractor *fex, enum VmafPixelFormat pix_fmt, unsigned bpc, unsigned w, unsigned h)
Definition feature_extractor.h:55
size_t priv_size
sizeof private data.
Definition feature_extractor.h:92
Definition picture.h:38