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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
bc5b87370cd1 cleanup
michael
parents: 9494
diff changeset
29 /**
bc5b87370cd1 cleanup
michael
parents: 9494
diff changeset
30 *
bc5b87370cd1 cleanup
michael
parents: 9494
diff changeset
31 * Note the src,dst,srcStride,dstStride will be copied, in the sws_scale() warper so they can freely be modified here
bc5b87370cd1 cleanup
michael
parents: 9494
diff changeset
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