# HG changeset patch # User michael # Date 1171717115 0 # Node ID 55aeb86425cbeea03ebb717ccead5f213c749196 # Parent cec1eb5be9e435d5198e65e67cc62ab27df1c590 swap palette on big endian diff -r cec1eb5be9e4 -r 55aeb86425cb libmpcodecs/vf_scale.c --- a/libmpcodecs/vf_scale.c Sat Feb 17 11:40:01 2007 +0000 +++ b/libmpcodecs/vf_scale.c Sat Feb 17 12:58:35 2007 +0000 @@ -11,6 +11,7 @@ #include "mp_image.h" #include "vf.h" #include "fmt-conversion.h" +#include "bswap.h" #include "libvo/fastmemcpy.h" #include "libswscale/swscale.h" @@ -323,9 +324,19 @@ static void scale(struct SwsContext *sws1, struct SwsContext *sws2, uint8_t *src[3], int src_stride[3], int y, int h, uint8_t *dst[3], int dst_stride[3], int interlaced){ + uint8_t *src2[3]={src[0], src[1], src[2]}; +#ifdef WORDS_BIGENDIAN + uint32_t pal2[256]; + if (src[1] && !src[2]){ + int i; + for(i=0; i<256; i++) + pal2[i]= bswap_32(((uint32_t*)src[1])[i]); + src2[1]= pal2; + } +#endif + if(interlaced){ int i; - uint8_t *src2[3]={src[0], src[1], src[2]}; uint8_t *dst2[3]={dst[0], dst[1], dst[2]}; int src_stride2[3]={2*src_stride[0], 2*src_stride[1], 2*src_stride[2]}; int dst_stride2[3]={2*dst_stride[0], 2*dst_stride[1], 2*dst_stride[2]}; @@ -337,7 +348,7 @@ } sws_scale_ordered(sws2, src2, src_stride2, y>>1, h>>1, dst2, dst_stride2); }else{ - sws_scale_ordered(sws1, src, src_stride, y, h, dst, dst_stride); + sws_scale_ordered(sws1, src2, src_stride, y, h, dst, dst_stride); } }