]> git.sesse.net Git - vlc/commitdiff
Fixed potential unaligned access in vaapi/dxva2 picture copy.
authorLaurent Aimar <fenrir@videolan.org>
Sat, 12 Jun 2010 23:25:43 +0000 (01:25 +0200)
committerLaurent Aimar <fenrir@videolan.org>
Sat, 12 Jun 2010 23:25:43 +0000 (01:25 +0200)
It (probably) happens only when the video is non mod 16, or non mod 32
with YV12 hardware surface.

modules/codec/avcodec/copy.c

index 4375c971a577dd4f1ef832fce1fef543f6439283..a7ee432527dd8639b07d406f42cc65afa50e71fe 100644 (file)
@@ -63,7 +63,6 @@
  */
 static void CopyFromUswc(uint8_t *dst, size_t dst_pitch,
                          const uint8_t *src, size_t src_pitch,
-                         unsigned unaligned,
                          unsigned width, unsigned height,
                          unsigned cpu)
 {
@@ -71,6 +70,7 @@ static void CopyFromUswc(uint8_t *dst, size_t dst_pitch,
 
     ASM_SSE2(cpu, "mfence");
     for (unsigned y = 0; y < height; y++) {
+        const unsigned unaligned = (intptr_t)src & 0x0f;
         unsigned x;
 
         for (x = 0; x < unaligned; x++)
@@ -237,13 +237,11 @@ static void CopyPlane(uint8_t *dst, size_t dst_pitch, const uint8_t *src, size_t
     assert(hstep > 0);
 
     for (unsigned y = 0; y < height; y += hstep) {
-        const unsigned unaligned = (intptr_t)src & 0x0f;
         const unsigned hblock =  __MIN(hstep, height - y);
 
         /* Copy a bunch of line into our cache */
         CopyFromUswc(cache, w16,
                      src, src_pitch,
-                     unaligned,
                      width, hblock, cpu);
 
         /* Copy from our cache to the destination */
@@ -270,13 +268,11 @@ static void SplitPlanes(uint8_t *dstu, size_t dstu_pitch,
     assert(hstep > 0);
 
     for (unsigned y = 0; y < height; y += hstep) {
-        const unsigned unaligned = (intptr_t)src & 0x0f;
         const unsigned hblock =  __MIN(hstep, height - y);
 
         /* Copy a bunch of line into our cache */
         CopyFromUswc(cache, w2_16,
                      src, src_pitch,
-                     unaligned,
                      2*width, hblock, cpu);
 
         /* Copy from our cache to the destination */