[FFmpeg-devel] [PATCH] swscale: avoid overread in planar2x
Michael Niedermayer
michaelni
Sun Sep 12 15:43:45 CEST 2010
On Sun, Sep 12, 2010 at 10:00:07AM -0300, Ramiro Polla wrote:
> On Sun, Sep 12, 2010 at 7:44 AM, Michael Niedermayer <michaelni at gmx.at> wrote:
> > On Sun, Sep 12, 2010 at 12:11:20PM +0200, Michael Niedermayer wrote:
> >> On Sun, Sep 12, 2010 at 12:11:58AM -0300, Ramiro Polla wrote:
> >> > The MMX2/3dnow code in planar2x in rgb2rgb currently reads one byte
> >> > prior to the source buffer. This leads to a crash on Windows and Mac
> >> > OS X when the buffer is allocated on the beginning of a page. This
> >> > should also be a problem on Linux but I haven't seen many crashes
> >> > because of overreading...
> >>
> >> the code looks buggy
> >> the first pixel should be [0] not [-1] that can be achived by
> >> moving the reading code of it to the end of the loop and constructing
> >> the contents of the first mm4 outside the loop
> >
> > after a second look i see that the C code overrides the first pixel and thus
> > the output should not be affected, still my suggestion though seems nicer than
> > requireing all buffers to have a byte allocated before them
>
> Thanks for the suggestion. Patch attached. No speed difference measured.
> rgb2rgb_template.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
> 9c5b0f0bc55c99bcfbda486bff43d26c34cb96f5 planar2x_avoid_overread_2.diff
> Index: rgb2rgb_template.c
> ===================================================================
> --- rgb2rgb_template.c (revision 32166)
> +++ rgb2rgb_template.c (working copy)
> @@ -1773,12 +1773,13 @@ static inline void RENAME(planar2x)(const uint8_t
> const x86_reg mmxSize= srcWidth&~15;
> __asm__ volatile(
> "mov %4, %%"REG_a" \n\t"
> + "movq (%0, %%"REG_a"), %%mm4 \n\t"
> + "psllq $8, %%mm4 \n\t"
the first value is then 0 which would lead to a darker border pixel
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
No snowflake in an avalanche ever feels responsible. -- Voltaire
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100912/627e7e77/attachment.pgp>
More information about the ffmpeg-devel
mailing list