Mercurial > mplayer.hg
comparison postproc/swscale.c @ 6582:f98313dcd428
yvu9 -> yv12 unscaled converter with linear chroma scaling
author | michael |
---|---|
date | Thu, 27 Jun 2002 23:48:53 +0000 |
parents | 5059143aa020 |
children | 0b5a789d7fab |
comparison
equal
deleted
inserted
replaced
6581:896c062e85ec | 6582:f98313dcd428 |
---|---|
1775 dst[2]+(srcSliceY>>1)*dstStride[2], | 1775 dst[2]+(srcSliceY>>1)*dstStride[2], |
1776 c->srcW, srcSliceH, | 1776 c->srcW, srcSliceH, |
1777 dstStride[0], dstStride[1], srcStride[0]); | 1777 dstStride[0], dstStride[1], srcStride[0]); |
1778 } | 1778 } |
1779 | 1779 |
1780 static void yvu9toyv12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | |
1781 int srcSliceH, uint8_t* dst[], int dstStride[]){ | |
1782 int i; | |
1783 | |
1784 /* copy Y */ | |
1785 if(srcStride[0]==dstStride[0]) | |
1786 memcpy(dst[0]+ srcSliceY*dstStride[0], src[0], srcStride[0]*srcSliceH); | |
1787 else{ | |
1788 uint8_t *srcPtr= src[0]; | |
1789 uint8_t *dstPtr= dst[0] + dstStride[0]*srcSliceY; | |
1790 | |
1791 for(i=0; i<srcSliceH; i++) | |
1792 { | |
1793 memcpy(dstPtr, srcPtr, c->srcW); | |
1794 srcPtr+= srcStride[0]; | |
1795 dstPtr+= dstStride[0]; | |
1796 } | |
1797 } | |
1798 | |
1799 if(c->dstFormat==IMGFMT_YV12){ | |
1800 planar2x(src[1], dst[1], c->chrSrcW, c->chrSrcH, srcStride[1], dstStride[1]); | |
1801 planar2x(src[2], dst[2], c->chrSrcW, c->chrSrcH, srcStride[2], dstStride[2]); | |
1802 }else{ | |
1803 planar2x(src[1], dst[2], c->chrSrcW, c->chrSrcH, srcStride[1], dstStride[2]); | |
1804 planar2x(src[2], dst[1], c->chrSrcW, c->chrSrcH, srcStride[2], dstStride[1]); | |
1805 } | |
1806 } | |
1807 | |
1780 /** | 1808 /** |
1781 * bring pointers in YUV order instead of YVU | 1809 * bring pointers in YUV order instead of YVU |
1782 */ | 1810 */ |
1783 static inline void orderYUV(int format, uint8_t * sortedP[], int sortedStride[], uint8_t * p[], int stride[]){ | 1811 static inline void orderYUV(int format, uint8_t * sortedP[], int sortedStride[], uint8_t * p[], int stride[]){ |
1784 if(format == IMGFMT_YV12 || format == IMGFMT_YVU9){ | 1812 if(format == IMGFMT_YV12 || format == IMGFMT_YVU9){ |
2049 if(flags&SWS_PRINT_INFO) | 2077 if(flags&SWS_PRINT_INFO) |
2050 MSG_INFO("SwScaler: using unscaled %s -> %s special converter\n", | 2078 MSG_INFO("SwScaler: using unscaled %s -> %s special converter\n", |
2051 vo_format_name(srcFormat), vo_format_name(dstFormat)); | 2079 vo_format_name(srcFormat), vo_format_name(dstFormat)); |
2052 return c; | 2080 return c; |
2053 } | 2081 } |
2054 #if 1 | 2082 |
2055 /* simple copy */ | 2083 /* simple copy */ |
2056 if( srcFormat == dstFormat | 2084 if( srcFormat == dstFormat |
2057 || (srcFormat==IMGFMT_YV12 && dstFormat==IMGFMT_I420) | 2085 || (srcFormat==IMGFMT_YV12 && dstFormat==IMGFMT_I420) |
2058 || (srcFormat==IMGFMT_I420 && dstFormat==IMGFMT_YV12) | 2086 || (srcFormat==IMGFMT_I420 && dstFormat==IMGFMT_YV12) |
2059 || (isPlanarYUV(srcFormat) && isGray(dstFormat)) | 2087 || (isPlanarYUV(srcFormat) && isGray(dstFormat)) |
2065 if(flags&SWS_PRINT_INFO) | 2093 if(flags&SWS_PRINT_INFO) |
2066 MSG_INFO("SwScaler: using unscaled %s -> %s special converter\n", | 2094 MSG_INFO("SwScaler: using unscaled %s -> %s special converter\n", |
2067 vo_format_name(srcFormat), vo_format_name(dstFormat)); | 2095 vo_format_name(srcFormat), vo_format_name(dstFormat)); |
2068 return c; | 2096 return c; |
2069 } | 2097 } |
2070 #endif | 2098 |
2099 if( srcFormat==IMGFMT_YVU9 && (dstFormat==IMGFMT_YV12 || dstFormat==IMGFMT_I420) ) | |
2100 { | |
2101 c->swScale= yvu9toyv12Wrapper; | |
2102 | |
2103 if(flags&SWS_PRINT_INFO) | |
2104 MSG_INFO("SwScaler: using unscaled %s -> %s special converter\n", | |
2105 vo_format_name(srcFormat), vo_format_name(dstFormat)); | |
2106 return c; | |
2107 } | |
2108 | |
2071 /* bgr32to24 & rgb32to24*/ | 2109 /* bgr32to24 & rgb32to24*/ |
2072 if((srcFormat==IMGFMT_BGR32 && dstFormat==IMGFMT_BGR24) | 2110 if((srcFormat==IMGFMT_BGR32 && dstFormat==IMGFMT_BGR24) |
2073 ||(srcFormat==IMGFMT_RGB32 && dstFormat==IMGFMT_RGB24)) | 2111 ||(srcFormat==IMGFMT_RGB32 && dstFormat==IMGFMT_RGB24)) |
2074 { | 2112 { |
2075 c->swScale= bgr32to24Wrapper; | 2113 c->swScale= bgr32to24Wrapper; |