comparison postproc/rgb2rgb.c @ 7159:1df24fd752d0

added missing palette8tobgr pairs (hope it's correct)
author alex
date Fri, 30 Aug 2002 11:17:15 +0000
parents 49eac73d0e07
children d5bd28edf486
comparison
equal deleted inserted replaced
7158:90ff4ef3ca9e 7159:1df24fd752d0
10 #include <inttypes.h> 10 #include <inttypes.h>
11 #include "../config.h" 11 #include "../config.h"
12 #include "rgb2rgb.h" 12 #include "rgb2rgb.h"
13 #include "../cpudetect.h" 13 #include "../cpudetect.h"
14 #include "../mangle.h" 14 #include "../mangle.h"
15 #include "../bswap.h"
15 16
16 #ifdef ARCH_X86 17 #ifdef ARCH_X86
17 #define CAN_COMPILE_X86_ASM 18 #define CAN_COMPILE_X86_ASM
18 #endif 19 #endif
19 20
266 unsigned i; 267 unsigned i;
267 for(i=0; i<num_pixels; i++) 268 for(i=0; i<num_pixels; i++)
268 ((unsigned *)dst)[i] = ((unsigned *)palette)[ src[i] ]; 269 ((unsigned *)dst)[i] = ((unsigned *)palette)[ src[i] ];
269 } 270 }
270 271
272 #if 0
273 void palette8tobgr32(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette)
274 {
275 unsigned i;
276 for(i=0; i<num_pixels; i++)
277 {
278 //FIXME slow?
279 dst[0]= palette[ src[i]*4+3 ];
280 dst[1]= palette[ src[i]*4+2 ];
281 dst[2]= palette[ src[i]*4+1 ];
282 dst[3]= palette[ src[i]*4+0 ];
283 dst+= 4;
284 }
285 }
286 #else
287 void palette8tobgr32(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette)
288 {
289 unsigned i;
290 for(i=0; i<num_pixels; i++)
291 ((unsigned *)dst)[i] = bswap_32(((unsigned *)palette)[ src[i] ]);
292 }
293 #endif
294
271 /** 295 /**
272 * Pallete is assumed to contain bgr32 296 * Pallete is assumed to contain bgr32
273 */ 297 */
274 void palette8torgb24(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette) 298 void palette8torgb24(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette)
275 { 299 {
287 dst[2]= palette[ src[i]*4+2 ]; 311 dst[2]= palette[ src[i]*4+2 ];
288 dst+= 3; 312 dst+= 3;
289 } 313 }
290 } 314 }
291 315
316 void palette8tobgr24(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette)
317 {
318 unsigned i;
319 /*
320 writes 1 byte o much and might cause alignment issues on some architectures?
321 for(i=0; i<num_pixels; i++)
322 ((unsigned *)(&dst[i*3])) = ((unsigned *)palette)[ src[i] ];
323 */
324 for(i=0; i<num_pixels; i++)
325 {
326 //FIXME slow?
327 dst[0]= palette[ src[i]*4+3 ];
328 dst[1]= palette[ src[i]*4+2 ];
329 dst[2]= palette[ src[i]*4+1 ];
330 dst+= 3;
331 }
332 }
333
292 void bgr24torgb24(const uint8_t *src, uint8_t *dst, unsigned src_size) 334 void bgr24torgb24(const uint8_t *src, uint8_t *dst, unsigned src_size)
293 { 335 {
294 #ifdef CAN_COMPILE_X86_ASM 336 #ifdef CAN_COMPILE_X86_ASM
295 // ordered per speed fasterst first 337 // ordered per speed fasterst first
296 if(gCpuCaps.hasMMX2) 338 if(gCpuCaps.hasMMX2)
373 { 415 {
374 unsigned i; 416 unsigned i;
375 for(i=0; i<num_pixels; i++) 417 for(i=0; i<num_pixels; i++)
376 ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ]; 418 ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ];
377 } 419 }
420 void palette8tobgr16(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette)
421 {
422 unsigned i;
423 for(i=0; i<num_pixels; i++)
424 ((uint16_t *)dst)[i] = bswap_16(((uint16_t *)palette)[ src[i] ]);
425 }
378 426
379 /** 427 /**
380 * Pallete is assumed to contain bgr15, see rgb32to15 to convert the palette 428 * Pallete is assumed to contain bgr15, see rgb32to15 to convert the palette
381 */ 429 */
382 void palette8torgb15(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette) 430 void palette8torgb15(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette)
383 { 431 {
384 unsigned i; 432 unsigned i;
385 for(i=0; i<num_pixels; i++) 433 for(i=0; i<num_pixels; i++)
386 ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ]; 434 ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ];
435 }
436 void palette8tobgr15(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette)
437 {
438 unsigned i;
439 for(i=0; i<num_pixels; i++)
440 ((uint16_t *)dst)[i] = bswap_16(((uint16_t *)palette)[ src[i] ]);
387 } 441 }
388 442
389 void rgb32tobgr32(const uint8_t *src, uint8_t *dst, unsigned int src_size) 443 void rgb32tobgr32(const uint8_t *src, uint8_t *dst, unsigned int src_size)
390 { 444 {
391 #ifdef CAN_COMPILE_X86_ASM 445 #ifdef CAN_COMPILE_X86_ASM