aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-11-20 00:43:45 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-12-08 19:08:30 +0100
commitde7671e4c47f14b2fd8c626bff27d330c693ad19 (patch)
treef50e0f7fcb4f9a02bda227f60cb3e0de52d049da
parent217f781adca310cadcc631ff5d94cca6d029ec0e (diff)
downloadffmpeg-de7671e4c47f14b2fd8c626bff27d330c693ad19.tar.gz
swscale/x86/rgb2rgb_template: handle the first 2 lines with C in rgb24toyv12_*()
This avoids out of array accesses Should fix Ticket3451 Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit 4388e78a0f022c8572996f9ab568a39b5f716f9d) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libswscale/x86/rgb2rgb_template.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libswscale/x86/rgb2rgb_template.c b/libswscale/x86/rgb2rgb_template.c
index 05c75d9ab9..734453b7c9 100644
--- a/libswscale/x86/rgb2rgb_template.c
+++ b/libswscale/x86/rgb2rgb_template.c
@@ -1623,6 +1623,16 @@ static inline void RENAME(rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_
#define BGR2V_IDX "16*4+16*34"
int y;
const x86_reg chromWidth= width>>1;
+
+ if (height > 2) {
+ ff_rgb24toyv12_c(src, ydst, udst, vdst, width, 2, lumStride, chromStride, srcStride, rgb2yuv);
+ src += 2*srcStride;
+ ydst += 2*lumStride;
+ udst += chromStride;
+ vdst += chromStride;
+ height -= 2;
+ }
+
for (y=0; y<height-2; y+=2) {
int i;
for (i=0; i<2; i++) {