FFmpeg
Classes | Macros | Typedefs | Functions | Variables
vf_hqx.c File Reference

hqx magnification filters (hq2x, hq3x, hq4x) More...

#include "libavutil/opt.h"
#include "libavutil/avassert.h"
#include "libavutil/pixdesc.h"
#include "internal.h"

Classes

struct  HQXContext
 
struct  ThreadData
 

Macros

#define OFFSET(x)   offsetof(HQXContext, x)
 
#define FLAGS   AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
 
#define YMASK   0xff0000
 
#define UMASK   0x00ff00
 
#define VMASK   0x0000ff
 
#define ABSDIFF(a, b)   (abs((int)(a)-(int)(b)))
 
#define P(m, r)   ((k_shuffled & (m)) == (r))
 
#define DROP4(z)   ((z) > 4 ? (z)-1 : (z))
 
#define SHF(x, rot, n)   (((x) >> ((rot) ? 7-DROP4(n) : DROP4(n)) & 1) << DROP4(p##n))
 
#define WDIFF(c1, c2)   yuv_diff(rgb2yuv(r2y, c1), rgb2yuv(r2y, c2))
 
#define INTERP_BOOTSTRAP(rot)
 
#define HQX_FUNC(size)
 

Typedefs

typedef int(* hqxfunc_t) (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
typedef struct HQXContext HQXContext
 
typedef struct ThreadData ThreadData
 

Functions

 AVFILTER_DEFINE_CLASS (hqx)
 

Variables

AVFilter ff_vf_hqx
 

Detailed Description

hqx magnification filters (hq2x, hq3x, hq4x)

Originally designed by Maxim Stephin.

See also
http://en.wikipedia.org/wiki/Hqx
http://web.archive.org/web/20131114143602/http://www.hiend3d.com/hq3x.html
http://blog.pkh.me/p/19-butchering-hqx-scaling-filters.html

Macro Definition Documentation

§ HQX_FUNC

#define HQX_FUNC (   size)
Value:
static int hq##size##x(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) \
{ \
hqx_filter(arg, jobnr, nb_jobs, size); \
return 0; \
}
An instance of a filter.
Definition: avfilter.h:338

§ INTERP_BOOTSTRAP

#define INTERP_BOOTSTRAP (   rot)
Value:
const int k_shuffled = SHF(k,rot,0) | SHF(k,rot,1) | SHF(k,rot,2) \
| SHF(k,rot,3) | 0 | SHF(k,rot,5) \
| SHF(k,rot,6) | SHF(k,rot,7) | SHF(k,rot,8); \
\
const uint32_t w0 = w[p0], w1 = w[p1], \
w3 = w[p3], w4 = w[p4], w5 = w[p5], \
w7 = w[p7]

Variable Documentation

§ ff_vf_hqx

AVFilter ff_vf_hqx
Initial value:
= {
.name = "hqx",
.description = NULL_IF_CONFIG_SMALL("Scale the input by 2, 3 or 4 using the hq*x magnification algorithm."),
.priv_size = sizeof(HQXContext),
.init = init,
.query_formats = query_formats,
.inputs = hqx_inputs,
.outputs = hqx_outputs,
.priv_class = &hqx_class,
}
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
#define AVFILTER_FLAG_SLICE_THREADS
The filter supports multithreading by splitting frames into multiple parts and processing them concur...
Definition: avfilter.h:116
Definition: hqx.h:62