Mercurial > mplayer.hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
10663:711159267b2d | 10664:d47ca466c97b |
---|---|
1 | |
2 | |
3 #define PULLUP_CPU_MMX 1 | |
4 #define PULLUP_CPU_MMX2 2 | |
5 #define PULLUP_CPU_3DNOW 4 | |
6 #define PULLUP_CPU_3DNOWEXT 8 | |
7 #define PULLUP_CPU_SSE 16 | |
8 #define PULLUP_CPU_SSE2 32 | |
9 | |
10 #define PULLUP_FMT_Y 1 | |
11 #define PULLUP_FMT_YUY2 2 | |
12 #define PULLUP_FMT_UYVY 3 | |
13 #define PULLUP_FMT_RGB32 4 | |
14 | |
15 struct pullup_buffer | |
16 { | |
17 int lock[2]; | |
18 unsigned char **planes; | |
19 }; | |
20 | |
21 struct pullup_field | |
22 { | |
23 int parity; | |
24 struct pullup_buffer *buffer; | |
25 unsigned int flags; | |
26 int breaks; | |
27 int affinity; | |
28 int *diffs; | |
29 int *licomb; | |
30 struct pullup_field *prev, *next; | |
31 }; | |
32 | |
33 struct pullup_frame | |
34 { | |
35 int lock; | |
36 int length; | |
37 int parity; | |
38 struct pullup_buffer **fields; | |
39 struct pullup_buffer *buffer; | |
40 }; | |
41 | |
42 struct pullup_context | |
43 { | |
44 /* Public interface */ | |
45 int format; | |
46 int nplanes; | |
47 int *bpp, *w, *h, *stride, *background; | |
48 unsigned int cpu; | |
49 int junk_left, junk_right, junk_top, junk_bottom; | |
50 /* Internal data */ | |
51 struct pullup_field *first, *last, *head; | |
52 struct pullup_buffer *buffers; | |
53 int nbuffers; | |
54 int (*diff)(unsigned char *, unsigned char *, int); | |
55 int (*licomb)(unsigned char *, unsigned char *, int); | |
56 int metric_w, metric_h, metric_len, metric_offset; | |
57 struct pullup_frame *frame; | |
58 }; | |
59 | |
60 | |
61 struct pullup_buffer *pullup_lock_buffer(struct pullup_buffer *b, int parity); | |
62 void pullup_release_buffer(struct pullup_buffer *b, int parity); | |
63 struct pullup_buffer *pullup_get_buffer(struct pullup_context *c, int parity); | |
64 | |
65 int pullup_submit_field(struct pullup_context *c, struct pullup_buffer *b, int parity); | |
66 void pullup_flush_fields(struct pullup_context *c); | |
67 | |
68 struct pullup_frame *pullup_get_frame(struct pullup_context *c); | |
69 void pullup_pack_frame(struct pullup_context *c, struct pullup_frame *fr); | |
70 void pullup_release_frame(struct pullup_frame *fr); | |
71 | |
72 struct pullup_context *pullup_alloc_context(); | |
73 void pullup_preinit_context(struct pullup_context *c); | |
74 void pullup_init_context(struct pullup_context *c); | |
75 void pullup_free_context(struct pullup_context *c); | |
76 | |
77 |