Mercurial > mplayer.hg
diff libmpcodecs/pullup.h @ 10664:d47ca466c97b
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.
| author | rfelker |
|---|---|
| date | Mon, 18 Aug 2003 15:24:08 +0000 |
| parents | |
| children | b6b68224033d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libmpcodecs/pullup.h Mon Aug 18 15:24:08 2003 +0000 @@ -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); + +
