diff options
author | rfelker <rfelker@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-08-18 15:24:08 +0000 |
---|---|---|
committer | rfelker <rfelker@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-08-18 15:24:08 +0000 |
commit | 0a378573a8de671e6a5735f78a982d81946cdf7b (patch) | |
tree | 664be11ac552e8f9cdd30218a204906fe0685a5a /libmpcodecs/pullup.h | |
parent | 48ecb3e717979195d45c691366da422fb7b06f90 (diff) | |
download | mpv-0a378573a8de671e6a5735f78a982d81946cdf7b.tar.bz2 mpv-0a378573a8de671e6a5735f78a982d81946cdf7b.tar.xz |
pullup -- third generation inverse telecine engine. the backend
(pullup.[ch]) is not mplayer-specific and is designed to work well
with g2; vf_pullup.c is the g1 wrapper. see man page for details, and
keep in mind, this is a work in progress.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10665 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs/pullup.h')
-rw-r--r-- | libmpcodecs/pullup.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/libmpcodecs/pullup.h b/libmpcodecs/pullup.h new file mode 100644 index 0000000000..a51f0e169f --- /dev/null +++ b/libmpcodecs/pullup.h @@ -0,0 +1,77 @@ + + +#define PULLUP_CPU_MMX 1 +#define PULLUP_CPU_MMX2 2 +#define PULLUP_CPU_3DNOW 4 +#define PULLUP_CPU_3DNOWEXT 8 +#define PULLUP_CPU_SSE 16 +#define PULLUP_CPU_SSE2 32 + +#define PULLUP_FMT_Y 1 +#define PULLUP_FMT_YUY2 2 +#define PULLUP_FMT_UYVY 3 +#define PULLUP_FMT_RGB32 4 + +struct pullup_buffer +{ + int lock[2]; + unsigned char **planes; +}; + +struct pullup_field +{ + int parity; + struct pullup_buffer *buffer; + unsigned int flags; + int breaks; + int affinity; + int *diffs; + int *licomb; + struct pullup_field *prev, *next; +}; + +struct pullup_frame +{ + int lock; + int length; + int parity; + struct pullup_buffer **fields; + struct pullup_buffer *buffer; +}; + +struct pullup_context +{ + /* Public interface */ + int format; + int nplanes; + int *bpp, *w, *h, *stride, *background; + unsigned int cpu; + int junk_left, junk_right, junk_top, junk_bottom; + /* Internal data */ + struct pullup_field *first, *last, *head; + struct pullup_buffer *buffers; + int nbuffers; + int (*diff)(unsigned char *, unsigned char *, int); + int (*licomb)(unsigned char *, unsigned char *, int); + int metric_w, metric_h, metric_len, metric_offset; + struct pullup_frame *frame; +}; + + +struct pullup_buffer *pullup_lock_buffer(struct pullup_buffer *b, int parity); +void pullup_release_buffer(struct pullup_buffer *b, int parity); +struct pullup_buffer *pullup_get_buffer(struct pullup_context *c, int parity); + +int pullup_submit_field(struct pullup_context *c, struct pullup_buffer *b, int parity); +void pullup_flush_fields(struct pullup_context *c); + +struct pullup_frame *pullup_get_frame(struct pullup_context *c); +void pullup_pack_frame(struct pullup_context *c, struct pullup_frame *fr); +void pullup_release_frame(struct pullup_frame *fr); + +struct pullup_context *pullup_alloc_context(); +void pullup_preinit_context(struct pullup_context *c); +void pullup_init_context(struct pullup_context *c); +void pullup_free_context(struct pullup_context *c); + + |