Statistics
| Branch: | Revision:

ffmpeg / libavfilter / libmpcodecs / pullup.h @ e4852fb3

History | View | Annotate | Download (2.91 KB)

1
/*
2
 * This file is part of MPlayer.
3
 *
4
 * MPlayer is free software; you can redistribute it and/or modify
5
 * it under the terms of the GNU General Public License as published by
6
 * the Free Software Foundation; either version 2 of the License, or
7
 * (at your option) any later version.
8
 *
9
 * MPlayer is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 * GNU General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU General Public License along
15
 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
16
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
 */
18

    
19
#ifndef MPLAYER_PULLUP_H
20
#define MPLAYER_PULLUP_H
21

    
22
#define PULLUP_CPU_MMX 1
23
#define PULLUP_CPU_MMX2 2
24
#define PULLUP_CPU_3DNOW 4
25
#define PULLUP_CPU_3DNOWEXT 8
26
#define PULLUP_CPU_SSE 16
27
#define PULLUP_CPU_SSE2 32
28

    
29
#define PULLUP_FMT_Y 1
30
#define PULLUP_FMT_YUY2 2
31
#define PULLUP_FMT_UYVY 3
32
#define PULLUP_FMT_RGB32 4
33

    
34
struct pullup_buffer
35
{
36
    int lock[2];
37
    unsigned char **planes;
38
};
39

    
40
struct pullup_field
41
{
42
    int parity;
43
    struct pullup_buffer *buffer;
44
    unsigned int flags;
45
    int breaks;
46
    int affinity;
47
    int *diffs;
48
    int *comb;
49
    int *var;
50
    struct pullup_field *prev, *next;
51
};
52

    
53
struct pullup_frame
54
{
55
    int lock;
56
    int length;
57
    int parity;
58
    struct pullup_buffer **ifields, *ofields[2];
59
    struct pullup_buffer *buffer;
60
};
61

    
62
struct pullup_context
63
{
64
    /* Public interface */
65
    int format;
66
    int nplanes;
67
    int *bpp, *w, *h, *stride, *background;
68
    unsigned int cpu;
69
    int junk_left, junk_right, junk_top, junk_bottom;
70
    int verbose;
71
    int metric_plane;
72
    int strict_breaks;
73
    int strict_pairs;
74
    /* Internal data */
75
    struct pullup_field *first, *last, *head;
76
    struct pullup_buffer *buffers;
77
    int nbuffers;
78
    int (*diff)(unsigned char *, unsigned char *, int);
79
    int (*comb)(unsigned char *, unsigned char *, int);
80
    int (*var)(unsigned char *, unsigned char *, int);
81
    int metric_w, metric_h, metric_len, metric_offset;
82
    struct pullup_frame *frame;
83
};
84

    
85

    
86
struct pullup_buffer *pullup_lock_buffer(struct pullup_buffer *b, int parity);
87
void pullup_release_buffer(struct pullup_buffer *b, int parity);
88
struct pullup_buffer *pullup_get_buffer(struct pullup_context *c, int parity);
89

    
90
void pullup_submit_field(struct pullup_context *c, struct pullup_buffer *b, int parity);
91
void pullup_flush_fields(struct pullup_context *c);
92

    
93
struct pullup_frame *pullup_get_frame(struct pullup_context *c);
94
void pullup_pack_frame(struct pullup_context *c, struct pullup_frame *fr);
95
void pullup_release_frame(struct pullup_frame *fr);
96

    
97
struct pullup_context *pullup_alloc_context(void);
98
void pullup_preinit_context(struct pullup_context *c);
99
void pullup_init_context(struct pullup_context *c);
100
void pullup_free_context(struct pullup_context *c);
101

    
102
#endif /* MPLAYER_PULLUP_H */