# HG changeset patch # User reimar # Date 1170267287 0 # Node ID e81065a87c2db487c43d746e98ece4b488a468ce # Parent c604c9a97c35cd0e04f39ac44ac45a968c3ede4a Swap palette on bigendian. diff -r c604c9a97c35 -r e81065a87c2d libmpcodecs/vd_ffmpeg.c --- a/libmpcodecs/vd_ffmpeg.c Wed Jan 31 15:28:50 2007 +0000 +++ b/libmpcodecs/vd_ffmpeg.c Wed Jan 31 18:14:47 2007 +0000 @@ -717,6 +717,12 @@ uint32_t chunktab; // offset to chunk offset array } dp_hdr_t; +void swap_palette(void *pal) { + int i; + uint32_t *p = pal; + for (i = 0; i < AVPALETTE_COUNT; i++) + p[i] = le2me_32(p[i]); +} // decode a frame static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){ @@ -884,6 +890,11 @@ mpi->stride[2]*=2; } +#ifdef WORDS_BIGENDIAN + // FIXME: this might cause problems for buffers with FF_BUFFER_HINTS_PRESERVE + if (mpi->bpp == 8) + swap_palette(mpi->planes[1]); +#endif /* to comfirm with newer lavc style */ mpi->qscale =pic->qscale_table; mpi->qstride=pic->qstride;