summaryrefslogtreecommitdiffstats
path: root/libswscale/swscale.c
diff options
context:
space:
mode:
authorbcoudurier <bcoudurier@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-09-05 00:25:39 +0000
committerbcoudurier <bcoudurier@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-09-05 00:25:39 +0000
commit3178a5606aa85d993258695733fb01568790fe99 (patch)
tree6958e9d406367d550023255af28361788266115a /libswscale/swscale.c
parent6e6692a4ff4a49c80b75f12fa30f9f36940b3f76 (diff)
downloadmpv-3178a5606aa85d993258695733fb01568790fe99.tar.bz2
mpv-3178a5606aa85d993258695733fb01568790fe99.tar.xz
enable yuv422p to uyvy converter
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27527 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libswscale/swscale.c')
-rw-r--r--libswscale/swscale.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/libswscale/swscale.c b/libswscale/swscale.c
index e5c9b898a7..8fdd5eb0cc 100644
--- a/libswscale/swscale.c
+++ b/libswscale/swscale.c
@@ -1648,6 +1648,24 @@ static int PlanarToUyvyWrapper(SwsContext *c, uint8_t* src[], int srcStride[], i
return srcSliceH;
}
+static int YUV422PToYuy2Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
+ int srcSliceH, uint8_t* dstParam[], int dstStride[]){
+ uint8_t *dst=dstParam[0] + dstStride[0]*srcSliceY;
+
+ yuv422ptoyuy2(src[0],src[1],src[2],dst,c->srcW,srcSliceH,srcStride[0],srcStride[1],dstStride[0]);
+
+ return srcSliceH;
+}
+
+static int YUV422PToUyvyWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
+ int srcSliceH, uint8_t* dstParam[], int dstStride[]){
+ uint8_t *dst=dstParam[0] + dstStride[0]*srcSliceY;
+
+ yuv422ptouyvy(src[0],src[1],src[2],dst,c->srcW,srcSliceH,srcStride[0],srcStride[1],dstStride[0]);
+
+ return srcSliceH;
+}
+
/* {RGB,BGR}{15,16,24,32,32_1} -> {RGB,BGR}{15,16,24,32} */
static int rgb2rgbWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){
@@ -2233,6 +2251,14 @@ SwsContext *sws_getContext(int srcW, int srcH, int srcFormat, int dstW, int dstH
&& (!needsDither || (c->flags&(SWS_FAST_BILINEAR|SWS_POINT))))
c->swScale= rgb2rgbWrapper;
+ if (srcFormat == PIX_FMT_YUV422P)
+ {
+ if (dstFormat == PIX_FMT_YUYV422)
+ c->swScale= YUV422PToYuy2Wrapper;
+ else if (dstFormat == PIX_FMT_UYVY422)
+ c->swScale= YUV422PToUyvyWrapper;
+ }
+
/* LQ converters if -sws 0 or -sws 4*/
if (c->flags&(SWS_FAST_BILINEAR|SWS_POINT)){
/* yv12_to_yuy2 */