[FFmpeg-cvslog] r18930 - trunk/libavcodec/pngdec.c

vitor subversion
Sun May 24 14:44:54 CEST 2009


Author: vitor
Date: Sun May 24 14:44:54 2009
New Revision: 18930

Log:
Fix unaligned dsputil call.

Should fix FATE corepng test on Solaris/Sparc.

Modified:
   trunk/libavcodec/pngdec.c

Modified: trunk/libavcodec/pngdec.c
==============================================================================
--- trunk/libavcodec/pngdec.c	Sun May 24 12:26:41 2009	(r18929)
+++ trunk/libavcodec/pngdec.c	Sun May 24 14:44:54 2009	(r18930)
@@ -387,6 +387,7 @@ static int decode_frame(AVCodecContext *
     PNGDecContext * const s = avctx->priv_data;
     AVFrame *picture = data;
     AVFrame *p;
+    uint8_t *crow_buf_base = NULL;
     uint32_t tag, length;
     int ret, crc;
 
@@ -527,9 +528,12 @@ static int decode_frame(AVCodecContext *
                         goto fail;
                 }
                 /* compressed row */
-                s->crow_buf = av_malloc(s->row_size + 1);
-                if (!s->crow_buf)
+                crow_buf_base = av_malloc(s->row_size + 16);
+                if (!crow_buf_base)
                     goto fail;
+
+                /* we want crow_buf+1 to be 16-byte aligned */
+                s->crow_buf = crow_buf_base + 15;
                 s->zstream.avail_out = s->crow_size;
                 s->zstream.next_out = s->crow_buf;
             }
@@ -612,7 +616,8 @@ static int decode_frame(AVCodecContext *
     ret = s->bytestream - s->bytestream_start;
  the_end:
     inflateEnd(&s->zstream);
-    av_freep(&s->crow_buf);
+    av_free(crow_buf_base);
+    s->crow_buf = NULL;
     av_freep(&s->last_row);
     av_freep(&s->tmp_row);
     return ret;



More information about the ffmpeg-cvslog mailing list