#include "libavutil/avstring.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "avfilter.h"
#include "drawutils.h"
#include "formats.h"
#include "framesync.h"
#include "internal.h"
#include "psnr.h"
#include "video.h"
Go to the source code of this file.
|
| FRAMESYNC_DEFINE_CLASS (psnr, PSNRContext, fs) |
|
static unsigned | pow_2 (unsigned base) |
|
static double | get_psnr (double mse, uint64_t nb_frames, int max) |
|
static uint64_t | sse_line_8bit (const uint8_t *main_line, const uint8_t *ref_line, int outw) |
|
static uint64_t | sse_line_16bit (const uint8_t *_main_line, const uint8_t *_ref_line, int outw) |
|
static int | compute_images_mse (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) |
|
static void | set_meta (AVDictionary **metadata, const char *key, char comp, float d) |
|
static int | do_psnr (FFFrameSync *fs) |
|
static av_cold int | init (AVFilterContext *ctx) |
|
static int | config_input_ref (AVFilterLink *inlink) |
|
static int | config_output (AVFilterLink *outlink) |
|
static int | activate (AVFilterContext *ctx) |
|
static av_cold void | uninit (AVFilterContext *ctx) |
|
Calculate the PSNR between two input videos.
Definition in file vf_psnr.c.
◆ OFFSET
◆ FLAGS
◆ PF_NOALPHA
#define PF_NOALPHA |
( |
|
suf | ) |
AV_PIX_FMT_YUV420##suf, AV_PIX_FMT_YUV422##suf, AV_PIX_FMT_YUV444##suf |
◆ PF_ALPHA
#define PF_ALPHA |
( |
|
suf | ) |
AV_PIX_FMT_YUVA420##suf, AV_PIX_FMT_YUVA422##suf, AV_PIX_FMT_YUVA444##suf |
◆ PF
◆ FRAMESYNC_DEFINE_CLASS()
◆ pow_2()
static unsigned pow_2 |
( |
unsigned |
base | ) |
|
|
inlinestatic |
◆ get_psnr()
static double get_psnr |
( |
double |
mse, |
|
|
uint64_t |
nb_frames, |
|
|
int |
max |
|
) |
| |
|
inlinestatic |
◆ sse_line_8bit()
static uint64_t sse_line_8bit |
( |
const uint8_t * |
main_line, |
|
|
const uint8_t * |
ref_line, |
|
|
int |
outw |
|
) |
| |
|
static |
◆ sse_line_16bit()
static uint64_t sse_line_16bit |
( |
const uint8_t * |
_main_line, |
|
|
const uint8_t * |
_ref_line, |
|
|
int |
outw |
|
) |
| |
|
static |
◆ compute_images_mse()
◆ set_meta()
static void set_meta |
( |
AVDictionary ** |
metadata, |
|
|
const char * |
key, |
|
|
char |
comp, |
|
|
float |
d |
|
) |
| |
|
static |
◆ do_psnr()
◆ init()
◆ config_input_ref()
◆ config_output()
◆ activate()
◆ uninit()
◆ psnr_options
Initial value:
Definition at line 65 of file vf_psnr.c.
◆ pix_fmts
Initial value:= {
#define PF_NOALPHA(suf)
#define PF_ALPHA(suf)
#define PF(suf)
}
Definition at line 299 of file vf_psnr.c.
◆ psnr_inputs
Initial value:= {
{
.name = "main",
},{
.name = "reference",
},
}
Definition at line 438 of file vf_psnr.c.
◆ psnr_outputs
Initial value:= {
{
.name = "default",
},
}
Definition at line 449 of file vf_psnr.c.
◆ ff_vf_psnr
Initial value:= {
.name = "psnr",
.preinit = psnr_framesync_preinit,
.priv_class = &psnr_class,
}
Definition at line 457 of file vf_psnr.c.
#define AV_PIX_FMT_GBRAP16
static int config_input_ref(AVFilterLink *inlink)
#define FILTER_PIXFMTS_ARRAY(array)
@ AV_PIX_FMT_YUV440P
planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
static av_cold int init(AVFilterContext *ctx)
static const AVFilterPad psnr_inputs[]
#define AV_PIX_FMT_GBRP14
@ AV_PIX_FMT_GBRAP
planar GBRA 4:4:4:4 32bpp
#define AV_PIX_FMT_GBRP10
#define AV_PIX_FMT_GRAY16
@ AV_PIX_FMT_YUVJ411P
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor ...
@ AV_PIX_FMT_YUVJ422P
planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting col...
#define AV_PIX_FMT_GBRAP10
#define AV_PIX_FMT_GBRAP12
#define AV_PIX_FMT_GRAY14
#define FILTER_INPUTS(array)
@ AV_PIX_FMT_YUVJ444P
planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting col...
#define AV_PIX_FMT_GRAY10
#define AV_PIX_FMT_GBRP16
@ AV_PIX_FMT_YUVJ420P
planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting col...
@ AV_PIX_FMT_GRAY8
Y , 8bpp.
static const AVFilterPad psnr_outputs[]
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
static av_cold void uninit(AVFilterContext *ctx)
static enum AVPixelFormat pix_fmts[]
#define AV_PIX_FMT_GBRP12
static int config_output(AVFilterLink *outlink)
@ AV_PIX_FMT_YUVJ440P
planar YUV 4:4:0 full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV440P and setting color_range
#define AVFILTER_FLAG_METADATA_ONLY
The filter is a "metadata" filter - it does not modify the frame data in any way.
static int activate(AVFilterContext *ctx)
@ AV_PIX_FMT_GBRP
planar GBR 4:4:4 24bpp
#define AVFILTER_FLAG_SLICE_THREADS
The filter supports multithreading by splitting frames into multiple parts and processing them concur...
#define FILTER_OUTPUTS(array)
@ AV_PIX_FMT_YUV411P
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
#define AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL
Same as AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC, except that the filter will have its filter_frame() c...
@ AV_PIX_FMT_YUV410P
planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples)
#define AV_PIX_FMT_GRAY12