Mercurial > mplayer.hg
annotate postproc/rgb2rgb.h @ 15721:eec6ace22741
small change to field-matching metrics which hopefully makes a big
improvement to results. inter-field comparison is now counterbalanced
with intra-field total (vertical) variation. this means that areas of
extreme high frequency content, which become aliased within individual
fields, will not interfere with field matching. examples: white noise
effects, small kanji, very small latin text, ...
may still need tweaking. please report regressions. this change will
likely be made optional in the future (right now it's enclosed in
"if (1)"...
author | rfelker |
---|---|
date | Tue, 14 Jun 2005 05:33:34 +0000 |
parents | ede278d59026 |
children | e91f944f6ed9 |
rev | line source |
---|---|
2694 | 1 /* |
2504 | 2 * |
2506 | 3 * rgb2rgb.h, Software RGB to RGB convertor |
2732 | 4 * pluralize by Software PAL8 to RGB convertor |
5 * Software YUV to YUV convertor | |
6 * Software YUV to RGB convertor | |
2504 | 7 */ |
8 | |
9 #ifndef RGB2RGB_INCLUDED | |
10 #define RGB2RGB_INCLUDED | |
11 | |
10895 | 12 // Note: do not fix the dependence on stdio.h |
10890 | 13 |
6606
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
14 /* A full collection of rgb to rgb(bgr) convertors */ |
9987 | 15 extern void (*rgb24to32)(const uint8_t *src,uint8_t *dst,unsigned src_size); |
16 extern void (*rgb24to16)(const uint8_t *src,uint8_t *dst,unsigned src_size); | |
17 extern void (*rgb24to15)(const uint8_t *src,uint8_t *dst,unsigned src_size); | |
18 extern void (*rgb32to24)(const uint8_t *src,uint8_t *dst,unsigned src_size); | |
19 extern void (*rgb32to16)(const uint8_t *src,uint8_t *dst,unsigned src_size); | |
20 extern void (*rgb32to15)(const uint8_t *src,uint8_t *dst,unsigned src_size); | |
21 extern void (*rgb15to16)(const uint8_t *src,uint8_t *dst,unsigned src_size); | |
22 extern void (*rgb15to24)(const uint8_t *src,uint8_t *dst,unsigned src_size); | |
23 extern void (*rgb15to32)(const uint8_t *src,uint8_t *dst,unsigned src_size); | |
24 extern void (*rgb16to15)(const uint8_t *src,uint8_t *dst,unsigned src_size); | |
25 extern void (*rgb16to24)(const uint8_t *src,uint8_t *dst,unsigned src_size); | |
26 extern void (*rgb16to32)(const uint8_t *src,uint8_t *dst,unsigned src_size); | |
27 extern void (*rgb24tobgr24)(const uint8_t *src, uint8_t *dst, unsigned src_size); | |
28 extern void (*rgb24tobgr16)(const uint8_t *src, uint8_t *dst, unsigned src_size); | |
29 extern void (*rgb24tobgr15)(const uint8_t *src, uint8_t *dst, unsigned src_size); | |
30 extern void (*rgb32tobgr32)(const uint8_t *src, uint8_t *dst, unsigned src_size); | |
31 extern void (*rgb32tobgr16)(const uint8_t *src, uint8_t *dst, unsigned src_size); | |
32 extern void (*rgb32tobgr15)(const uint8_t *src, uint8_t *dst, unsigned src_size); | |
33 | |
6606
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
34 extern void rgb24tobgr32(const uint8_t *src, uint8_t *dst, unsigned src_size); |
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
35 extern void rgb32tobgr24(const uint8_t *src, uint8_t *dst, unsigned src_size); |
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
36 extern void rgb16tobgr32(const uint8_t *src, uint8_t *dst, unsigned src_size); |
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
37 extern void rgb16tobgr24(const uint8_t *src, uint8_t *dst, unsigned src_size); |
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
38 extern void rgb16tobgr16(const uint8_t *src, uint8_t *dst, unsigned src_size); |
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
39 extern void rgb16tobgr15(const uint8_t *src, uint8_t *dst, unsigned src_size); |
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
40 extern void rgb15tobgr32(const uint8_t *src, uint8_t *dst, unsigned src_size); |
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
41 extern void rgb15tobgr24(const uint8_t *src, uint8_t *dst, unsigned src_size); |
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
42 extern void rgb15tobgr16(const uint8_t *src, uint8_t *dst, unsigned src_size); |
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
43 extern void rgb15tobgr15(const uint8_t *src, uint8_t *dst, unsigned src_size); |
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
44 extern void rgb8tobgr8(const uint8_t *src, uint8_t *dst, unsigned src_size); |
2504 | 45 |
2694 | 46 |
2718 | 47 extern void palette8torgb32(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette); |
7472
c4434bdf6e51
tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents:
6606
diff
changeset
|
48 extern void palette8tobgr32(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette); |
c4434bdf6e51
tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents:
6606
diff
changeset
|
49 extern void palette8torgb24(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette); |
c4434bdf6e51
tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents:
6606
diff
changeset
|
50 extern void palette8tobgr24(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette); |
2718 | 51 extern void palette8torgb16(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette); |
7472
c4434bdf6e51
tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents:
6606
diff
changeset
|
52 extern void palette8tobgr16(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette); |
2718 | 53 extern void palette8torgb15(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette); |
7472
c4434bdf6e51
tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents:
6606
diff
changeset
|
54 extern void palette8tobgr15(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette); |
2718 | 55 |
9987 | 56 /** |
57 * | |
58 * height should be a multiple of 2 and width should be a multiple of 16 (if this is a | |
59 * problem for anyone then tell me, and ill fix it) | |
60 * chrominance data is only taken from every secound line others are ignored FIXME write HQ version | |
61 */ | |
62 //void uyvytoyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, | |
63 | |
64 /** | |
65 * | |
66 * height should be a multiple of 2 and width should be a multiple of 16 (if this is a | |
67 * problem for anyone then tell me, and ill fix it) | |
68 */ | |
69 extern void (*yv12toyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, | |
5588 | 70 unsigned int width, unsigned int height, |
9392 | 71 int lumStride, int chromStride, int dstStride); |
9987 | 72 |
73 /** | |
74 * | |
75 * width should be a multiple of 16 | |
76 */ | |
77 extern void (*yuv422ptoyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, | |
78 unsigned int width, unsigned int height, | |
79 int lumStride, int chromStride, int dstStride); | |
80 | |
81 /** | |
82 * | |
83 * height should be a multiple of 2 and width should be a multiple of 16 (if this is a | |
84 * problem for anyone then tell me, and ill fix it) | |
85 */ | |
86 extern void (*yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, | |
2725 | 87 unsigned int width, unsigned int height, |
9392 | 88 int lumStride, int chromStride, int srcStride); |
9987 | 89 |
90 /** | |
91 * | |
11070 | 92 * height should be a multiple of 2 and width should be a multiple of 16 (if this is a |
93 * problem for anyone then tell me, and ill fix it) | |
94 */ | |
95 extern void (*yv12touyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, | |
96 unsigned int width, unsigned int height, | |
97 int lumStride, int chromStride, int dstStride); | |
98 | |
99 /** | |
100 * | |
9987 | 101 * height should be a multiple of 2 and width should be a multiple of 2 (if this is a |
102 * problem for anyone then tell me, and ill fix it) | |
103 * chrominance data is only taken from every secound line others are ignored FIXME write HQ version | |
104 */ | |
105 extern void (*rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, | |
3633 | 106 unsigned int width, unsigned int height, |
9392 | 107 int lumStride, int chromStride, int srcStride); |
9987 | 108 extern void (*planar2x)(const uint8_t *src, uint8_t *dst, int width, int height, int srcStride, int dstStride); |
2701 | 109 |
9987 | 110 extern void (*interleaveBytes)(uint8_t *src1, uint8_t *src2, uint8_t *dst, |
9392 | 111 unsigned width, unsigned height, int src1Stride, |
112 int src2Stride, int dstStride); | |
6606
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
113 |
9987 | 114 extern void (*vu9_to_vu12)(const uint8_t *src1, const uint8_t *src2, |
6606
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
115 uint8_t *dst1, uint8_t *dst2, |
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
116 unsigned width, unsigned height, |
9392 | 117 int srcStride1, int srcStride2, |
118 int dstStride1, int dstStride2); | |
6606
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
119 |
9987 | 120 extern void (*yvu9_to_yuy2)(const uint8_t *src1, const uint8_t *src2, const uint8_t *src3, |
6606
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
121 uint8_t *dst, |
50b5d8367318
merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents:
6582
diff
changeset
|
122 unsigned width, unsigned height, |
9392 | 123 int srcStride1, int srcStride2, |
124 int srcStride3, int dstStride); | |
5337 | 125 |
126 | |
2732 | 127 #define MODE_RGB 0x1 |
128 #define MODE_BGR 0x2 | |
129 | |
9476
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
9392
diff
changeset
|
130 static void yuv2rgb(uint8_t * image, uint8_t * py, |
2732 | 131 uint8_t * pu, uint8_t * pv, |
6492 | 132 unsigned h_size, unsigned v_size, |
9476
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
9392
diff
changeset
|
133 int rgb_stride, int y_stride, int uv_stride){ |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
9392
diff
changeset
|
134 printf("broken, this should use the swscaler\n"); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
9392
diff
changeset
|
135 } |
2732 | 136 |
9476
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
9392
diff
changeset
|
137 static void yuv2rgb_init (unsigned bpp, int mode){ |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
9392
diff
changeset
|
138 printf("broken, this should use the swscaler\n"); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
9392
diff
changeset
|
139 } |
2732 | 140 |
10233
35f52ad860a0
vf_scale.h & related cleanup & some small warning fix by dominik
michael
parents:
9987
diff
changeset
|
141 void sws_rgb2rgb_init(int flags); |
35f52ad860a0
vf_scale.h & related cleanup & some small warning fix by dominik
michael
parents:
9987
diff
changeset
|
142 |
2504 | 143 #endif |