Mercurial > mplayer.hg
comparison libswscale/swscale.c @ 27783:3a18c8bdb555
Fix broken palette8to*.
author | vitor |
---|---|
date | Thu, 23 Oct 2008 19:13:11 +0000 |
parents | 7b83cbade239 |
children | a57f38e92ed5 |
comparison
equal
deleted
inserted
replaced
27782:13b72e7bf7ac | 27783:3a18c8bdb555 |
---|---|
1727 if (!usePal(srcFormat)) | 1727 if (!usePal(srcFormat)) |
1728 av_log(c, AV_LOG_ERROR, "internal error %s -> %s converter\n", | 1728 av_log(c, AV_LOG_ERROR, "internal error %s -> %s converter\n", |
1729 sws_format_name(srcFormat), sws_format_name(dstFormat)); | 1729 sws_format_name(srcFormat), sws_format_name(dstFormat)); |
1730 | 1730 |
1731 switch(dstFormat){ | 1731 switch(dstFormat){ |
1732 case PIX_FMT_RGB32: conv = palette8torgb32; break; | 1732 case PIX_FMT_RGB32 : conv = palette8topacked32; break; |
1733 case PIX_FMT_BGR32: conv = palette8tobgr32; break; | 1733 case PIX_FMT_BGR32 : conv = palette8topacked32; break; |
1734 case PIX_FMT_RGB24: conv = palette8torgb24; break; | 1734 case PIX_FMT_BGR32_1: conv = palette8topacked32; break; |
1735 case PIX_FMT_BGR24: conv = palette8tobgr24; break; | 1735 case PIX_FMT_RGB32_1: conv = palette8topacked32; break; |
1736 case PIX_FMT_RGB24 : conv = palette8topacked24; break; | |
1737 case PIX_FMT_BGR24 : conv = palette8topacked24; break; | |
1736 default: av_log(c, AV_LOG_ERROR, "internal error %s -> %s converter\n", | 1738 default: av_log(c, AV_LOG_ERROR, "internal error %s -> %s converter\n", |
1737 sws_format_name(srcFormat), sws_format_name(dstFormat)); break; | 1739 sws_format_name(srcFormat), sws_format_name(dstFormat)); break; |
1738 } | 1740 } |
1739 | 1741 |
1740 | 1742 |
2341 && (!needsDither || (c->flags&(SWS_FAST_BILINEAR|SWS_POINT)))) | 2343 && (!needsDither || (c->flags&(SWS_FAST_BILINEAR|SWS_POINT)))) |
2342 c->swScale= rgb2rgbWrapper; | 2344 c->swScale= rgb2rgbWrapper; |
2343 | 2345 |
2344 if ((usePal(srcFormat) && ( | 2346 if ((usePal(srcFormat) && ( |
2345 dstFormat == PIX_FMT_RGB32 || | 2347 dstFormat == PIX_FMT_RGB32 || |
2348 dstFormat == PIX_FMT_RGB32_1 || | |
2346 dstFormat == PIX_FMT_RGB24 || | 2349 dstFormat == PIX_FMT_RGB24 || |
2347 dstFormat == PIX_FMT_BGR32 || | 2350 dstFormat == PIX_FMT_BGR32 || |
2351 dstFormat == PIX_FMT_BGR32_1 || | |
2348 dstFormat == PIX_FMT_BGR24))) | 2352 dstFormat == PIX_FMT_BGR24))) |
2349 c->swScale= pal2rgbWrapper; | 2353 c->swScale= pal2rgbWrapper; |
2350 | 2354 |
2351 if (srcFormat == PIX_FMT_YUV422P) | 2355 if (srcFormat == PIX_FMT_YUV422P) |
2352 { | 2356 { |
2737 } | 2741 } |
2738 y= av_clip_uint8((RY*r + GY*g + BY*b + ( 33<<(RGB2YUV_SHIFT-1)))>>RGB2YUV_SHIFT); | 2742 y= av_clip_uint8((RY*r + GY*g + BY*b + ( 33<<(RGB2YUV_SHIFT-1)))>>RGB2YUV_SHIFT); |
2739 u= av_clip_uint8((RU*r + GU*g + BU*b + (257<<(RGB2YUV_SHIFT-1)))>>RGB2YUV_SHIFT); | 2743 u= av_clip_uint8((RU*r + GU*g + BU*b + (257<<(RGB2YUV_SHIFT-1)))>>RGB2YUV_SHIFT); |
2740 v= av_clip_uint8((RV*r + GV*g + BV*b + (257<<(RGB2YUV_SHIFT-1)))>>RGB2YUV_SHIFT); | 2744 v= av_clip_uint8((RV*r + GV*g + BV*b + (257<<(RGB2YUV_SHIFT-1)))>>RGB2YUV_SHIFT); |
2741 c->pal_yuv[i]= y + (u<<8) + (v<<16); | 2745 c->pal_yuv[i]= y + (u<<8) + (v<<16); |
2742 c->pal_rgb[i]= b + (g<<8) + (r<<16); | 2746 |
2747 | |
2748 switch(c->dstFormat) { | |
2749 case PIX_FMT_BGR32: | |
2750 #ifndef WORDS_BIGENDIAN | |
2751 case PIX_FMT_RGB24: | |
2752 #endif | |
2753 c->pal_rgb[i]= r + (g<<8) + (b<<16); | |
2754 break; | |
2755 case PIX_FMT_BGR32_1: | |
2756 #ifdef WORDS_BIGENDIAN | |
2757 case PIX_FMT_BGR24: | |
2758 #endif | |
2759 c->pal_rgb[i]= (r + (g<<8) + (b<<16)) << 8; | |
2760 break; | |
2761 case PIX_FMT_RGB32_1: | |
2762 #ifdef WORDS_BIGENDIAN | |
2763 case PIX_FMT_RGB24: | |
2764 #endif | |
2765 c->pal_rgb[i]= (b + (g<<8) + (r<<16)) << 8; | |
2766 break; | |
2767 case PIX_FMT_RGB32: | |
2768 #ifndef WORDS_BIGENDIAN | |
2769 case PIX_FMT_BGR24: | |
2770 #endif | |
2771 default: | |
2772 c->pal_rgb[i]= b + (g<<8) + (r<<16); | |
2773 } | |
2743 } | 2774 } |
2744 } | 2775 } |
2745 | 2776 |
2746 // copy strides, so they can safely be modified | 2777 // copy strides, so they can safely be modified |
2747 if (c->sliceDir == 1) { | 2778 if (c->sliceDir == 1) { |