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) {