• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • Examples
  • File List
  • Globals

libavfilter/libmpcodecs/pullup.h

Go to the documentation of this file.
00001 /*
00002  * This file is part of MPlayer.
00003  *
00004  * MPlayer is free software; you can redistribute it and/or modify
00005  * it under the terms of the GNU General Public License as published by
00006  * the Free Software Foundation; either version 2 of the License, or
00007  * (at your option) any later version.
00008  *
00009  * MPlayer is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License along
00015  * with MPlayer; if not, write to the Free Software Foundation, Inc.,
00016  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
00017  */
00018 
00019 #ifndef MPLAYER_PULLUP_H
00020 #define MPLAYER_PULLUP_H
00021 
00022 #define PULLUP_CPU_MMX 1
00023 #define PULLUP_CPU_MMX2 2
00024 #define PULLUP_CPU_3DNOW 4
00025 #define PULLUP_CPU_3DNOWEXT 8
00026 #define PULLUP_CPU_SSE 16
00027 #define PULLUP_CPU_SSE2 32
00028 
00029 #define PULLUP_FMT_Y 1
00030 #define PULLUP_FMT_YUY2 2
00031 #define PULLUP_FMT_UYVY 3
00032 #define PULLUP_FMT_RGB32 4
00033 
00034 struct pullup_buffer
00035 {
00036     int lock[2];
00037     unsigned char **planes;
00038 };
00039 
00040 struct pullup_field
00041 {
00042     int parity;
00043     struct pullup_buffer *buffer;
00044     unsigned int flags;
00045     int breaks;
00046     int affinity;
00047     int *diffs;
00048     int *comb;
00049     int *var;
00050     struct pullup_field *prev, *next;
00051 };
00052 
00053 struct pullup_frame
00054 {
00055     int lock;
00056     int length;
00057     int parity;
00058     struct pullup_buffer **ifields, *ofields[2];
00059     struct pullup_buffer *buffer;
00060 };
00061 
00062 struct pullup_context
00063 {
00064     /* Public interface */
00065     int format;
00066     int nplanes;
00067     int *bpp, *w, *h, *stride, *background;
00068     unsigned int cpu;
00069     int junk_left, junk_right, junk_top, junk_bottom;
00070     int verbose;
00071     int metric_plane;
00072     int strict_breaks;
00073     int strict_pairs;
00074     /* Internal data */
00075     struct pullup_field *first, *last, *head;
00076     struct pullup_buffer *buffers;
00077     int nbuffers;
00078     int (*diff)(unsigned char *, unsigned char *, int);
00079     int (*comb)(unsigned char *, unsigned char *, int);
00080     int (*var)(unsigned char *, unsigned char *, int);
00081     int metric_w, metric_h, metric_len, metric_offset;
00082     struct pullup_frame *frame;
00083 };
00084 
00085 
00086 struct pullup_buffer *pullup_lock_buffer(struct pullup_buffer *b, int parity);
00087 void pullup_release_buffer(struct pullup_buffer *b, int parity);
00088 struct pullup_buffer *pullup_get_buffer(struct pullup_context *c, int parity);
00089 
00090 void pullup_submit_field(struct pullup_context *c, struct pullup_buffer *b, int parity);
00091 void pullup_flush_fields(struct pullup_context *c);
00092 
00093 struct pullup_frame *pullup_get_frame(struct pullup_context *c);
00094 void pullup_pack_frame(struct pullup_context *c, struct pullup_frame *fr);
00095 void pullup_release_frame(struct pullup_frame *fr);
00096 
00097 struct pullup_context *pullup_alloc_context(void);
00098 void pullup_preinit_context(struct pullup_context *c);
00099 void pullup_init_context(struct pullup_context *c);
00100 void pullup_free_context(struct pullup_context *c);
00101 
00102 #endif /* MPLAYER_PULLUP_H */

Generated on Wed Apr 11 2012 07:31:35 for FFmpeg by  doxygen 1.7.1