libvmaf/src/feature/feature_collector.h (57 lines of code) (raw):

/** * * Copyright 2016-2020 Netflix, Inc. * * Licensed under the BSD+Patent License (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://opensource.org/licenses/BSDplusPatent * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ #ifndef __VMAF_FEATURE_COLLECTOR_H__ #define __VMAF_FEATURE_COLLECTOR_H__ #include <pthread.h> #include <stdbool.h> #include <time.h> #include "dict.h" #include "model.h" #include "metadata_handler.h" typedef struct { char *name; struct { bool written; double value; } *score; unsigned capacity; } FeatureVector; typedef struct { struct { char *name; double value; } *metric; unsigned cnt, capacity; } AggregateVector; typedef struct VmafPredictModel { VmafModel *model; struct VmafPredictModel *next; } VmafPredictModel; typedef struct VmafFeatureCollector { FeatureVector **feature_vector; AggregateVector aggregate_vector; VmafCallbackList *metadata; VmafPredictModel *models; unsigned cnt, capacity; struct { clock_t begin, end; } timer; pthread_mutex_t lock; } VmafFeatureCollector; int vmaf_feature_collector_init(VmafFeatureCollector **const feature_collector); int vmaf_feature_collector_mount_model(VmafFeatureCollector *feature_collector, VmafModel *model); int vmaf_feature_collector_append(VmafFeatureCollector *feature_collector, const char *feature_name, double score, unsigned index); int vmaf_feature_collector_register_metadata(VmafFeatureCollector *feature_collector, VmafMetadataConfiguration metadata_cfg); int vmaf_feature_collector_append_with_dict(VmafFeatureCollector *fc, VmafDictionary *dict, const char *feature_name, double score, unsigned index); int vmaf_feature_collector_get_score(VmafFeatureCollector *feature_collector, const char *feature_name, double *score, unsigned index); int vmaf_feature_collector_set_aggregate(VmafFeatureCollector *feature_collector, const char *feature_name, double score); int vmaf_feature_collector_get_aggregate(VmafFeatureCollector *feature_collector, const char *feature_name, double *score); void vmaf_feature_collector_destroy(VmafFeatureCollector *feature_collector); #endif /* __VMAF_FEATURE_COLLECTOR_H__ */