diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-11-20 00:43:45 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-11-28 18:53:11 +0100 |
commit | 51c32a535bb40c8e978a7bc06ad6eccb5cebf2a0 (patch) | |
tree | a9415222e5b469b18779462ae0268cb449a93f52 | |
parent | c4034e4e192e6e9db2c2362479b576d449af5ece (diff) | |
download | ffmpeg-51c32a535bb40c8e978a7bc06ad6eccb5cebf2a0.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.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libswscale/x86/rgb2rgb_template.c b/libswscale/x86/rgb2rgb_template.c index d684b70d4c..004621a824 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++) { |