summaryrefslogtreecommitdiffstats
path: root/libswscale/rgb2rgb.c
diff options
context:
space:
mode:
authorvitor <vitor@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-10-23 19:13:11 +0000
committervitor <vitor@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-10-23 19:13:11 +0000
commitf42e50f3679d7ce362d6ca5652dd90c6fd289073 (patch)
tree013eebe0ea413636db1f271eb8db18a546a20980 /libswscale/rgb2rgb.c
parente9b43bec0944b6a0882d0520d70edb5f4c7876f3 (diff)
downloadmpv-f42e50f3679d7ce362d6ca5652dd90c6fd289073.tar.bz2
mpv-f42e50f3679d7ce362d6ca5652dd90c6fd289073.tar.xz
Fix broken palette8to*.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27817 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libswscale/rgb2rgb.c')
-rw-r--r--libswscale/rgb2rgb.c71
1 files changed, 5 insertions, 66 deletions
diff --git a/libswscale/rgb2rgb.c b/libswscale/rgb2rgb.c
index 13388ac85a..b55141264a 100644
--- a/libswscale/rgb2rgb.c
+++ b/libswscale/rgb2rgb.c
@@ -213,84 +213,23 @@ void sws_rgb2rgb_init(int flags){
}
/**
- * Palette is assumed to contain BGR32.
+ * Convert the palette to the same packet 32-bit format as the palette
*/
-void palette8torgb32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
+void palette8topacked32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
{
long i;
-/*
- for (i=0; i<num_pixels; i++)
- ((unsigned *)dst)[i] = ((unsigned *)palette)[src[i]];
-*/
-
- for (i=0; i<num_pixels; i++)
- {
- #ifdef WORDS_BIGENDIAN
- dst[3]= palette[src[i]*4+2];
- dst[2]= palette[src[i]*4+1];
- dst[1]= palette[src[i]*4+0];
- #else
- //FIXME slow?
- dst[0]= palette[src[i]*4+2];
- dst[1]= palette[src[i]*4+1];
- dst[2]= palette[src[i]*4+0];
- //dst[3]= 0; /* do we need this cleansing? */
- #endif
- dst+= 4;
- }
-}
-
-void palette8tobgr32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
-{
- long i;
for (i=0; i<num_pixels; i++)
- {
- #ifdef WORDS_BIGENDIAN
- dst[3]= palette[src[i]*4+0];
- dst[2]= palette[src[i]*4+1];
- dst[1]= palette[src[i]*4+2];
- #else
- //FIXME slow?
- dst[0]= palette[src[i]*4+0];
- dst[1]= palette[src[i]*4+1];
- dst[2]= palette[src[i]*4+2];
- //dst[3]= 0; /* do we need this cleansing? */
- #endif
-
- dst+= 4;
- }
+ ((uint32_t *) dst)[i] = ((const uint32_t *) palette)[src[i]];
}
/**
- * Palette is assumed to contain BGR32.
+ * Palette format: ABCD -> dst format: ABC
*/
-void palette8torgb24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
+void palette8topacked24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
{
long i;
-/*
- Writes 1 byte too much and might cause alignment issues on some architectures?
- for (i=0; i<num_pixels; i++)
- ((unsigned *)(&dst[i*3])) = ((unsigned *)palette)[src[i]];
-*/
- for (i=0; i<num_pixels; i++)
- {
- //FIXME slow?
- dst[0]= palette[src[i]*4+2];
- dst[1]= palette[src[i]*4+1];
- dst[2]= palette[src[i]*4+0];
- dst+= 3;
- }
-}
-void palette8tobgr24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
-{
- long i;
-/*
- Writes 1 byte too much and might cause alignment issues on some architectures?
- for (i=0; i<num_pixels; i++)
- ((unsigned *)(&dst[i*3])) = ((unsigned *)palette)[src[i]];
-*/
for (i=0; i<num_pixels; i++)
{
//FIXME slow?