Mercurial > mplayer.hg
annotate postproc/swscale_internal.h @ 9558:29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
here (display is grabelled) but read are realiable and fast. Could
it be possible to write with the aperture and read with the page fault
handler ?
author | albeu |
---|---|
date | Sun, 09 Mar 2003 23:55:42 +0000 |
parents | bc5b87370cd1 |
children | 5025150738eb |
rev | line source |
---|---|
9476
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
1 /* |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
2 Copyright (C) 2001-2003 Michael Niedermayer <michaelni@gmx.at> |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
3 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
4 This program is free software; you can redistribute it and/or modify |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
5 it under the terms of the GNU General Public License as published by |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
6 the Free Software Foundation; either version 2 of the License, or |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
7 (at your option) any later version. |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
8 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
9 This program is distributed in the hope that it will be useful, |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
10 but WITHOUT ANY WARRANTY; without even the implied warranty of |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
12 GNU General Public License for more details. |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
13 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
14 You should have received a copy of the GNU General Public License |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
15 along with this program; if not, write to the Free Software |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
17 */ |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
18 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
19 #ifndef SWSCALE_INTERNAL_H |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
20 #define SWSCALE_INTERNAL_H |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
21 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
22 #define MAX_FILTER_SIZE 256 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
23 |
9494
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
24 typedef int (*SwsFunc)(struct SwsContext *context, uint8_t* src[], int srcStride[], int srcSliceY, |
9476
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
25 int srcSliceH, uint8_t* dst[], int dstStride[]); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
26 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
27 /* this struct should be aligned on at least 32-byte boundary */ |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
28 typedef struct SwsContext{ |
9499 | 29 /** |
30 * | |
31 * Note the src,dst,srcStride,dstStride will be copied, in the sws_scale() warper so they can freely be modified here | |
32 */ | |
9494
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
33 SwsFunc swScale; |
9476
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
34 int srcW, srcH, dstH; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
35 int chrSrcW, chrSrcH, chrDstW, chrDstH; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
36 int lumXInc, chrXInc; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
37 int lumYInc, chrYInc; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
38 int dstFormat, srcFormat; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
39 int chrSrcHSubSample, chrSrcVSubSample; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
40 int chrIntHSubSample, chrIntVSubSample; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
41 int chrDstHSubSample, chrDstVSubSample; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
42 int vChrDrop; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
43 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
44 int16_t **lumPixBuf; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
45 int16_t **chrPixBuf; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
46 int16_t *hLumFilter; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
47 int16_t *hLumFilterPos; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
48 int16_t *hChrFilter; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
49 int16_t *hChrFilterPos; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
50 int16_t *vLumFilter; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
51 int16_t *vLumFilterPos; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
52 int16_t *vChrFilter; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
53 int16_t *vChrFilterPos; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
54 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
55 uint8_t formatConvBuffer[4000]; //FIXME dynamic alloc, but we have to change alot of code for this to be usefull |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
56 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
57 int hLumFilterSize; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
58 int hChrFilterSize; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
59 int vLumFilterSize; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
60 int vChrFilterSize; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
61 int vLumBufSize; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
62 int vChrBufSize; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
63 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
64 uint8_t __attribute__((aligned(32))) funnyYCode[10000]; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
65 uint8_t __attribute__((aligned(32))) funnyUVCode[10000]; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
66 int32_t *lumMmx2FilterPos; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
67 int32_t *chrMmx2FilterPos; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
68 int16_t *lumMmx2Filter; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
69 int16_t *chrMmx2Filter; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
70 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
71 int canMMX2BeUsed; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
72 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
73 int lastInLumBuf; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
74 int lastInChrBuf; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
75 int lumBufIndex; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
76 int chrBufIndex; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
77 int dstY; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
78 int flags; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
79 void * yuvTable; // pointer to the yuv->rgb table start so it can be freed() |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
80 void * table_rV[256]; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
81 void * table_gU[256]; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
82 int table_gV[256]; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
83 void * table_bU[256]; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
84 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
85 //Colorspace stuff |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
86 int contrast, brightness, saturation; // for sws_getColorspaceDetails |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
87 int srcColorspaceTable[4]; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
88 int dstColorspaceTable[4]; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
89 int srcRange, dstRange; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
90 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
91 #define RED_DITHER "0*8" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
92 #define GREEN_DITHER "1*8" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
93 #define BLUE_DITHER "2*8" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
94 #define Y_COEFF "3*8" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
95 #define VR_COEFF "4*8" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
96 #define UB_COEFF "5*8" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
97 #define VG_COEFF "6*8" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
98 #define UG_COEFF "7*8" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
99 #define Y_OFFSET "8*8" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
100 #define U_OFFSET "9*8" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
101 #define V_OFFSET "10*8" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
102 #define LUM_MMX_FILTER_OFFSET "11*8" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
103 #define CHR_MMX_FILTER_OFFSET "11*8+4*4*256" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
104 #define DSTW_OFFSET "11*8+4*4*256*2" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
105 #define ESP_OFFSET "11*8+4*4*256*2+4" |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
106 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
107 uint64_t redDither __attribute__((aligned(8))); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
108 uint64_t greenDither __attribute__((aligned(8))); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
109 uint64_t blueDither __attribute__((aligned(8))); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
110 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
111 uint64_t yCoeff __attribute__((aligned(8))); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
112 uint64_t vrCoeff __attribute__((aligned(8))); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
113 uint64_t ubCoeff __attribute__((aligned(8))); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
114 uint64_t vgCoeff __attribute__((aligned(8))); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
115 uint64_t ugCoeff __attribute__((aligned(8))); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
116 uint64_t yOffset __attribute__((aligned(8))); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
117 uint64_t uOffset __attribute__((aligned(8))); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
118 uint64_t vOffset __attribute__((aligned(8))); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
119 int32_t lumMmxFilter[4*MAX_FILTER_SIZE]; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
120 int32_t chrMmxFilter[4*MAX_FILTER_SIZE]; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
121 int dstW; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
122 int esp; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
123 } SwsContext; |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
124 //FIXME check init (where 0) |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
125 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
126 SwsFunc yuv2rgb_get_func_ptr (SwsContext *c); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
127 int yuv2rgb_c_init_tables (SwsContext *c, const int inv_table[4], int fullRange, int brightness, int contrast, int saturation); |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
128 |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
diff
changeset
|
129 #endif |