[SCM] libav/experimental: unscaled BGR24 -> YV12

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 15:31:00 UTC 2013


The following commit has been merged in the experimental branch:
commit ec22603f791d32247fd0ea2e70d95732edd39b4f
Author: Michael Niedermayer <michaelni at gmx.at>
Date:   Sun Feb 10 00:43:31 2002 +0000

    unscaled BGR24 -> YV12
    
    Originally committed as revision 4624 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc

diff --git a/postproc/swscale.c b/postproc/swscale.c
index 5610b65..bfe39af 100644
--- a/postproc/swscale.c
+++ b/postproc/swscale.c
@@ -42,6 +42,7 @@ untested special converters
   YUY2/BGR15/BGR16/BGR24/BGR32/RGB24/RGB32 -> same format
   BGR24 -> BGR32 & RGB24 -> RGB32
   BGR32 -> BGR24 & RGB32 -> RGB24
+  BGR24 -> YV12
 */
 
 #include <inttypes.h>
@@ -1227,6 +1228,18 @@ static void bgr15to16Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int
 	}     
 }
 
+static void bgr24toyv12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
+             int srcSliceH, uint8_t* dst[], int dstStride[]){
+
+	rgb24toyv12(
+		src[0], 
+		dst[0]+ srcSliceY    *dstStride[0], 
+		dst[1]+(srcSliceY>>1)*dstStride[1], 
+		dst[2]+(srcSliceY>>1)*dstStride[2],
+		c->srcW, srcSliceH, 
+		dstStride[0], dstStride[1], srcStride[0]);
+}
+
 
 /* unscaled copy like stuff (assumes nearly identical formats) */
 static void simpleCopy(SwsContext *c, uint8_t* srcParam[], int srcStrideParam[], int srcSliceY,
@@ -1449,6 +1462,17 @@ SwsContext *getSwsContext(int srcW, int srcH, int srcFormat, int dstW, int dstH,
 					vo_format_name(srcFormat), vo_format_name(dstFormat));
 			return c;
 		}
+
+		/* bgr24toYV12 */
+		if(srcFormat==IMGFMT_BGR24 && dstFormat==IMGFMT_YV12)
+		{
+			c->swScale= bgr24toyv12Wrapper;
+
+			if(flags&SWS_PRINT_INFO)
+				printf("SwScaler: using unscaled %s -> %s special converter\n", 
+					vo_format_name(srcFormat), vo_format_name(dstFormat));
+			return c;
+		}
 	}
 
 	if(cpuCaps.hasMMX2)

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list