Mercurial > mplayer.hg
view libmpcodecs/pullup.h @ 10773:012eeac10e16
direct render frames whose fields are not in a common buffer, rather
than repacking them together and exporting. slight performance boost.
author | rfelker |
---|---|
date | Mon, 01 Sep 2003 02:54:06 +0000 |
parents | b6b68224033d |
children | fdcd0d571912 |
line wrap: on
line source
#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; int verbose; /* 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);