xine-lib: xine-lib-1.2.12/src/post/deinterlace/deinterlace.h Source File

xine-lib 1.2.12

deinterlace.h
Go to the documentation of this file.
1
19#ifndef DEINTERLACE_H_INCLUDED
20#define DEINTERLACE_H_INCLUDED
21
22#if HAVE_INTTYPES_H
23#include <inttypes.h>
24#else
25#include <stdint.h>
26#endif
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
39 typedef struct deinterlace_method_s deinterlace_method_t;
40 typedef struct deinterlace_scanline_data_s deinterlace_scanline_data_t;
41 typedef struct deinterlace_frame_data_s deinterlace_frame_data_t;
42
54 struct deinterlace_scanline_data_s
55{
56 uint8_t *tt0, *t0, *m0, *b0, *bb0;
57 uint8_t *tt1, *t1, *m1, *b1, *bb1;
58 uint8_t *tt2, *t2, *m2, *b2, *bb2;
59 uint8_t *tt3, *t3, *m3, *b3, *bb3;
60 int bottom_field;
61 /* xv frame bufs may have no padding. Dont prefetch over the end. */
62 int bytes_left;
63};
64
80 typedef void (*deinterlace_interp_scanline_t)( uint8_t *output,
81 deinterlace_scanline_data_t *data,
82 int width );
95 typedef void (*deinterlace_copy_scanline_t)( uint8_t *output,
96 deinterlace_scanline_data_t *data,
97 int width );
98
103 struct deinterlace_frame_data_s
104{
105 uint8_t *f0;
106 uint8_t *f1;
107 uint8_t *f2;
108 uint8_t *f3;
109};
110
114 typedef void (*deinterlace_frame_t)( uint8_t *output, int outstride,
115 deinterlace_frame_data_t *data,
116 int bottom_field, int second_field,
117 int width, int height );
118
119
123 struct deinterlace_method_s
124{
125 const char *name;
126 const char *short_name;
127 int fields_required;
128 int accelrequired;
129 int doscalerbob;
130 int scanlinemode;
131 deinterlace_interp_scanline_t interpolate_scanline;
132 deinterlace_copy_scanline_t copy_scanline;
133 deinterlace_frame_t deinterlace_frame;
134 int delaysfield; /* xine: this method delays output by one field relative to input */
135 const char *description;
136};
137
138
139 typedef struct methodlist_item_s * deinterlace_methods_t;
140
144void register_deinterlace_method( deinterlace_methods_t *, const deinterlace_method_t *method );
145
149int get_num_deinterlace_methods( deinterlace_methods_t );
150
154const deinterlace_method_t *get_deinterlace_method( deinterlace_methods_t, int i );
155
159void filter_deinterlace_methods( deinterlace_methods_t *, int accel, int fieldsavailable );
160
161void free_deinterlace_methods( deinterlace_methods_t * );
162
163#ifdef __cplusplus
164};
165#endif
166#endif /* DEINTERLACE_H_INCLUDED */
filter_deinterlace_methods
void filter_deinterlace_methods(deinterlace_methods_t *, int accel, int fieldsavailable)
Definition: deinterlace.c:103
deinterlace_frame_t
void(* deinterlace_frame_t)(uint8_t *output, int outstride, deinterlace_frame_data_t *data, int bottom_field, int second_field, int width, int height)
Definition: deinterlace.h:114
deinterlace_methods_t
struct methodlist_item_s * deinterlace_methods_t
Definition: deinterlace.h:139
register_deinterlace_method
void register_deinterlace_method(deinterlace_methods_t *, const deinterlace_method_t *method)
Definition: deinterlace.c:56
free_deinterlace_methods
void free_deinterlace_methods(deinterlace_methods_t *)
Definition: deinterlace.c:43
deinterlace_copy_scanline_t
void(* deinterlace_copy_scanline_t)(uint8_t *output, deinterlace_scanline_data_t *data, int width)
Definition: deinterlace.h:95
get_num_deinterlace_methods
int get_num_deinterlace_methods(deinterlace_methods_t)
Definition: deinterlace.c:79
get_deinterlace_method
const deinterlace_method_t * get_deinterlace_method(deinterlace_methods_t, int i)
Definition: deinterlace.c:90
deinterlace_interp_scanline_t
void(* deinterlace_interp_scanline_t)(uint8_t *output, deinterlace_scanline_data_t *data, int width)
Definition: deinterlace.h:80
height
unsigned int height
Definition: gfontrle.c:5
width
unsigned int width
Definition: gfontrle.c:4
deinterlace_frame_data_s
Definition: deinterlace.h:104
deinterlace_frame_data_s::f3
uint8_t * f3
Definition: deinterlace.h:108
deinterlace_frame_data_s::f2
uint8_t * f2
Definition: deinterlace.h:107
deinterlace_frame_data_s::f1
uint8_t * f1
Definition: deinterlace.h:106
deinterlace_frame_data_s::f0
uint8_t * f0
Definition: deinterlace.h:105
deinterlace_method_s
Definition: deinterlace.h:124
deinterlace_method_s::copy_scanline
deinterlace_copy_scanline_t copy_scanline
Definition: deinterlace.h:132
deinterlace_method_s::scanlinemode
int scanlinemode
Definition: deinterlace.h:130
deinterlace_method_s::short_name
const char * short_name
Definition: deinterlace.h:126
deinterlace_method_s::deinterlace_frame
deinterlace_frame_t deinterlace_frame
Definition: deinterlace.h:133
deinterlace_method_s::fields_required
int fields_required
Definition: deinterlace.h:127
deinterlace_method_s::doscalerbob
int doscalerbob
Definition: deinterlace.h:129
deinterlace_method_s::description
const char * description
Definition: deinterlace.h:135
deinterlace_method_s::accelrequired
int accelrequired
Definition: deinterlace.h:128
deinterlace_method_s::name
const char * name
Definition: deinterlace.h:125
deinterlace_method_s::delaysfield
int delaysfield
Definition: deinterlace.h:134
deinterlace_method_s::interpolate_scanline
deinterlace_interp_scanline_t interpolate_scanline
Definition: deinterlace.h:131
deinterlace_scanline_data_s
Definition: deinterlace.h:55
deinterlace_scanline_data_s::b0
uint8_t * b0
Definition: deinterlace.h:56
deinterlace_scanline_data_s::b1
uint8_t * b1
Definition: deinterlace.h:57
deinterlace_scanline_data_s::tt1
uint8_t * tt1
Definition: deinterlace.h:57
deinterlace_scanline_data_s::tt0
uint8_t * tt0
Definition: deinterlace.h:56
deinterlace_scanline_data_s::bottom_field
int bottom_field
Definition: deinterlace.h:60
deinterlace_scanline_data_s::m3
uint8_t * m3
Definition: deinterlace.h:59
deinterlace_scanline_data_s::tt2
uint8_t * tt2
Definition: deinterlace.h:58
deinterlace_scanline_data_s::bytes_left
int bytes_left
Definition: deinterlace.h:62
deinterlace_scanline_data_s::bb1
uint8_t * bb1
Definition: deinterlace.h:57
deinterlace_scanline_data_s::b2
uint8_t * b2
Definition: deinterlace.h:58
deinterlace_scanline_data_s::b3
uint8_t * b3
Definition: deinterlace.h:59
deinterlace_scanline_data_s::bb0
uint8_t * bb0
Definition: deinterlace.h:56
deinterlace_scanline_data_s::t0
uint8_t * t0
Definition: deinterlace.h:56
deinterlace_scanline_data_s::m2
uint8_t * m2
Definition: deinterlace.h:58
deinterlace_scanline_data_s::tt3
uint8_t * tt3
Definition: deinterlace.h:59
deinterlace_scanline_data_s::t1
uint8_t * t1
Definition: deinterlace.h:57
deinterlace_scanline_data_s::t2
uint8_t * t2
Definition: deinterlace.h:58
deinterlace_scanline_data_s::t3
uint8_t * t3
Definition: deinterlace.h:59
deinterlace_scanline_data_s::bb3
uint8_t * bb3
Definition: deinterlace.h:59
deinterlace_scanline_data_s::m0
uint8_t * m0
Definition: deinterlace.h:56
deinterlace_scanline_data_s::bb2
uint8_t * bb2
Definition: deinterlace.h:58
deinterlace_scanline_data_s::m1
uint8_t * m1
Definition: deinterlace.h:57
methodlist_item_s
Definition: deinterlace.c:38
methodlist_item_s::method
const deinterlace_method_t * method
Definition: deinterlace.c:39