Mercurial > mplayer.hg
comparison postproc/rgb2rgb.c @ 2694:2924350d92ed
bgr32to16, bgr32to15 (needed for palette stuff)
paletteto 32,16,15bgr
all in c, will be optimized as soon as they are tested (assuming opt. is possible)
author | michael |
---|---|
date | Sun, 04 Nov 2001 19:36:24 +0000 |
parents | 794dec2fae64 |
children | 1eaf3f89e49f |
comparison
equal
deleted
inserted
replaced
2693:1a8e5e017b1d | 2694:2924350d92ed |
---|---|
1 /* | 1 /* |
2 * | 2 * |
3 * rgb2rgb.c, Software RGB to RGB convertor | 3 * rgb2rgb.c, Software RGB to RGB convertor |
4 * Written by Nick Kurshev. | 4 * Written by Nick Kurshev. |
5 */ | 5 */ |
6 #include <inttypes.h> | 6 #include <inttypes.h> |
168 00000000000001 1111=0x001F */ | 168 00000000000001 1111=0x001F */ |
169 *( d1++ )=( x&0x001F )|( ( x&0x7FE0 )<<1 ); | 169 *( d1++ )=( x&0x001F )|( ( x&0x7FE0 )<<1 ); |
170 } | 170 } |
171 #endif | 171 #endif |
172 } | 172 } |
173 | |
174 /** | |
175 * Pallete is assumed to contain bgr32 | |
176 */ | |
177 void palette8torgb32(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette) | |
178 { | |
179 int i; | |
180 for(i=0; i<src_size; i++) | |
181 ((uint32_t *)dst)[i] = ((uint32_t *)palette)[ src[i] ]; | |
182 } | |
183 | |
184 void rgb32to16(uint8_t *src, uint8_t *dst, int src_size) | |
185 { | |
186 int i; | |
187 for(i=0; i<src_size; i+=4) | |
188 { | |
189 const int b= src[i+0]; | |
190 const int g= src[i+1]; | |
191 const int r= src[i+2]; | |
192 | |
193 ((uint16_t *)dst)[i]= (b>>3) | ((g&0xFC)<<3) | ((r&0xF8)<<8); | |
194 } | |
195 } | |
196 | |
197 void rgb32to15(uint8_t *src, uint8_t *dst, int src_size) | |
198 { | |
199 int i; | |
200 for(i=0; i<src_size; i+=4) | |
201 { | |
202 const int b= src[i+0]; | |
203 const int g= src[i+1]; | |
204 const int r= src[i+2]; | |
205 | |
206 ((uint16_t *)dst)[i]= (b>>3) | ((g&0xF8)<<3) | ((r&0xF8)<<7); | |
207 } | |
208 } | |
209 | |
210 | |
211 /** | |
212 * Palette is assumed to contain bgr16, see rgb32to16 to convert the palette | |
213 */ | |
214 void palette8torgb16(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette) | |
215 { | |
216 int i; | |
217 for(i=0; i<src_size; i++) | |
218 ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ]; | |
219 } | |
220 | |
221 /** | |
222 * Pallete is assumed to contain bgr15, see rgb32to15 to convert the palette | |
223 */ | |
224 void palette8torgb15(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette) | |
225 { | |
226 int i; | |
227 for(i=0; i<src_size; i++) | |
228 ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ]; | |
229 } |