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);
+
+