Mercurial > mplayer.hg
annotate libswscale/swscale_internal.h @ 24131:30028bbcb9e8
Use a single select() for both key and slave input
Previous code used two separate select() calls one after another, so
that whenever it was running select() on one set of fds events in the
other set would go unnoticed until later. Now there's a single select()
which allows reacting immediately to any input source.
The behavior of the new code differs somewhat from the old; for example
multiple fds that stay readable are no longer handled in a round-robin
fashion and the total amount the process sleeps can differ. Some tuning
might be required later.
author | uau |
---|---|
date | Sat, 25 Aug 2007 04:28:11 +0000 |
parents | 47f7591a2c8b |
children | 53f2436d68d7 |
rev | line source |
---|---|
18861 | 1 /* |
20094
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
2 * Copyright (C) 2001-2003 Michael Niedermayer <michaelni@gmx.at> |
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
3 * |
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
4 * This file is part of FFmpeg. |
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
5 * |
21029
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
6 * FFmpeg is free software; you can redistribute it and/or |
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
7 * modify it under the terms of the GNU Lesser General Public |
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
8 * License as published by the Free Software Foundation; either |
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
9 * version 2.1 of the License, or (at your option) any later version. |
20094
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
10 * |
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
11 * FFmpeg is distributed in the hope that it will be useful, |
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
21029
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
14 * Lesser General Public License for more details. |
20094
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
15 * |
21029
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
16 * You should have received a copy of the GNU Lesser General Public |
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
17 * License along with FFmpeg; if not, write to the Free Software |
23702 | 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
20094
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
19 */ |
18861 | 20 |
21 #ifndef SWSCALE_INTERNAL_H | |
22 #define SWSCALE_INTERNAL_H | |
23 | |
24 #ifdef HAVE_ALTIVEC_H | |
25 #include <altivec.h> | |
26 #endif | |
27 | |
19143
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
28 #include "avutil.h" |
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
29 |
18861 | 30 #define MAX_FILTER_SIZE 256 |
31 | |
32 typedef int (*SwsFunc)(struct SwsContext *context, uint8_t* src[], int srcStride[], int srcSliceY, | |
33 int srcSliceH, uint8_t* dst[], int dstStride[]); | |
34 | |
35 /* this struct should be aligned on at least 32-byte boundary */ | |
36 typedef struct SwsContext{ | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
37 /** |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
38 * info on struct for av_log |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
39 */ |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
40 AVClass *av_class; |
21981 | 41 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
42 /** |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
43 * |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
44 * Note the src,dst,srcStride,dstStride will be copied, in the sws_scale() warper so they can freely be modified here |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
45 */ |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
46 SwsFunc swScale; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
47 int srcW, srcH, dstH; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
48 int chrSrcW, chrSrcH, chrDstW, chrDstH; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
49 int lumXInc, chrXInc; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
50 int lumYInc, chrYInc; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
51 int dstFormat, srcFormat; ///< format 4:2:0 type is always YV12 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
52 int origDstFormat, origSrcFormat; ///< format |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
53 int chrSrcHSubSample, chrSrcVSubSample; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
54 int chrIntHSubSample, chrIntVSubSample; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
55 int chrDstHSubSample, chrDstVSubSample; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
56 int vChrDrop; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
57 int sliceDir; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
58 double param[2]; |
18861 | 59 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
60 int16_t **lumPixBuf; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
61 int16_t **chrPixBuf; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
62 int16_t *hLumFilter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
63 int16_t *hLumFilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
64 int16_t *hChrFilter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
65 int16_t *hChrFilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
66 int16_t *vLumFilter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
67 int16_t *vLumFilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
68 int16_t *vChrFilter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
69 int16_t *vChrFilterPos; |
18861 | 70 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
71 uint8_t formatConvBuffer[4000]; //FIXME dynamic alloc, but we have to change a lot of code for this to be useful |
18861 | 72 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
73 int hLumFilterSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
74 int hChrFilterSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
75 int vLumFilterSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
76 int vChrFilterSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
77 int vLumBufSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
78 int vChrBufSize; |
18861 | 79 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
80 uint8_t *funnyYCode; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
81 uint8_t *funnyUVCode; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
82 int32_t *lumMmx2FilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
83 int32_t *chrMmx2FilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
84 int16_t *lumMmx2Filter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
85 int16_t *chrMmx2Filter; |
18861 | 86 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
87 int canMMX2BeUsed; |
18861 | 88 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
89 int lastInLumBuf; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
90 int lastInChrBuf; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
91 int lumBufIndex; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
92 int chrBufIndex; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
93 int dstY; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
94 int flags; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
95 void * yuvTable; // pointer to the yuv->rgb table start so it can be freed() |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
96 uint8_t * table_rV[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
97 uint8_t * table_gU[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
98 int table_gV[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
99 uint8_t * table_bU[256]; |
18861 | 100 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
101 //Colorspace stuff |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
102 int contrast, brightness, saturation; // for sws_getColorspaceDetails |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
103 int srcColorspaceTable[4]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
104 int dstColorspaceTable[4]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
105 int srcRange, dstRange; |
18861 | 106 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
107 #define RED_DITHER "0*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
108 #define GREEN_DITHER "1*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
109 #define BLUE_DITHER "2*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
110 #define Y_COEFF "3*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
111 #define VR_COEFF "4*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
112 #define UB_COEFF "5*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
113 #define VG_COEFF "6*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
114 #define UG_COEFF "7*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
115 #define Y_OFFSET "8*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
116 #define U_OFFSET "9*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
117 #define V_OFFSET "10*8" |
18861 | 118 #define LUM_MMX_FILTER_OFFSET "11*8" |
119 #define CHR_MMX_FILTER_OFFSET "11*8+4*4*256" | |
23536 | 120 #define DSTW_OFFSET "11*8+4*4*256*2" //do not change, it is hardcoded in the asm |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
121 #define ESP_OFFSET "11*8+4*4*256*2+8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
122 #define VROUNDER_OFFSET "11*8+4*4*256*2+16" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
123 #define U_TEMP "11*8+4*4*256*2+24" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
124 #define V_TEMP "11*8+4*4*256*2+32" |
19172
bae6c99a99cc
vertical scaler with accurate rounding, some people on doom9 can see +-1 errors
michael
parents:
19143
diff
changeset
|
125 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
126 uint64_t redDither __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
127 uint64_t greenDither __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
128 uint64_t blueDither __attribute__((aligned(8))); |
18861 | 129 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
130 uint64_t yCoeff __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
131 uint64_t vrCoeff __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
132 uint64_t ubCoeff __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
133 uint64_t vgCoeff __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
134 uint64_t ugCoeff __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
135 uint64_t yOffset __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
136 uint64_t uOffset __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
137 uint64_t vOffset __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
138 int32_t lumMmxFilter[4*MAX_FILTER_SIZE]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
139 int32_t chrMmxFilter[4*MAX_FILTER_SIZE]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
140 int dstW; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
141 uint64_t esp __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
142 uint64_t vRounder __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
143 uint64_t u_temp __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
144 uint64_t v_temp __attribute__((aligned(8))); |
18861 | 145 |
146 #ifdef HAVE_ALTIVEC | |
147 | |
148 vector signed short CY; | |
149 vector signed short CRV; | |
150 vector signed short CBU; | |
151 vector signed short CGU; | |
152 vector signed short CGV; | |
153 vector signed short OY; | |
154 vector unsigned short CSHIFT; | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
155 vector signed short *vYCoeffsBank, *vCCoeffsBank; |
18861 | 156 |
157 #endif | |
158 | |
23289
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
159 |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
160 #ifdef ARCH_BFIN |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
161 uint32_t oy __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
162 uint32_t oc __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
163 uint32_t zero __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
164 uint32_t cy __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
165 uint32_t crv __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
166 uint32_t rmask __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
167 uint32_t cbu __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
168 uint32_t bmask __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
169 uint32_t cgu __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
170 uint32_t cgv __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
171 uint32_t gmask __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
172 #endif |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
173 |
23805 | 174 #ifdef HAVE_VIS |
175 uint64_t sparc_coeffs[10] __attribute__((aligned(8))); | |
176 #endif | |
23289
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
177 |
18861 | 178 } SwsContext; |
179 //FIXME check init (where 0) | |
180 | |
181 SwsFunc yuv2rgb_get_func_ptr (SwsContext *c); | |
182 int yuv2rgb_c_init_tables (SwsContext *c, const int inv_table[4], int fullRange, int brightness, int contrast, int saturation); | |
183 | |
19143
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
184 char *sws_format_name(int format); |
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
185 |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
186 //FIXME replace this with something faster |
23278 | 187 #define isPlanarYUV(x) ( \ |
188 (x)==PIX_FMT_YUV410P \ | |
189 || (x)==PIX_FMT_YUV420P \ | |
190 || (x)==PIX_FMT_YUV411P \ | |
191 || (x)==PIX_FMT_YUV422P \ | |
192 || (x)==PIX_FMT_YUV444P \ | |
23791 | 193 || (x)==PIX_FMT_YUV440P \ |
23278 | 194 || (x)==PIX_FMT_NV12 \ |
195 || (x)==PIX_FMT_NV21 \ | |
196 ) | |
197 #define isYUV(x) ( \ | |
198 (x)==PIX_FMT_UYVY422 \ | |
199 || (x)==PIX_FMT_YUYV422 \ | |
200 || isPlanarYUV(x) \ | |
201 ) | |
202 #define isGray(x) ( \ | |
203 (x)==PIX_FMT_GRAY8 \ | |
204 || (x)==PIX_FMT_GRAY16BE \ | |
205 || (x)==PIX_FMT_GRAY16LE \ | |
206 ) | |
207 #define isGray16(x) ( \ | |
208 (x)==PIX_FMT_GRAY16BE \ | |
209 || (x)==PIX_FMT_GRAY16LE \ | |
210 ) | |
211 #define isRGB(x) ( \ | |
212 (x)==PIX_FMT_BGR32 \ | |
213 || (x)==PIX_FMT_RGB24 \ | |
214 || (x)==PIX_FMT_RGB565 \ | |
215 || (x)==PIX_FMT_RGB555 \ | |
216 || (x)==PIX_FMT_RGB8 \ | |
217 || (x)==PIX_FMT_RGB4 \ | |
218 || (x)==PIX_FMT_RGB4_BYTE \ | |
219 || (x)==PIX_FMT_MONOBLACK \ | |
220 ) | |
221 #define isBGR(x) ( \ | |
222 (x)==PIX_FMT_RGB32 \ | |
223 || (x)==PIX_FMT_BGR24 \ | |
224 || (x)==PIX_FMT_BGR565 \ | |
225 || (x)==PIX_FMT_BGR555 \ | |
226 || (x)==PIX_FMT_BGR8 \ | |
227 || (x)==PIX_FMT_BGR4 \ | |
228 || (x)==PIX_FMT_BGR4_BYTE \ | |
229 || (x)==PIX_FMT_MONOBLACK \ | |
230 ) | |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
231 |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
232 static inline int fmt_depth(int fmt) |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
233 { |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
234 switch(fmt) { |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
235 case PIX_FMT_BGRA: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
236 case PIX_FMT_ABGR: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
237 case PIX_FMT_RGBA: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
238 case PIX_FMT_ARGB: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
239 return 32; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
240 case PIX_FMT_BGR24: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
241 case PIX_FMT_RGB24: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
242 return 24; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
243 case PIX_FMT_BGR565: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
244 case PIX_FMT_RGB565: |
20411 | 245 case PIX_FMT_GRAY16BE: |
246 case PIX_FMT_GRAY16LE: | |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
247 return 16; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
248 case PIX_FMT_BGR555: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
249 case PIX_FMT_RGB555: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
250 return 15; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
251 case PIX_FMT_BGR8: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
252 case PIX_FMT_RGB8: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
253 return 8; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
254 case PIX_FMT_BGR4: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
255 case PIX_FMT_RGB4: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
256 case PIX_FMT_BGR4_BYTE: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
257 case PIX_FMT_RGB4_BYTE: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
258 return 4; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
259 case PIX_FMT_MONOBLACK: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
260 return 1; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
261 default: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
262 return 0; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
263 } |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
264 } |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
265 |
18861 | 266 #endif |