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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2694
2924350d92ed bgr32to16, bgr32to15 (needed for palette stuff)
michael
parents: 2677
diff changeset
1 /*
2504
13e1c5ab417a vo_vesa: rgb2rgb support
nick
parents:
diff changeset
2 *
2506
501752469c39 vo_vesa: more rgb2rgb support
nick
parents: 2505
diff changeset
3 * rgb2rgb.h, Software RGB to RGB convertor
2732
ae79207a3055 Move yuv2rgb to postprocess
nick
parents: 2725
diff changeset
4 * pluralize by Software PAL8 to RGB convertor
ae79207a3055 Move yuv2rgb to postprocess
nick
parents: 2725
diff changeset
5 * Software YUV to YUV convertor
ae79207a3055 Move yuv2rgb to postprocess
nick
parents: 2725
diff changeset
6 * Software YUV to RGB convertor
2504
13e1c5ab417a vo_vesa: rgb2rgb support
nick
parents:
diff changeset
7 */
13e1c5ab417a vo_vesa: rgb2rgb support
nick
parents:
diff changeset
8
13e1c5ab417a vo_vesa: rgb2rgb support
nick
parents:
diff changeset
9 #ifndef RGB2RGB_INCLUDED
13e1c5ab417a vo_vesa: rgb2rgb support
nick
parents:
diff changeset
10 #define RGB2RGB_INCLUDED
13e1c5ab417a vo_vesa: rgb2rgb support
nick
parents:
diff changeset
11
10895
2da8559e5f33 reversed for cause of code obsolescence
pl
parents: 10890
diff changeset
12 // Note: do not fix the dependence on stdio.h
10890
7777dded6caa printf() requires stdio.h
pl
parents: 10233
diff changeset
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
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
15 extern void (*rgb24to32)(const uint8_t *src,uint8_t *dst,unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
16 extern void (*rgb24to16)(const uint8_t *src,uint8_t *dst,unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
17 extern void (*rgb24to15)(const uint8_t *src,uint8_t *dst,unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
18 extern void (*rgb32to24)(const uint8_t *src,uint8_t *dst,unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
19 extern void (*rgb32to16)(const uint8_t *src,uint8_t *dst,unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
20 extern void (*rgb32to15)(const uint8_t *src,uint8_t *dst,unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
21 extern void (*rgb15to16)(const uint8_t *src,uint8_t *dst,unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
22 extern void (*rgb15to24)(const uint8_t *src,uint8_t *dst,unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
23 extern void (*rgb15to32)(const uint8_t *src,uint8_t *dst,unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
24 extern void (*rgb16to15)(const uint8_t *src,uint8_t *dst,unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
25 extern void (*rgb16to24)(const uint8_t *src,uint8_t *dst,unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
26 extern void (*rgb16to32)(const uint8_t *src,uint8_t *dst,unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
27 extern void (*rgb24tobgr24)(const uint8_t *src, uint8_t *dst, unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
28 extern void (*rgb24tobgr16)(const uint8_t *src, uint8_t *dst, unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
29 extern void (*rgb24tobgr15)(const uint8_t *src, uint8_t *dst, unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
30 extern void (*rgb32tobgr32)(const uint8_t *src, uint8_t *dst, unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
31 extern void (*rgb32tobgr16)(const uint8_t *src, uint8_t *dst, unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
32 extern void (*rgb32tobgr15)(const uint8_t *src, uint8_t *dst, unsigned src_size);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
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
13e1c5ab417a vo_vesa: rgb2rgb support
nick
parents:
diff changeset
45
2694
2924350d92ed bgr32to16, bgr32to15 (needed for palette stuff)
michael
parents: 2677
diff changeset
46
2718
9c5e64493742 Well - old algorithms and new stuff rgb24to16(15)
nick
parents: 2711
diff changeset
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
9c5e64493742 Well - old algorithms and new stuff rgb24to16(15)
nick
parents: 2711
diff changeset
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
9c5e64493742 Well - old algorithms and new stuff rgb24to16(15)
nick
parents: 2711
diff changeset
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
9c5e64493742 Well - old algorithms and new stuff rgb24to16(15)
nick
parents: 2711
diff changeset
55
9987
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
56 /**
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
57 *
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
58 * height should be a multiple of 2 and width should be a multiple of 16 (if this is a
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
59 * problem for anyone then tell me, and ill fix it)
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
60 * chrominance data is only taken from every secound line others are ignored FIXME write HQ version
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
61 */
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
62 //void uyvytoyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
63
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
64 /**
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
65 *
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
66 * height should be a multiple of 2 and width should be a multiple of 16 (if this is a
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
67 * problem for anyone then tell me, and ill fix it)
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
68 */
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
69 extern void (*yv12toyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
5588
f0fa3373f616 yuv422p -> yuy2 (untested)
michael
parents: 5582
diff changeset
70 unsigned int width, unsigned int height,
9392
7bbe4bce6293 cleanup (unsigned stride -> int stride)
michael
parents: 7472
diff changeset
71 int lumStride, int chromStride, int dstStride);
9987
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
72
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
73 /**
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
74 *
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
75 * width should be a multiple of 16
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
76 */
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
77 extern void (*yuv422ptoyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
78 unsigned int width, unsigned int height,
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
79 int lumStride, int chromStride, int dstStride);
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
80
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
81 /**
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
82 *
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
83 * height should be a multiple of 2 and width should be a multiple of 16 (if this is a
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
84 * problem for anyone then tell me, and ill fix it)
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
85 */
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
86 extern void (*yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
2725
5bba527c9a4c unsigned stuff
michael
parents: 2724
diff changeset
87 unsigned int width, unsigned int height,
9392
7bbe4bce6293 cleanup (unsigned stride -> int stride)
michael
parents: 7472
diff changeset
88 int lumStride, int chromStride, int srcStride);
9987
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
89
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
90 /**
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
91 *
11070
michael
parents: 10895
diff changeset
92 * height should be a multiple of 2 and width should be a multiple of 16 (if this is a
michael
parents: 10895
diff changeset
93 * problem for anyone then tell me, and ill fix it)
michael
parents: 10895
diff changeset
94 */
michael
parents: 10895
diff changeset
95 extern void (*yv12touyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
michael
parents: 10895
diff changeset
96 unsigned int width, unsigned int height,
michael
parents: 10895
diff changeset
97 int lumStride, int chromStride, int dstStride);
michael
parents: 10895
diff changeset
98
michael
parents: 10895
diff changeset
99 /**
michael
parents: 10895
diff changeset
100 *
9987
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
101 * height should be a multiple of 2 and width should be a multiple of 2 (if this is a
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
102 * problem for anyone then tell me, and ill fix it)
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
103 * chrominance data is only taken from every secound line others are ignored FIXME write HQ version
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
104 */
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
105 extern void (*rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
3633
e81bfc0826b1 rgb24toyv12 bugfix
michael
parents: 2758
diff changeset
106 unsigned int width, unsigned int height,
9392
7bbe4bce6293 cleanup (unsigned stride -> int stride)
michael
parents: 7472
diff changeset
107 int lumStride, int chromStride, int srcStride);
9987
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
108 extern void (*planar2x)(const uint8_t *src, uint8_t *dst, int width, int height, int srcStride, int dstStride);
2701
9b47bc409083 yv12 <-> yuy2 in C
michael
parents: 2697
diff changeset
109
9987
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
110 extern void (*interleaveBytes)(uint8_t *src1, uint8_t *src2, uint8_t *dst,
9392
7bbe4bce6293 cleanup (unsigned stride -> int stride)
michael
parents: 7472
diff changeset
111 unsigned width, unsigned height, int src1Stride,
7bbe4bce6293 cleanup (unsigned stride -> int stride)
michael
parents: 7472
diff changeset
112 int src2Stride, int dstStride);
6606
50b5d8367318 merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents: 6582
diff changeset
113
9987
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
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
7bbe4bce6293 cleanup (unsigned stride -> int stride)
michael
parents: 7472
diff changeset
117 int srcStride1, int srcStride2,
7bbe4bce6293 cleanup (unsigned stride -> int stride)
michael
parents: 7472
diff changeset
118 int dstStride1, int dstStride2);
6606
50b5d8367318 merging changes from mplayerxp (rgb2rgb*.{c,h} only)
michael
parents: 6582
diff changeset
119
9987
988c2ffc5bc1 remove remaining cpudetect dependancy
michael
parents: 9476
diff changeset
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
7bbe4bce6293 cleanup (unsigned stride -> int stride)
michael
parents: 7472
diff changeset
123 int srcStride1, int srcStride2,
7bbe4bce6293 cleanup (unsigned stride -> int stride)
michael
parents: 7472
diff changeset
124 int srcStride3, int dstStride);
5337
0bd1c35aa42c byte interleaving for mga
michael
parents: 3633
diff changeset
125
0bd1c35aa42c byte interleaving for mga
michael
parents: 3633
diff changeset
126
2732
ae79207a3055 Move yuv2rgb to postprocess
nick
parents: 2725
diff changeset
127 #define MODE_RGB 0x1
ae79207a3055 Move yuv2rgb to postprocess
nick
parents: 2725
diff changeset
128 #define MODE_BGR 0x2
ae79207a3055 Move yuv2rgb to postprocess
nick
parents: 2725
diff changeset
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
ae79207a3055 Move yuv2rgb to postprocess
nick
parents: 2725
diff changeset
131 uint8_t * pu, uint8_t * pv,
6492
e7635c03910f sync with mplayer xp
arpi
parents: 5588
diff changeset
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
ae79207a3055 Move yuv2rgb to postprocess
nick
parents: 2725
diff changeset
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
ae79207a3055 Move yuv2rgb to postprocess
nick
parents: 2725
diff changeset
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
13e1c5ab417a vo_vesa: rgb2rgb support
nick
parents:
diff changeset
143 #endif